Отладка нескольких приложений

У меня есть проблема, для которой я не могу найти решение. Я разрабатываю два разных приложения для Android, которые являются частью более крупного проекта. Единственное, что у них общего, это одно и то же имя пакета.

Итак, мой манифест для каждого проекта выглядит так:

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

Оба приложения работают нормально, но когда я отлаживаю приложение 1, оно перезаписывает приложение 2 на устройстве. Затем, когда я пытаюсь отладить приложение 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, которое я запускаю при запуске приложения.

Я обнаружил, что если я очищаю приложение 2, оно устанавливается и запускается правильно. Однако, когда это будет сделано, приложение 1 больше не будет отображаться на устройстве. Как ни странно, я всегда могу запустить приложение 1 из Eclipse, но после этого я возвращаюсь к указанной выше ошибке, которую снова можно исправить с помощью clean в приложении 2.

Другая странная вещь, которая может иметь или не иметь к этому какое-то отношение, заключается в том, что каждый раз, когда я запускаю приложение 1, Eclipse автоматически выбирает подключенное устройство. Однако, когда я запускаю приложение 2, Eclipse всегда< /em> предлагает мне выбрать устройство. И да, параметр цель развертывания в конфигурации отладки установлен на автоматический — я не уверен, связано это или нет.

Любая помощь приветствуется!


person Tanner Perrien    schedule 28.07.2011    source источник


Ответы (1)


Имя пакета для пакетов Android должно быть уникальным.

Полное имя пакета в стиле языка Java для приложения. Имя должно быть уникальным. Имя может содержать буквы верхнего или нижнего регистра (от «A» до «Z»), цифры и знаки подчеркивания («_»). Однако отдельные части имени пакета могут начинаться только с букв.

Чтобы избежать конфликтов с другими разработчиками, вы должны использовать право собственности на интернет-домен в качестве основы для имен ваших пакетов (наоборот). Например, приложения, опубликованные Google, начинаются с com.google. Вы также никогда не должны использовать пространство имен com.example при публикации своих приложений.

Имя пакета служит уникальным идентификатором приложения. Это также имя по умолчанию для процесса приложения (см. атрибут процесса элемента) и привязка задачи по умолчанию для действия (см. атрибут taskAffinity элемента).

источник

person Ribose    schedule 28.07.2011
comment
Я думал, что читал, что каждое приложение находится в своей песочнице. Думаю, я исходил из того, что имена пакетов были приватными для приложения. Я использовал com.test в своем примере для простоты. Спасибо за вашу помощь! - person Tanner Perrien; 28.07.2011