Android 同一代码库中具有不同名称的多个应用程序

Android 同一代码库中具有不同名称的多个应用程序,android,google-play,app-config,apk,application-settings,Android,Google Play,App Config,Apk,Application Settings,读了这篇文章,觉得有同样的问题- 我已经创建了一个应用程序testApp,其中包含主题,启动屏幕,徽标,图表,规则,状态和/或事件 现在,我想从同一个代码库中获得不同的应用程序(testApp_USA,testApp_Canada,testApp_Australia),并将它们放在Google Play Store上,这样,如果用户下载应用程序,比如说,testApp_USA,那么只有该地区的特定项目才会像美国的闪屏一样显示出来,美国标志等等 因此,我想根据国家/地区配置多个应用程序,然后根据用

读了这篇文章,觉得有同样的问题-

我已经创建了一个应用程序
testApp
,其中包含
主题
启动屏幕
徽标
图表
规则
状态
和/或
事件

现在,我想从同一个代码库中获得不同的应用程序(
testApp_USA
testApp_Canada
testApp_Australia
),并将它们放在Google Play Store上,这样,如果用户下载应用程序,比如说,testApp_USA,那么只有该地区的特定项目才会像美国的闪屏一样显示出来,美国标志等等

因此,我想根据国家/地区配置多个应用程序,然后根据用户下载的应用程序将项目设置为默认值

目前,我有一个适用于所有地区的单一应用程序,我正在施加多个条件以根据地区区分或更改项目

例如:

(在许多Java文件中,我使用)

(类似地,在许多Java文件中,我使用了)

这只是整个代码中许多重复项中的一项。综上所述,这将是更多

应该有更好的方法在android中创建具有不同名称和设置的多个应用程序

我知道,
iOS
允许我轻松更改应用程序名称和配置文件,以便创建多个应用程序。但我不知道这在Android代码上是不是很容易做到

我的问题:

是否可以在android中使用相同的源代码创建具有不同项目设置的不同应用程序,并将其发布到Google Play Store?如果,如何设置该配置

更新:

阅读这篇文章-

然后我想到了同样的想法-

1) 获取某个字符串变量,该变量保存有关要创建的应用程序类型的值

public static final String app_Name = "testApp_CANADA" ;
2) 有多个
AndroidManifest.xml
文件,用于需要为其创建.apk的多个应用程序

3) 为每个清单创建相应的启动程序活动

但是,如何在一个应用程序中拥有多个
AndroidManifest.xml
文件呢

更新:

我的第一个
AndroidManifest.xml
像往常一样位于主项目文件夹(应用程序根文件夹)中。考虑< <代码> TestAppUSA/<代码> < /P> 我的第二个
AndroidManifest.xml
位于主项目下的单独的包中。请考虑< <代码> TestAppSCANADA./COD> < /P> 两个
AndroidManifest.xml
都有不同的启动程序活动,并定义了相应的启动屏幕和图标。两个包的名称都不同,因此它们将根据需要创建不同的.apk文件

现在,如果我的主应用程序具有以下设置,如何在
testApp_USA
/
testApp_CANADA
之间切换代码:

public static final String app_Name = "testApp_CANADA" ;

更清楚地

如何根据app_Name的值调用特定的
AndroidManifest.xml


根据我目前的设置,只会始终调用第一个
AndroidManifest.xml

从公共代码库中创建多个应用程序的方法是将公共代码作为库项目,并让每个应用程序使用库项目(请参阅)。 每个项目都可以覆盖strings.xml,公共come可以检查包id


在您的情况下,这似乎违反了Google Play政策(cookie cutter apps),因此最好创建一个应用程序,让用户选择一个国家。

为此,您必须使用应用程序本地化概念。为此,你必须创造不同的资源,耐用品。假设你想在日本运行你的应用程序,你必须创建像“res/drawable-ja”这样的可绘制文件夹。这与创建不同的布局以支持平板电脑和小型设备相同。 以下是参考链接:
我不确定你到底想要什么。但在我看来,你可以获得地理位置,在那里你可以找到你的应用程序当前正在运行的地方,或者更容易地从区域设置中获得位置,一旦你找到区域设置或地理位置,你就可以根据它来导航源

我在把这个项目推广到不同的市场时遇到了类似的问题——谷歌游戏、三星、亚马逊。所有代码库都是相同的,不同之处仅在于计费代码

我找到的最佳解决方案是为每个市场创建单独的项目,并将通用代码推送到库项目中

更详细地说,您需要在主项目中保留公共代码,使其成为库项目,并为库项目和子项目启用清单合并。 将以下行添加到主项目的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-project properties->Android中)附加到所有子项目。 主项目清单不应该包含任何启动程序活动,它将被忽略,appWidget xml和配置活动也是如此,如果您有一些

在子项目中,您可以像普通Java库一样,通过扩展或仅使用所需的类来配置任何需要的内容并使用主代码。此外,您可以像在子项目中一样使用主要项目活动、服务、广播接收器等,而无需复制子项目清单。 在所有配置之后,您可以像往常一样为所需国家/地区构建所需项目,并且您可以根据需要为不同的国家/地区创建不同的apk

下面是清单合并的更详细描述

注意,此功能是在ADT版本20预览3中添加的


希望这有帮助。

我也有同样的问题。也许你有
android.library=true
manifestmerger.enabled=true
android.library.reference.1=../testApp //absolute or relative path to your main project
manifestmerger.enabled=true