构建不同包的Android项目



我正在努力寻找为6个以上不同客户构建/打包Android应用程序的最佳方法。我可以在SVN中为所有客户使用不同的分支,但应用程序之间的唯一区别是资源文件夹中的一些值(drawables、string等)。

我写了一个ant脚本,它导入标准的Androidbuild.xml

  1. 从属性文件中读取客户名称
  2. 为每位客户完成以下操作:
    1. AndroidManifest.xml中的包名称已更改(通过挂接到-预构建目标)
    2. 自定义资源被复制到构建中的res目录中(通过挂接到-预编译目标)
    3. 包名称更改回默认值(通过挂接-编译后目标)
    4. APK被复制到一个特定的位置,命名为类似客户版本no.APK的东西

这似乎很有效,直到我刚刚写了更改包名称的部分。由于包名称的更改,R类的位置也发生了更改,这意味着当Java类从标准包中导入R类时,构建失败。

我不想有一个改变代码的构建脚本。我希望能够在对任何文件进行最小更改的情况下做到这一点。

Soo。。真正的问题是:

  1. 我的问题有什么好的/简单的解决方案吗
  2. 我处理这个问题的方式不对吗?有没有更好的方法可以轻松地将同一应用程序打包给6+不同的客户

您真的需要更改包名称吗?自动更改程序包名称是一件很痛苦的事情。话虽如此,以下是我对问题的解决方案:

我的场景是,我有一个应用程序,它被部署到30-200个不同的已签名APK文件,其中文件之间的唯一区别是一些资源(可提取项、字符串、值等)和包名称。

我通过开发作为模板项目的应用程序的通用版本来实现这一点。一旦这项工作成功并且我准备好部署,我就会调用一个bash脚本,为每个目标循环执行以下步骤:

  1. 彻底清理项目
  2. 使用sed交换res目录和包名称
  3. 建立并签署APK

这平衡了可怕的deply时间和快速发展的时间。我真的看不到比这更优雅/更强大的解决方案了。

最后一个小提示:在android清单中,使用相对的包名称,如".Application",而不是"com.mycompany.myproject.Application"。这样你只需要在一个位置更改包名称。

是否可以通过制作6个以上不同的项目来解决这个问题,这些项目包括您的主要项目。通过这种方式,您可以覆盖资源并制作不同的apk的

相关内容

  • 没有找到相关文章

最新更新