我创建了一个应用程序testApp,它包含主题,初始屏幕,徽标,图表,规则,状态和/或事件等项目.
现在,我需要来自相同代码库的不同应用程序(testApp_USA,testApp_Canada,testApp_Australia)并将它们放在Google Play商店中,以便在用户下载应用程序(例如testApp_USA)时,只应显示该区域的特定项目,如splash屏幕美国,美国标志等.
所以我想根据国家/地区配置多个应用程序,然后根据用户下载的应用程序将项目设置为默认值.
目前,我有一个适用于所有地区的单一申请,我正在施加多个条件来根据地区区分或更改项目.
例如:
(在许多Java文件中,我使用过)
if(rule.contains("USA")) { //Show splash screen of USA }
(同样,在许多Java文件中,我使用过)
if(rule.contains("Australia")) { //Show splash screen of Australia }
应该有更好的方法在Android中使用不同的名称和设置创建多个应用程序.
我知道,iOS允许我轻松更改应用程序名称和配置文件,以允许创建多个应用程序.但我不知道或者这对Android代码不容易.
我的问题:
是否可以使用不同的项目设置在Android中创建具有相同源代码的不同应用程序并将其发布到Google Play商店?如果是,如何设置此类配置?
更新:
阅读此帖 – multiple-android-application-package-apk-files-from-single-source-code
然后我提出了同样的想法 –
1)获取一些字符串变量,该变量包含您要创建的应用程序类型的值.
public static final String app_Name = "testApp_CANADA" ;
2)为您需要创建.apk的多个应用程序提供多个AndroidManifest.xml文件.
3)为每个清单创建相应的启动器活动.
但是,如何在一个应用程序中拥有多个AndroidManifest.xml文件?
更新:
我的第一个AndroidManifest.xml就像往常一样在主项目文件夹(应用程序根文件夹)中.考虑这个testApp_USA.
我的第二个AndroidManifest.xml位于主项目下的独立包中.考虑这个testApp_CANADA.
AndroidManifest.xml都具有不同的启动器活动,并具有相应的启动屏幕,定义了图标.包名称在两者中都有所不同,因此它们将根据要求创建不同的.apk文件.
现在,如何在我的主应用程序设置的testApp_USA / testApp_CANADA之间切换代码:
public static final String app_Name = "testApp_CANADA" ;
要么
更清楚,
如何根据app_Name的值调用特定的AndroidManifest.xml?
使用我当前的设置,始终只调用第一个AndroidManifest.xml.
解决方法
我找到的最佳解决方案是为每个市场创建单独的项目,并将公共代码推送到库项目中.
更详细地说,您需要在主项目中保留公共代码,使其成为库项目并为库和子项目启用清单合并.
将以下行添加到主项目的project.properties:
android.library=true manifestmerger.enabled=true
以及每个子项目的project.properties:
android.library.reference.1=../testApp //absolute or relative path to your main project manifestmerger.enabled=true
此外,您需要将主项目作为ADT插件中的库(在Eclipse中 – 项目属性 – > Android)附加到所有子项目.
主项目清单不应包含任何启动器活动,它将被忽略,与appWidget xml和配置活动相同,如果你有一些.
在子项目中,您可以通过扩展或仅使用所需的类作为普通Java库来配置您想要的任何内容并使用主代码.此外,您可以像在子项目中一样使用主项目活动,服务,广播接收器等,而不会重复显示子项目.
完成所有配置后,您可以像往常一样为所需的国家/地区构建所需的项目,您可以根据需要为不同的国家/地区设置不同的apk.
这里是清单合并http://www.platoevolved.com/blog/programming/android/merging-android-manifest-files/的更详细说明
希望这可以帮助.