4

複数のクライアントにサービスを提供します。私たちが提供したい機能の1つは、クライアントがアプリケーション(アイコン、ロゴ、名前など)をカスタムブランド化できるようにするAndroidアプリケーションです。

ここにいくつかの規定があります。

  1. クライアントの顧客はこのアプリを使用します。
  2. 複数のクライアントの顧客である可能性がありますが、ユーザーにクライアントのリストを表示することはできません。
  3. クライアントは単一のアプリを共有できません。
  4. 機能は同じですが、アプリはクライアントごとに異なって見える必要があります

はい、私はそれをこのように構築することがPITAであることを知っていますが、私たちのクライアントは他のクライアントの顧客に彼らが私たちのクライアントでもあることを知られたくないのです。

では、開発者の健全性にできるだけ負担をかけずに、簡単にブランド化できるアプリケーションを構築するための最良の方法は何でしょうか。

4

4 に答える 4

5

アプリのバージョンごとに個別の res/ フォルダーを保持します。すべてのアイコン、ロゴ、文字列に同じ名前を付けますが、クライアントごとにコンテンツを調整し、その res フォルダーをビルドにドロップするだけで、それぞれに異なる .apk をビルドします。これに対してカスタム修飾子を機能させて単一の .apk を作成することはできないと思います - いずれにせよ、これはすべてのクライアントのカスタム画像と文字列を全員のアプリケーションにバンドルします.

于 2011-02-15T18:49:45.750 に答える
1

とにかく必要になるので、グローバルな名前変更用のスクリプトを開発することから始めます(find、xargs、およびsedでかなり簡単に実行できます)

SDK および Eclipse プラグインなど、リソースをカスタマイズするためのツールが必要です。

おそらく、Eclipse プラグインを拡張するある種のウィザードを作成できます。

または、多くの作業が必要ですが、より簡単に使用できる場合は、生成されたパッケージをビルドするために必要なコマンド ライン ツールを駆動するスタンドアロンの何かを実行できます。

于 2011-02-15T18:52:16.147 に答える
1

@Jemsが言ったことを実行するか、(アプリがサーバーと通信すると仮定して)サーバー側に「ロジック」を置くことができます。

アプリケーションを初めて実行すると、ローカルに保存されているクライアントに対応するリソースがサーバーから送信されます。

このアプローチの問題点: 初めて大量のものをダウンロードする必要があるかもしれません...

利点: どちらがサーバーであるかを示すプロパティ文字列を変更するか、サーバーにログインして送信する必要があるものを確認するだけで、レイアウトを変更して別のアプリを別のリソースでデプロイする必要がありません。

サーバー側でレイアウトの変更をサポートするかどうかは、本当に異なります。

于 2011-02-15T19:02:21.630 に答える
1

gradle を使用したビルド時のソリューションは、 http: //blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/ で説明されている productFlavors 機能で実現できます。

フレーバー (別名顧客ブランド) は、次の方法で build.gradle ファイルに定義できます (ここでは、ブランド化された各 apk を個別のアプリケーションとしてデプロイするために、異なるパッケージ名が使用されています)。

productFlavors {
    vanilla {
        applicationId "com.example.multiflavorapp"
    }

    strawberry {
        applicationId "com.example.multiflavorapp.strawberry"
    }
}

次に、ブランドの特定の android リソースを (src/main/res ディレクトリの代わりに) src/vanilla/res または src/strawberry/res ディレクトリに配置できます (この場合、バニラとストロベリーがブランドです)。productFlavors 機能を使用すると、gradle はアセットをマージせず、特定の res サブディレクトリに関する知識がなくてもファイルを単純に置き換えるだけであることに注意してください。

ビルド プロセス中に、 gradleはビルド タイプ (デバッグ、リリース) と productFlavor の組み合わせとしてビルド バリアントを作成します。Type-Product-Flavor-Build-Variant .

于 2016-03-07T10:07:54.760 に答える