在同一个包下发布多个应用 - Android

时间:2014-01-22 16:39:33

标签: android packaging

我有一个支持不同域的应用程序。我的代码是在com.example包下开发的。我想在不同的包下发布多个应用程序,如:

  

com.example.domain1,com.example.domain2等

在清单中我定义:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.domain1"

.... 对于domain2:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.domain2"

我面临的问题是,一旦我将基本包名称从domain1更改为domain2,我需要重命名src文件夹中的所有包以及布局。我正在寻找的是保持相同的基础包装com.example并在其子域下分发不同的应用程序。

有更好的方法吗?

澄清: 更改包名称时,资源文件从com.example.R更改为com.example.domain2.R。这意味着我必须进入所有src java类和布局等,并更新生成的R文件位置。这不方便。

3 个答案:

答案 0 :(得分:1)

我最终将我的主项目标记为库,然后为每个域创建项目并链接到库。

无需使用清单或R.java文件。

感谢@ Tenfour04指出我正确的方向!

答案 1 :(得分:0)

在您的清单中,每个Activity,Service,Provider和Receiver都有name属性。默认情况下,他们使用".MainActivity"之类的快捷方式。前导.是清单顶级package名称的快捷方式。

因此,如果您不想重命名src文件夹中的所有这些包,只需在清单中键入活动,服务,提供商和接收者的显式名称,例如android:name="com.example.sharedmultiprojectdomainname.MainActivity"

答案 2 :(得分:0)

如果您使用Gradle作为构建系统,您可能希望将构建变体合并到构建中,这将解决包问题。有关详情,请参阅此Google I/O speech

希望这有帮助。