ソースの管理を考えると、有料版と無料版ではできる限りソースを共有したい。そういう時にはどうすればいいか。
方針
プロジェクトを3つにわける。
- コア
- 無料版
- 有料版
手順
まず最初にコアとなるプロジェクトを作成する。その際ライブラリとしてマークすること。既存のプロジェクトがある場合、ライブラリとしてマークするだけでコアパッケージの代わりになる。
コアの中ですべての機能が完結するように処理を書く。有料版にしか存在しないアイコンなども全部含めてしまうし、無料版でしか必要のない AdMob 用 jar なども含めてしまう。
次に、無料版と有料版のプロジェクトを作成。それぞれ、コアを参照するよう設定する。
無料版と有料版のプロジェクトでは AndroidManifest.xml だけを設定。基本的にはコアで動いていたものをコピーすれば大丈夫。あとはアプリ名とか権限をそれぞれ設定する(例えば無料版にのみ広告を表示する場合、有料版からはインターネット権限を削除するなど)。
src, libs, res の各フォルダはカラッポで大丈夫。assets フォルダに関しては参照元のものを使えないらしいので、それぞれにコピーする必要がある(使ってないならもちろん空でいい)。
まずその状態で動くことを確認したら、上書きたいリソースだけ res フォルダに追加していく。たとえばランチャーアイコンとか文字列リソースとか。
処理の分岐
Context#getPackageName()
で、起動したアプリの AndroidManifest.xml に設定されている package を文字列で取得できるので、コア内でこれを利用して処理を記述する。他にも同じキーで別の文字列になるようなリソースを用意するとかいろいろやり方はあると思う。