Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从一个项目创建多个APK?_Android_Apk - Fatal编程技术网

Android 如何从一个项目创建多个APK?

Android 如何从一个项目创建多个APK?,android,apk,Android,Apk,我有一个android项目,需要创建多个APK。每个apk之间的唯一区别是程序包名称(例如com.my.package.name)和应用程序字符串名称,这样我就可以在一台设备上安装多个应用程序实例。有更好的方法吗?我曾考虑过创建一个库项目,但我认为可能有一种更简单的方法可以做到这一点。您不能通过编程方式更改包名。因此,唯一的解决方案是手动更改它并创建apklibrary项目是正确的方法。创建并处理库项目,每个版本都有一个项目,这取决于库项目。请记住,每个项目都需要正确的Androidmanife

我有一个android项目,需要创建多个APK。每个apk之间的唯一区别是程序包名称(例如com.my.package.name)和应用程序字符串名称,这样我就可以在一台设备上安装多个应用程序实例。有更好的方法吗?我曾考虑过创建一个库项目,但我认为可能有一种更简单的方法可以做到这一点。

您不能通过编程方式更改包名。因此,唯一的解决方案是手动更改它并创建apklibrary项目是正确的方法。创建并处理库项目,每个版本都有一个项目,这取决于库项目。请记住,每个项目都需要正确的Androidmanifest。

要更改包名,可以执行以下操作:

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


希望对您有所帮助。

您可以试用新的Android构建系统。这里有一些链接

您可以自定义以下属性:

  • 明斯克版本
  • targetSdkVersion
  • 版本代码
  • 版本名
  • 包名称(覆盖清单中的值)
  • 等等

我实际上使用了反编译apk,然后使用一些Perl脚本编辑smali文件以更改包名。

您可以将主代码放入库中,并构建多个生成多个apk的同级项目:

我对此进行了测试,结果比我最初想象的要简单得多:

您可以在应用程序级别的渐变中使用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"
                }

    } 
然后选择build variant以根据as variant构建apk 你可以根据需要放很多面粉(不同的APK)

您可以通过在src目录下的falour name文件夹中添加相同的res结构来更改应用程序图标和其他Drawable。此外,如果您发现任何与google json相关的问题,只需在src->productFlavor中复制google json文件即可


有关更多信息,请访问

我已经在eclipse中完成了这项工作。我宁愿做一些自动化的事情,而不是改变包名30次,然后构建另一个apk。因此,如果我在库项目上进行Ant构建,它会自动为其他依赖项目生成apk吗?您可以为所有项目创建一个Ant构建,但我不知道有什么工具可以做到这一点自动为您“反向依赖项构建”。但是,项目的构建几乎完全相同,因此这不会产生太多额外的工作。为每个项目提供正确的Androidmanifest是什么意思?嗯,您可能认为这是合乎逻辑的(在我看来也是合乎逻辑的)项目从其库项目的清单文件中继承权限、活动、服务、接收者等定义,但事实并非如此。这意味着您必须具有“完整”权限为每个项目定义的清单文件,如果需要进行更改,应在每个文件中进行更改。另外,请注意活动、服务的限定名称,因为清单文件的默认样式是将它们放在包项目包中(以“.”开头)。您好!我想知道,如果我想从同一个源代码(测试版)生成不同的APK,我应该编辑哪些文件。我无法重命名packagename,因为我使用guice,它变得很疯狂:\