0

我有一个我找不到解决方案的问题。我正在开发两个不同的 Android 应用程序,它们是一个更大项目的一部分。它们的共同点是相同的包名。

所以我的清单对于每个项目都是这样的:

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

两个应用程序都运行良好,但是当我调试应用程序 1 时,它会覆盖设备上的应用程序 2。然后,当我尝试调试 App 2 时,我收到此错误:

New package not yet registered with the system. Waiting 3 seconds before next attempt.
ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.test/.RegistrationActivity }
ActivityManager: Error type 3
ActivityManager: Error: Activity class {com.test/com.test.RegistrationActivity} does not exist.

RegistrationAcitvity应用程序启动时Activity我在哪里启动。

我发现如果我清理App 2,它会正确安装和启动。但是,完成此操作后,App 1 将不再显示在设备上。奇怪的是,我总是能够从 Eclipse 启动 App 1,但这样做之后,我又回到了上面的错误,这可以再次通过App 2 上的clean来修复。

另一个可能与此有关也可能无关的奇怪事情是,每次我启动 App 1 时,Eclipse 都会自动选择我插入的设备。但是,当我启动 App 2 时,Eclipse总是提示我选择一个装置。是的,调试配置中的部署目标选项设置为自动——我不确定这是否相关。

任何帮助表示赞赏!

4

1 回答 1

1

Android 包的包名必须是唯一的。

应用程序的完整 Java 语言样式的包名称。名称应该是唯一的。名称可以包含大写或小写字母(“A”到“Z”)、数字和下划线(“_”)。但是,单个包名称部分只能以字母开头。

为避免与其他开发人员发生冲突,您应该使用 Internet 域所有权作为您的包名称的基础(相反)。例如,Google 发布的应用程序以 com.google 开头。发布应用程序时,您也不应该使用 com.example 命名空间。

包名称用作应用程序的唯一标识符。它也是应用程序进程的默认名称(参见元素的 process 属性)和活动的默认任务亲和性(参见元素的 taskAffinity 属性)。

来源

于 2011-07-28T19:29:11.567 回答