“無料/デモ”の両方を生成する最良の方法同じソースコードからの商用アプリ?
-
07-07-2019 - |
質問
App StoreでiPhoneアプリの2つの異なるバージョンを提供したいと思います。1つはアプリケーションで表示されるアイテムの数によって制限され、もう1つは完全に無制限です。
両方のアプリのソースコードはまったく同じです。唯一の違いは、アプリにアイテムを保存するSQLiteデータベースです。
アプリの両方のバージョンで、異なるバンドル名と異なるアイコンを使用する必要があることを理解しています。データベース、アイコン、ペン先文字列などをカスタマイズできるように、ソースコードディレクトリを完全にコピーしないようにする方法を探しています。
すべてを複製せずにこれを行う良い方法はありますか?
解決
プロジェクトに2番目のターゲットを作成するだけです。 1つは完全なデータベースを含むフル機能のアプリケーションであり、新しいターゲットはデモデータベースを含むデモビルドになります。クロスワードでこれを行いますが、うまく機能します。その後、すべてのソースを1か所に保持し、同期が崩れる心配はありません。
他のヒント
条件付きコンパイルを慎重に使用します。どの言語で作業しているのかわかりませんが、C / C ++の条件付きコンパイルでは、マクロプリプロセッサとifdefを使用してコンパイルが行われます。次のようなコードを記述します。
#ifdef FULL_APP
// unlimited size
#define SIZE -1
#else
#define SIZE 100
#endif
プログラムをビルドするとき、コンパイラのコマンドラインで適切なマクロ定義を提供します。
gcc program.cc -o program.o -DFULL_APP
条件付きコンパイルとマクロプリプロセッサをさまざまな方法で使用して、実行可能ファイルのさまざまな機能をオンまたはオフにしたり、プログラムの他の側面を変更したりできます。
また、ユーザーがフルバージョンにアップグレードすることを決定した場合、既存のデータを転送するための何らかのメカニズムがない場合、ユーザーから否定的な反応が見られることにも注意してください。データの内容が小さく、ほとんどがテキストで表現できる場合は、データを渡すためのURLスキームを実装することをお勧めします。
新しいプロジェクトを作成し、元のプロジェクトと同じソースファイルの参照(ローカルコピーの作成ではない)を行います。
アプリの両方のバージョンで異なるSQLiteデータベースを使用する必要がある特定の(iPhone固有の?)理由はありますか?
そうでない場合は、交換可能なキーを使用して、1つのファイルを変更するだけで単一のコードベースをコンパイルできるライセンスメカニズムを実装できます。実行時に、アプリはそのファイルをチェックし、削減または無制限のストレージを許可します。 追加の利点(iPhoneストアがそのようなことをサポートしている場合)は、データを失うことなくフルバージョンのロックを解除するのが非常に簡単であることです。
もちろん、顧客がハイテクに精通しており、コードが逆コンパイルしやすい場合、このようなソリューションはビジネスに害を及ぼす可能性があります。
これを調査しましたが、「試用版をダウンロードしてWeb経由でアップグレードする」ことを行っているようです。アプリストアの条件に違反しています。ストアでは、アプリの2つの異なるバージョンが本当に必要になるようです。 (ベンゴットリーブのエントリーを参照)。 1つのソース、2つのディストリビューション。