来自单个源代码的多个 Android 应用程序包 .apk 文件

2024-02-12

我想要一个 Android 构建系统程序、命令行或 Eclipse,从单个源代码库生成多个 .apk 文件。造成这种情况的一些常见原因 - 针对具有不同要求的市场提供特定版本或免费和付费版本。

这个问题是NOT ABOUT:

  • 将共享代码打包成Android 库 http://developer.android.com/guide/developing/projects/projects-eclipse.html#SettingUpLibraryProject或放入外部 Java jar 中

  • 生成调试 vs. 生成调试签名发布.apk http://developer.android.com/guide/publishing/app-signing.html

Google says http://developer.android.com/guide/market/publishing/multiple-apks.html#CreatingApks“您可能需要为您打算发布的每个 APK 创建单独的 Android 项目,以便您可以分别适当地开发它们。您只需复制现有项目并为其指定一个新名称即可做到这一点。”然后他们善意地建议使用图书馆,我明白。然后,他们顺便提到了我真正想要的:“一个可以根据构建配置输出不同资源的构建系统”

  • 我知道要完成条件编译JAVA人们可以关闭“公共静态最终”变量。有一个调整的例子 http://groups.google.com/group/android-developers/browse_thread/thread/f2c8b35edf131f76build.xml 中有这样的值。有没有更完整的 Android Ant 构建配置示例或现在执行此操作的 OSS 项目的链接?顺便说一句,build.xml 是自动生成的,但我见过有人破解它,那么它是如何工作的呢?

  • 在 Manifest.xml 中将包名称声明为 package="com.example.appname" 时,如果需要发出多个改变该名称的 .apk,是否需要为每个应用创建一个单独的项目?


我从一个源树生成 2 个不同的 APK(演示版和生产版),并进行 3 个小修改:

1)我有public static final DEMO=true; //false; in my Application类并根据该值我用来在演示/生产功能之间切换代码

2)有2个主要活动,例如:

package mypackage;
public class MyProduction extends Activity 
{
    //blah-blah
}

package mypackage.demo;
public class MyDemoActivity extends mypackage.MyProductionActivity
{
    //blah-blah
}

3)最后2分开AndroidManifest.xml根据演示/生产切换指向不同启动器活动的文件

