如何使用两个或更多包并在清单中声明? - android

时间:2012-06-11 17:17:48

标签: java android package manifest

第一个包是 com.first.one 和 第二个是 com.second.two

两个软件包都使用相同的xml文件..

我的问题是我的第一个包中的代码工作正常但第二个包没有..

我认为问题应该在manifest.xml中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.first.one"
    android:versionCode="1"
    android:versionName="1.0" >

因为只使用第一个包 com.first.one 而第二个包未使用。 如果这是问题。如何在清单中声明两个包?

如果这不是问题那么为什么第二个包中的代码不起作用?

3 个答案:

答案 0 :(得分:2)

这是不可能的。相反,您可以将import com.first.one.R.*;添加到第二个包中的类,以允许它们使用与第一个包相同的资源。

答案 1 :(得分:2)

具有单独包装的想法是二级包装应该补充您的应用程序。例如,如果您正在编写一个使用网站API的应用程序,您可以保留该包,例如com.websiteAPI,并根据需要通过导入来从其资源中提取:

import com.package_name_requested_here.R.*

另一个例子是专门为全局对象编写一个包,比如com.objects。

要对此进行对比,您自己的包(清单中指定的包)应包含特定于您的应用程序的所有文件。请记住,您可以设置包以包含子包。例如,如果你做了:

package="com.mystuff"

您可以通过以下方式在清单中引用您的活动:

<activity android:name=".first.one" </activity>
<activity android:name=".second.two" </activity>

希望这会有所帮助。 ^ _ ^

答案 2 :(得分:2)

我想你想拥有两款应用。您可以使用允许您更改清单中的包名称的构建文件

目标

<target name="name1_2" depends="">
        <replaceregexp file="AndroidManifest.xml" match='com.first.one' replace='com.first.second' byline="true" />
    </target>

<target name="name2_1" depends="">
        <replaceregexp file="AndroidManifest.xml" match='com.first.second' replace='com.first.one' byline="true" />
    </target>