3

私は、ほとんどの理論コードを共有する 2 つの Android アプリを開発しています (Basic 版と Pro 版のようなものです)。

Pro エディションから始めて、com.example.proapp のようなパッケージ名を付けました。

Basic エディションの場合、git で Pro エディションのブランチを作成し、Eclipse ワークスペースのコピーを作成しました。Basic ブランチをアクティブにして、Eclipse で Basic ワークスペースを開きました。

  • に変更app_nameされましたstrings.xml
  • のパッケージ名を変更しましたAndroidManifest.xml。(android:titleアプリケーションとそのメイン アクティビティの両方の属性が を指し@string/app_nameます。)
  • Refactor を使用して、Java パッケージ名を からcom.example.proに変更しましたcom.example.basic
  • アプリのアイコンを置き換えました。

これで、アプリを起動すると、すべて問題なく表示されます。新しいタイトルとアイコンがあります。

ただし、Android で [アプリの管理] に移動すると、Basic アプリが Pro アプリのアイコンとタイトル文字列と共に表示されます。(両方をインストールすると、Pro アプリの 2 つのエントリが表示されます。そのうちの 1 つをタップした後でのみ、パッケージ名を見てどちらがどれであるかがわかります。)

ここで何が問題なのですか?Basic アプリを適切な名前と適切なアイコンで表示するにはどうすればよいですか?

更新:「基本」ブランチから 2 つ目の git リポジトリを作成して、コードを新しい Eclipse ワークスペースにインポートしてみました。アプリの両方のフレーバーを携帯電話からアンインストールし、新しいビルドをドロップしました。動作は同じです。ランチャーとアクション バーには正しいアイコンとアプリのタイトルが表示されますが、アプリの管理には「Pro」アイコンとタイトルが表示されます。

この「アンデッド」のアイコンとタイトルはどこから来たのですか? これで、Eclipse ワークスペースを除外でき、作業コピー内のビルドの破片を除外できます。

Android は、インストールされたアプリ データのキャッシュをアンインストール後も保持し、そこからアプリ データを復活させているようです。しかし、それは単なる推測です...誰かがこれに光を当てることができますか?

また、なぜ Android は 2 つの apk が同じアプリであると認識しているのでしょうか? パッケージ名以外に、APK に内部識別子はありますか?

更新 2:今日、Manage Apps で Basic バージョン (Pro バージョンはインストールされていません) の正しい名前とアイコンを取得しましたが、最後に確認してから何も変更していません。唯一のことは、その間にアプリの管理アクティビティが強制終了され、再起動された可能性があることです。アプリの管理でバグが発生しているようですが、何が原因でしょうか?

4

2 に答える 2

1

アプリに別の名前を付けるには、android:labelonを使用する必要があると思います。<application>また、リソースの変更が表示されるように、プロジェクトをクリーンアップしてください。

于 2013-08-30T23:47:53.487 に答える
0

私はそれを手に入れたと思います。

Android プロジェクトの名前変更 - 今は起動しない を読んだ後、次のことを行いました。

  • 以前のバージョンをすべてデバイスから削除しました
  • Pro バージョンから新しいブランチを作成しました
  • コードを新しい Eclipse ワークスペースにインポートしました
  • メニューから Android Tools > Rename application package を使用してパッケージの名前を変更しました
  • srcリファクタリングを使用してJavaパッケージ名を変更
  • 基本バージョンの必要に応じて文字列とアイコンを調整
  • きれいなプロジェクト
  • ベーシック版発売
  • Eclipseを閉じてProブランチに戻しました
  • Pro ワークスペースで Eclipse を起動
  • きれいなプロジェクト
  • プロ版をリリース

そしてほら!Nexus S と VirtualBox の両方で、Manage Apps に異なる名前と異なるアイコンを持つ 2 つの異なるアプリが表示されます。

学んだ教訓:

  • アプリまたはパッケージの名前を変更するには、必ず Eclipse コマンドを使用してください。マニフェスト ファイルの文字列を変更するだけでは不十分です。どうやらEclipseは、マニフェストを更新するだけでなく、おそらくワークスペースフォルダーでいくつかの変更を加えているようです。
  • 異なるブランチの 2 つのビルド間をクリーンアップします。そうしないと、(明らかに - 私はそれを試してみました) 過去のビルドの残骸を引き継いでしまい、ブランチ間でリソースが混同され、意図したものとはまったく異なるものをビルドしてしまうことになります。
于 2013-09-02T19:42:39.003 に答える