0

解決策が見つからない問題があります。大規模なプロジェクトの一部である 2 つの異なる 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

App 2をクリーンアップすると、正しくインストールおよび起動されることがわかりました。ただし、これが完了すると、アプリ 1 はデバイスに表示されなくなります。奇妙なことに、私はいつでも Eclipse からアプリ 1 を起動できます

これと関係があるかもしれないし関係ないかもしれないもう 1 つの奇妙な点は、App 1 を起動するたびに、プラグインしたデバイスを Eclipse が自動的に選択するという事実です。ただし、App 2 を起動すると、Eclipseは常に選択を求めてきますデバイス。はい、デバッグ構成の展開ターゲットオプションは自動に設定されています。これが関連しているかどうかはわかりません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

Android パッケージのパッケージ名は一意である必要があります。

アプリケーションの完全な Java 言語スタイルのパッケージ名。名前は一意である必要があります。名前には、大文字または小文字 (「A」から「Z」)、数字、およびアンダースコアー (「_」) を含めることができます。ただし、個々のパッケージ名の部分は文字でのみ開始できます。

他の開発者との競合を避けるために、インターネット ドメインの所有権をパッケージ名のベースとして (逆に) 使用する必要があります。たとえば、Google によって公開されたアプリケーションは com.google で始まります。また、アプリケーションを公開するときに com.example 名前空間を使用しないでください。

パッケージ名は、アプリケーションの一意の識別子として機能します。これは、アプリケーション プロセスの既定の名前 (要素の process process 属性を参照) およびアクティビティの既定のタスク アフィニティ (要素の taskAffinity 属性を参照) でもあります。

ソース

于 2011-07-28T19:29:11.567 に答える