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

Wal*_*r K 49 ant android apk

我想要一个Android构建系统过程,命令行或Eclipse,从单个源代码库生成几个.apk文件.一些常见的原因 - 具有不同要求的市场或免费和付费版本的特定版本.

这个问题不是关于:

Google 表示 "您可能需要为每个要发布的APK创建单独的Android项目,以便您可以单独进行适当的开发.您只需复制现有项目并为其命名即可." 然后他们建议使用我理解的库.然后,他们提到我确实想要的东西:"一个可以根据构建配置输出不同资源的构建系统"

  • 我知道要在JAVA中完成条件编译,可以关闭'public static final'变量.有一个在build.xml 中调整这样一个值的例子.有关这个的Android Ant构建配置的更完整示例,或者现在正在执行此操作的OSS项目的链接,请?BTW,build.xml是自动生成的,但是我看到有人乱砍它,那么它是如何工作的呢?

  • 使用在Manifest.xml中声明的包名称为package ="com.example.appname",如果需要发出多个名称不同的.apks,那么每个包含一个单独的项目吗?

Bar*_*ica 12

我正在从一个单一的源代码树生成2个不同的APK(演示和制作),并进行3次小修改:

1)我public static final DEMO=true; //false;Application课堂上,根据该值,我习惯在演示/制作功能之间切换代码

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

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

package mypackage.demo;
public class MyDemoActivity extends mypackage.MyProductionActivity
{
    //blah-blah
}
Run Code Online (Sandbox Code Playgroud)

3)最后2个单独的AndroidManifest.xml文件,根据演示/生产开关指向不同的启动器活动

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

  • 虽然这个答案在2011年可能是正确的,但它现在已经过时了.一个更好的答案是使用下面的@craned回答的**`gradle`**`产品风味'. (3认同)
  • 此外,Emmanuel在回答中引用的文章似乎是说更改清单包将导致R.java在新的(例如,demo)包中自动生成,从而丢弃所有现有的资源导入.你遇到过那个吗?如果是这样,它是如何解决的? (2认同)

Emm*_*uel 11

一种方法是维护两个独立的AndroidManifest.xml,每个配置一个.您可以手动(复制)或自动(构建脚本)在两者之间来回切换.

[编辑]这个人有一个系统来做这种事情:http://blog.elsdoerfer.name/2010/04/29/android-build-multiple-versions-of-a-project/


cra*_*ned 6

正如本网站所解释的那样,这个尖叫答案就是尖叫声 .它被正式内置到Android Studio中并受到鼓励.Gradle

太奇妙了; 我使用相同的源代码构建了3个独立的应用程序,自定义文本和图形,没有任何特殊编码.只需要一些目录和Gradle设置,我的其他帖子可以找到两者的答案.

它似乎很好地解释了所有的基础知识.为了回答您的具体问题,寻找部分Product FlavorsBuild Variants,它描述的是指定不同的口味.

正如网站所解释的那样,这个设计背后的部分目的是让它更具动态性,更容易让用基本相同的代码创建多个APK,听起来就像你正在做的那样.

我可能没有解释它最好,但该网站做得很好.