来自单个源代码的多个 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 文件 的相关文章

  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 在 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