我手动在 2 个 APK 之间切换,但编写小 ANT 任务在它们之间自动切换并不困难

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自单个源代码的多个 Android 应用程序包 .apk 文件 的相关文章

  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 从ndk中的不同线程调用java方法

    我正在尝试使用 android 的 NDK 从 C 中的独立线程调用 java 静态方法 到目前为止我已经 JNIEnv env AttachJava jclass cls2 env gt FindClass com actvt showd
  • Android Studio 模拟器无法加载 Windows 10

    我在 Windows 10 上全新安装了 android studio 其中包含 android api 22 的所有软件包 当我运行模拟器时 我收到以下消息 C Users admin AppData Local Android sdk
  • Android 模拟器在 Windows 7 64 位上崩溃

    我是一名 Android 开发新手 到目前为止只在我的 Android 手机上运行了 Hello World 当我尝试在模拟器模式下运行我的应用程序时 我看到带有键盘和接听 挂断按钮的模拟器窗口 但在我的应用程序运行之前我收到一个窗口对话框
  • 检测Android N版本代码

    是否可以检测用户是否运行 Android N 我有一台装有 Android N 开发者预览版的 Nexus 6 如果我尝试获取构建版本Build VERSION SDK INT 它返回 23 等于 Android Marshmallow Q
  • 从 Android 函数更新 Textview

    有人可以告诉我如何从函数更新 Android Textview 控件吗 我在互联网上进行了深入搜索 看到很多人都问同样的问题 我测试了线程但无法工作 有人有一个简单的工作示例吗 例如 调用一个函数 在循环中运行多次 并且该函数在 TextV
  • Android 偏好设置中的“是”或“否”确认[重复]

    这个问题在这里已经有答案了 我需要在 设置 中实现 重置 选项 单击该设置后 将打开一个简单的对话框 要求确认 我看过了DialogPreference但我似乎无法在任何地方找到好的解决方案或教程 有人可以帮我吗 我是初学者 想法甚至代码都
  • Gradle 构建过程失败

    我的项目正在成功构建 突然我在 Android studio 中收到以下错误 无法找到方法 org gradle api publish maven internal publication MavenPublicationInternal
  • Ionic4 电容器 android livereload?

    是否有可能在带有 livereload 的 Android 设备上运行带有电容器的 ionic 4 应用程序 我已经找了几个小时的答案了 但没有成功 请帮忙 如果使用最新版本 ionic cli 现在有一个命令ionic capacitor
  • Google Play 服务,登录成功,但创建房间时出错

    我正在尝试 google play 服务示例 特别是 ButtonClicker2000 从 logcat 登录过程也正常 但我有另一个错误 06 01 22 43 15 478 D ButtonClicker2000 1565 Sign
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • Horizo​​ntalScrollView 将 GridView 缩小为小行

    当我将 Horizo ntalScrollView 放在 GridView 周围时 GridView 会被压缩到左侧的一个小列中 Gridview 的垂直滚动条甚至出现在左侧 Horizo ntalScrollView 的宽度设置为 fil
  • 标签栏随键盘一起上升

    这个问题之前已经发过 但是没有答案 Problem TabBar gt 2 个选项卡 选项卡一有一个Scrollview and an EddiText 标签二 其他 贴带时EditText 软键盘上升 TabBar与它一起 一个丑陋的解决
  • 如何让 Mockito 在 androidTest 中工作

    在我的测试中 我如何模拟我编写的课程 这是我的测试代码 import android support test runner AndroidJUnit4 import org junit Before import org junit Te
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 我怎样才能实现CoverFlow视图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想用点线布局实现溢出视图 目前我正在使用 polidea 封面流库 URL github https
  • 如何在捆绑中存储稀疏数组

    我有一个SparseArray
  • Google 的 Android OpenGL 教程是否教授了错误的线性代数?

    在帮助另一位用户解决有关该问题的问题后响应触摸事件 http developer android com training graphics opengl touch htmlAndroid教程 我下载了源代码 并且对我所看到的感到非常困惑
  • 如何像UCBrowser一样使用webview打开url

    我是安卓新手 我正在尝试制作一个示例应用程序来在 webview 中打开网站 问题是 网站以桌面模式打开 如何才能像UC浏览器 手机模式 一样打开网站 尝试这个 它应该有效 webview1 getSettings setJavaScrip
  • 无法 ACTION_VIEW 外部存储上的文件

    我的 Android 手机的外部存储中有一个文件 在本例中是模拟的 知道通往它的路径和 或拥有File代表它的对象 我如何使用Intent在适当的应用程序中打开它 我尝试的第一件事是 startActivity new Intent Int

