2

第一个包是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而没有使用第二个包。如果这是问题所在。如何在清单中声明这两个包?

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

4

3 回答 3

2

我想你想要两个 app 。您可以使用允许您更改清单中的包名称的构建文件

目标

<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>
于 2015-02-10T13:38:23.797 回答
2

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

于 2012-06-11T17:20:43.450 回答
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>

希望这可以帮助。^_^

于 2012-06-11T18:12:05.910 回答