9

注:これは古い質問であり、対応する古い賛成の回答は関連性がない可能性があります-ビルドバリアント(別名アプリフレーバー)に関する新しい回答を参照してください。

マーケットプレイスへの公開について質問があります。

会社Xは、会社AとBに同様のサービスを提供しており、AとBの両方が市場にアプリを求めています。X社は、1つのアプリだけを作成し、コンパイル時に適切なロゴ、構成設定、言語文字列を使用してそれらを区別したいと考えています。ただし、公開に関しては、アプリのアプリパッケージ名は同じです(共有コードベースを使用)。アプリは維持され、

したがって、単一のコードベースを維持したい場合、ここでのベストプラクティスは何ですか?

4

7 に答える 7

8

私の知る限り、2 つのアプリを同じパッケージ名でマーケットに出すことはできません。共有コード、レイアウト、ドローアブルなどのコピーと貼り付けを避けるために、これらのリソースをライブラリ プロジェクトに配置し、言及したアプリ A と B からこのプロジェクトを参照し、これらのアプリで変更したい値をオーバーライドすることをお勧めします。 .

ライブラリ プロジェクトの詳細については、公式ドキュメントを参照してください。

于 2010-12-22T09:54:29.347 に答える
4

このブログ投稿blog.javia.org/android-package-name/を参照してください。

[編集] このリンクが切れた場合の情報の損失を避けるために: アプリケーション パッケージ定義と Java パッケージ定義の違いについての投稿です。ソースの Java パッケージに触れることなく、(マニフェスト内の) アプリケーション パッケージを変更することが可能です。[/編集]

于 2010-12-22T08:43:34.283 に答える
2

ヨハンの答えは正しいです。私の会社では、新しいリソースを適用するだけでなく、カスタムパッケージ名を作成し、適切なXMLファイルにパッチを適用することで、1つの「ベース」アプリケーションからアプリケーションの「ブランド」を作成する小さなスクリプトを作成しました。

于 2010-12-22T12:34:43.087 に答える
1

私はReflogが言ったことに同意します。私の会社は、antスクリプトを使用して各ブランドのパッケージ名を変更し、必要に応じてリソースを置き換えました。デフォルトの動作を念頭に置いてベースアプリを作成し、dpiサイズが異なる複数のドローアブルフォルダー(「drawable」、「drawable-hdpi」)のように、ベースとは異なるファイルのみを含む追加のブランドごとにフォルダーを作成しました。 ..)。その他の変更には、各ブランドの文字列ファイルを適切な色と法的なテキストに変更することが含まれていました。

ローカリゼーションスタイルで名前を付けることで(たとえば、「drawable-en-rAA-hdpi」、「layout-en-rBB」...)、「カスタムロケール」アプリを開くことで、複数のエミュレーターでこれをすばやくテストできました。各エミュレータで、必要に応じてロケールを「en_AA」、「en_BB」に設定します。ベースAVDの複数のコピーを保存することで、それらの設定を保存できたため、最終的なブランドをすべてテストするためにエミュレーター内で切り替える必要がありませんでした。

このアプローチの注意点の1つは、このエミュレートされたバージョンのアプリには.apk内のすべてのファイルが含まれ、antスクリプトは重複を取り除きます。また、この「完全な」.apkはデバイスにインストールされますが、ブランドロケールと一致するようにデバイスのロケールを設定できない限り、デフォルトの動作のみが表示されます。(カスタムロケールは私の物理デバイスのいずれにもインストールされていません。)これは、既存の名前付きロケール(en_AU、en_CA、en_GB)を意図的に使用する場合はうまく機能しますが、カスタム名(en_B1、en_XX)では問題になる可能性があります。

于 2012-07-18T18:35:08.647 に答える
1

私はパーティーに少し遅れていることを知っていますが、次の方法でこれを行うことができます:

1) 行を追加して project.properties を変更しますmanifestmerger.enabled=true

2) マニフェストでパッケージ名を変更します。

3)リソース、ドローアブル、文字列などを更新/変更します。

4) マスター プロジェクトをライブラリとしてマークし、その依存関係をホワイト ラベル プロジェクトに設定します。出来上がり、ホワイトラベル!

于 2015-03-24T18:38:29.627 に答える
1

必要なのは Build Variants (別名 App Flavors) です。

ここで読むことができますhttps://developer.android.com/studio/build/build-variants.html

つまり、これにより、コードとリソースの一部を共有するアプリのさまざまなバリアントを作成できますが、独自の置換も行うことができます。バリアントごとに異なるパッケージ名/ID を指定できます (ロゴ、色、スプラッシュ スクリーン、さらには Java コードなど)。

defaultConfig {
    applicationId "com.example.example"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0.0"
}

productFlavors {
    variantone {
            applicationId 'com.company1.example'
    }
    varianttwo {
            applicationId 'com.company2.example'
    }
}

代替リソースまたはソース コードを配置できるバリアントの名前でリソース フォルダーを作成できます。例えば、src/variantone/res

Android Studio でビルド バリアントを切り替えても、ファイルは変更されません (「出力」を選択するだけです)。必要なすべてのバリアントの APK を同時にビルドできます。Build/Generate signed APK のウィザードを使用します。

PSデバッグビルドに別のパッケージ名を付ける方法は次のとおりです。

buildTypes {
    release {
    }
    debug {
        applicationIdSuffix '.debug'
        versionNameSuffix '.debug'
    }
}
于 2017-08-16T08:07:52.803 に答える