17

com.mycompany.myfreegame のような名前で現在市場に出回っているゲーム アプリの無料バージョンを作成しました。今度は有料版を作りたいです。今後何年もの間、両方のバージョンに微調整とバグ修正が必要になることは間違いありません。したがって、両方のバージョンのバグを本質的に同時に修正できるように、無料と有料の情報のエンコーディングを可能な限りコンパクトにカプセル化したいと考えています。

2 つのバージョンの違いがすべて実行時に処理されていれば、ソース コードに 1 つのフラグを設定でき、それで問題は解決します。残念ながら、考慮すべき点が他に 2 つあります。

  1. パッケージの名前は、2 つのバージョン間で異なる必要があります。
  2. 一部の xml は異なる必要があります。たとえば、無料版では広告を保持するためにリニア レイアウトが必要ですが、有料版では必要ありません。

この目標を達成するための最も簡単な方法は何ですか?

4

5 に答える 5

7

私が試す最初のアプローチは、Eclipse で 3 つのプロジェクトを使用することだと思います。1 つはゲームのいずれかのバージョン用で、もう 1 つはすべての共有コードを含むライブラリ プロジェクトです。ライブラリ プロジェクトは、コア ゲームプレイのすべてのコードが配置される場所であり、バージョン固有のプロジェクトは、さまざまなレイアウトの読み込み、無料版への広告の配置、および有料版へのレベル/機能/ハットの追加を管理します。

Ant タスクを使用して、コンパイラ フラグを使用して単一のコード ベースという目標を達成できるかもしれませんが、それは私には無理です。

于 2012-05-08T14:03:21.313 に答える
4

あなたが探しているのはライブラリ プロジェクトhttp://developer.android.com/guide/developing/projects/index.html#LibraryProjectsだと思います

その Web ページから:

If you are creating an application that exists in both free and paid versions. You move the part of the application that is common to both versions into a library project. The two dependent projects, with their different package names, will reference the library project and provide only the difference between the two application versions.

これと非常によく似た別の質問には、適切な議論と回答があるようです: Multiple Apps with shared code base

編集:これは、ライブラリ プロジェクトの実装方法に関するリンクです。http://developer.android.com/guide/developing/projects/projects-eclipse.html

異なるバージョンがわずかに異なることに関しては、ライブラリ プロジェクトが対応できます。ライブラリ プロジェクトが最初にビルドされ、次に親 (ライブラリを使用するプロジェクト) が最後にビルドされ、それらがマージされます。両方のプロジェクトで同じリソース識別子を定義でき、最後にビルドされたプロジェクト (親プロジェクト) が優先されます (上書きされます)。したがって、本質的に、親/呼び出し元のアプリケーションで文字列/レイアウトをオーバーライドできます (おそらくもっと、わからない?)。

例: 無料と有料の 2 つのプロジェクトがあるとします。既定の実装 (無料バージョン) で文字列を作成し、有料バージョン (親アプリ) でそれをオーバーライドできます。

共有ライブラリのコード Strings.xml ファイル:

<string name="AppName">My Application (Free)</string>

親アプリの Strings.xml ファイルのコード:

<string name="AppName">My Application Premium</string>
于 2012-05-08T14:09:31.023 に答える
3

私はMavenと一緒に行きます。次のように、3 つのサブプロジェクトを含む親プロジェクトを定義できます。

  • 一般
  • 有料
  • 無料

Maven では、同じコード ベースを使用しながら、異なる構成ファイルを使用できます。

たとえば、現在 2 つのデータベースが使用されているプロジェクトがあるため、すべてのアプリ構成ファイルは共通のプロジェクトに残り、データベース構成ファイルとクラスは各プロジェクト フォルダーに残ります。親でビルドすると、すべての子プロジェクトがビルドされ、単体テストに合格するなど...

さらに、これは maven の数千の利点の 1 つにすぎません。

編集:私はちょうど見つけました、あなたはmaven用のandroid-pluginを持っていて、クールな機能もあります

于 2012-05-08T14:17:09.717 に答える
1

Android Studio + gradle を使用するのが最善の方法かもしれません。このケースでは、コンソールで 1 つのコマンドで有料版と無料版の両方をビルドできます。詳細はこの投稿にあります: https://stackoverflow.com/a/17286142/1705370

于 2013-06-24T22:29:51.153 に答える
0

これに似たものを探していると思います:

単一のソース コードからの複数の Android アプリケーション パッケージ .apk ファイル

基本的に、ここでの最も簡単なアプローチは、2 つの異なるマニフェスト ファイルと 2 つの異なるメイン アクティビティを用意し、Ant を使用してコンパイルを切り替えることですが、後者はオプションです。

それが役に立てば幸い。

于 2012-05-08T14:09:50.430 に答える