2012-11-02 45 views
4

我有一个android项目,我需要创建多个apks。每个apk之间的唯一区别是包名(例如com.my.package.name)和应用程序字符串名,以便我可以在一台设备上安装该应用程序的多个实例。有没有更好的方法来做到这一点?我想过创建一个图书馆项目,但我认为这样做可能更简单。如何从一个项目创建多个apks?

回答

0

我实际使用apktool反编译APK,然后编辑使用一些Perl脚本的smali文件更改软件包名称。

+0

嗨!我想知道我应该编辑哪些文件,如果我想从相同的源码(测试版)制作不同的APK。我不能重命名包名,因为我使用了guice,它变得疯狂:\ – Karoly

0

您无法以编程方式更改包名称。所以唯一的解决方案是手动更改并创建apk

1

库项目是这样做的正确方法。您创建并处理库项目并为每个版本创建一个项目,这取决于库项目。请记住,您需要为每个项目准备一个正确的Androidmanifest。

+0

所以,如果我做的库项目的Ant构建它自动生成APK为其他依赖项目? – squistbe

+0

您可以为所有项目创建单个ant构建,但我不知道可能会自动为您执行此“反向依赖构建”的工具。然而,这些项目的构建会非常相似,所以这不会造成很多额外的工作。 – stoilkov

+0

对于每个项目都有正确的Androidmanifest,你的意思是什么? – squistbe

0

要改变,你可以做到这一点的包名:

你需要复制的项目。右键单击其中一个,选择“Android工具 - >重命名应用程序包”

希望得到这个帮助。

+0

我已经在eclipse中完成了这项工作。我宁愿做一些事情来自动化它,而不是改变包名30次不同的时间,然后建立另一个apk。 – squistbe

1

你可以在app级别的gradle中使用productFlavors。

flavorDimensions "tier" 
    productFlavors { 

     dev 
       { 
        dimension "tier" 
        buildConfigField "String", "URL", "\"http://glapp/demo.php\"" 
        buildConfigField "boolean", "ENABLE_DEBUG", "false" 
        versionName = android.defaultConfig.versionName + " dev" 
        applicationId = "com.abc.glnewapp.dev" 
        resValue "string", "app_name", "GL Demo" 
       } 
     prod 
       { 
        dimension "tier" 
        buildConfigField "String", "URL", "\"http://glapp/live.php\"" 
        buildConfigField "boolean", "ENABLE_DEBUG", "false" 
        applicationId = "com.abc.glnewapp.prod" 
        resValue "string", "app_name", "GL Live" 
       } 

    } 

然后选择构建变量建立APK按照为变体光盘 你可以把你想要的许多面粉(不同的APK)。

enter image description here

您可以通过src目录下falour名称的文件夹添加相同的资源结构发生变化的应用程序图标和其他可绘制。此外,如果你找到相关的谷歌JSON任何问题,那么就在SRC-> productflavour

复制谷歌JSON文件欲了解更多信息请访问at