随机推荐

  • 在 Mathematica 中写入文件时格式化数字

    这是一个延续this https stackoverflow com q 4943706 181759关于数字格式的问题 与我之前的相关question https stackoverflow com q 1687705 181759关于获
  • 网站上下文中的 NServiceBus Publish() 与 Send()

    我希望更好地理解为什么建议不要使用 NServiceBus 来自网站的 Publish 消息 NServiceBus 文档 http docs particular net 向下滚动约三分之二 它对于 Publish 事件和 Send 命令
  • Numpy:沿指定轴重塑数组

    我有以下数组 x np arange 24 reshape 2 3 2 2 array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 我想将其重塑为 3 4 2
  • Java8 中的 GroovyShell:内存泄漏/重复的类 [提供源代码 + 负载测试]

    我们有一个由 GroovyShell Groovy 脚本引起的内存泄漏 请参阅最后的 GroovyEvaluator 代码 主要问题是 从 MAT 分析器复制粘贴 类 java beans ThreadGroupContext 由 占用 8
  • 使用 sklearn 进行网格搜索的显式(预定义)验证集

    我有一个数据集 之前已分为 3 组 训练 验证和测试 这些集合必须按给定的方式使用 以便比较不同算法的性能 我现在想使用验证集优化 SVM 的参数 但是 我找不到如何将验证集显式输入到sklearn grid search GridSear
  • 防止 require(...) 在父目录中查找模块

    我的 Node 项目的根目录所在的目录本身就是另一个 Node 项目的根目录 所以两个文件夹都包含package json and node modules 问题是 在内部项目中 有时我require该项目中未安装模块 但 Node 只是默
  • NHibernate 过滤子集合延迟加载,即使指定了急切获取

    我试图找出为什么即使急切加载集合并且生成的 SQL 是正确的 也会在没有过滤的情况下返回子集合 类的流畅映射是 public class OptionIdentifierMap ClassMap
  • jstree问题

    我使用 XML 作为 JSTree 树的数据源 但我找不到任何示例 您可以在 XML 中将节点设置为超链接 或者在任何地方使用自己的图标设置自己的节点类型等 有人这样做过吗 有例子吗 我想你正在寻找jsTree 类型插件文档 http ww
  • SQL Server group by 吸收 null 和空值

    我有这个数据 Id Name amount Comments 1 n1 421762 Hello 2 n2 421 Bye 3 n2 262 null 4 n2 5127 每个名称可能有也可能没有带有空注释或空注释的额外行 如何按名称和总和
  • 如何使用 Cloudbees Jenkins 构建执行繁重任务

    我正在尝试在 Cloudbees 上构建并运行 Jenkins 我已经成功安装了 NodeJs 并从 BitBucket 存储库中提取了源代码 我正在尝试运行我的 grunt 任务来在部署之前缩小并连接我的 JS 和 CSS 文件 但是 即
  • 为什么 MouseEnter 和 MouseLeave 不可靠?

    根据this https stackoverflow com questions 12552809 问题 的answer https stackoverflow com questions 12552809 mousehover and m
  • Django 作为反向代理

    我的客户端 服务器应用程序主要基于特殊用途的http服务器 它以类似Ajax的方式与客户端进行通信 即 客户端 GUI 根据异步 http 请求 响应周期刷新 专用 http 服务器的可进化性是有限的 并且随着应用程序的增长 需要越来越多的
  • 虚函数和 boost 绑定奇怪的行为

    我在 Linux 下编写的一段代码中看到了一个奇怪的行为 我想分享它 看看是否有人知道其原因 我有一个基类和一个派生类 在基类中 我定义了一个虚拟方法 在派生类中 我使用相同的签名重新定义了该方法 然后我使用 boost bind 来启动一
  • Gremlin 找到最高匹配

    我计划使用图形数据库 AWS Neptune 可以使用 Gremlin 作为一种知识库进行查询 知识库将用作具有多个特征的实体的分类工具 为简单起见 我在本示例中使用几何形状来编码实体的属性 假设我想对与正方形 三角形和圆形相关的点进行分类
  • 什么是console.log?

    有什么用console log 请通过代码示例解释如何在 JavaScript 中使用它 它不是 jQuery 功能 而是用于调试目的的功能 例如 当发生某些情况时 您可以将某些内容记录到控制台 例如 someButton click fu
  • App Engine 上的前端实例小时数是如何计算的?

    我构建了一个简单的在线订购应用程序 它可能每周处理 25 小时 其中大部分是在周一和周二 查看仪表板 我看到 Billing Status Free Settings Quotas reset every 24 hours Next res
  • 访问嵌套对象时 Vue 发出警告

    我不知道为什么在访问嵌套对象时会收到 Vue 警告 user area name Vue warn 渲染错误 TypeError 无法读取未定义的属性 名称 类型错误 无法读取未定义的属性 名称 仅访问该对象没有任何警告 user name
  • ASP.NET MVC。如何使用 DisplayNameFor 创建表格标题和正文?

    如何使用获取属性显示名称DisplayNameFor 构建表头 例如 model IEnumerable
  • 如何使用App.config和System.Diagnostics动态设置日志文件?

    当我遇到一篇文章时 我正在寻找一种解决方案来为我的最新项目提供日志记录 http www daveoncsharp com 2009 09 create a logger using the trace listener in csharp
  • 来自单个源代码的多个 Android 应用程序包 .apk 文件

    我想要一个 Android 构建系统程序 命令行或 Eclipse 从单个源代码库生成多个 apk 文件 造成这种情况的一些常见原因 针对具有不同要求的市场提供特定版本或免费和付费版本 这个问题是NOT ABOUT 将共享代码打包成Andr