使用しているEclipseはバージョン3.7.2。
まず前提として、有料版のソースがあるものとする(仮の名前としてプロジェクト名をMyApp、パッケージ名をcom.blogspot.uc1991.myappとする)。
そして、これを参照して無料版を作成するものとする(こちらはプロジェクト名をMyAppFree、パッケージ名をcom.blogspot.uc1991.myappfreeとする)。
利便性のため、有料版には無料版の処理やリソースも入れておく(プログラム上で処理を切り分けるにはgetPackageName()でパッケージ名を判定することで行う)。
第1の注意点として、こういった残念なことをしてソースを失わないよう、まず有料版のソースのバックアップをしっかりとっておくこと。
初めに、無料版のベースとなるプロジェクトを作成する。
- Eclipseの[ファイル]メニューから[新規作成]-[Androidアプリケーションプロジェクト]を選択する。
- 表示されるダイアログのアプリケーション名に無料版のアプリケーション名、プロジェクト名に"MyAppFree"、パッケージ名に" com.blogspot.uc1991.myappfree "を入れる。Build SDKやMinimum Required SDKにはMyAppと同じAPIレベルを指定する。「Create custom launcher icon」のチェックボックスは外す。
- 「次へ」のボタンを押す。
- アクティビティを作成するか聞いてくるので、「Create Activity」のチェックボックスを外して「完了」のボタンを押す。これで無料版のベースとなるプロジェクトが作成される。
次に、AdMobとか外部のライブラリを使用しているなら、無料版の方にも追加する(追加するライブラリが無いのならスキップしてリソースファイルの設定へ)。
ライブラリの追加が完了したら、次にresフォルダのリソースファイルの参照の設定を行う(resフォルダの他にassetsフォルダにアプリで使用するファイルを入れている場合は、assetsフォルダに対しても同様の操作を行う)。
- プロジェクトのフォルダworkspace\MyAppFreeの直下にlibsフォルダがなければ、libsフォルダを作成する。
- libsフォルダにライブラリの.jarファイルをコピーする(エクスプローラでコピーすればOK)。
- EclipseのパッケージエクスプローラでMyAppFreeのプロジェクトを右クリックし、メニューから「リフレッシュ」を選択する。これでパッケージエクスプローラ上でも、MyAppFree以下のlibsにコピーした.jarファイルが現れるはず。
- 次いで再びパッケージエクスプローラでMyAppFreeを右クリックし、今度はメニューから「プロパティ」を選択する。
- プロパティのダイアログで左のペインから「Javaのビルドパス」を選択。
- 「ライブラリ」のタブを選択し、「Jar追加」のボタンを押す。
- libsフォルダに追加した.jarファイルを選択し、「OK」ボタンを押す。
- 「OK」ボタンを押し、プロパティのダイアログを閉じる。これで、パッケージエクスプローラのMyAppFreeプロジェクトの下に「参照ライブラリー」の項目が追加され、その中にプロパティでビルドパスを追加した.jarファイルが表示されるはず。
ライブラリの追加が完了したら、次にresフォルダのリソースファイルの参照の設定を行う(resフォルダの他にassetsフォルダにアプリで使用するファイルを入れている場合は、assetsフォルダに対しても同様の操作を行う)。
- Eclipseのパッケージエクスプローラから、MyAppFreeプロジェクト配下のresフォルダを右クリック。
- 右クリックメニューから「削除」を選択。削除の確認のダイアログが表示されるので、「OK」ボタンを押す。これでMyAppFreeのプロジェクト作成時に自動で作成されたリソースファイルが削除される。(エクスプローラでworkspace\MyAppFreeを参照すると、resフォルダが削除されているはず)
- 今度はパッケージエクスプローラでMyAppFreeプロジェクトを右クリックし、右クリックメニューから「新規」-「フォルダー」を選択する。
- 「新規フォルダー」のダイアログが表示されるので、「拡張>>」のボタンを押す。
- ラジオボタンが表示されるので「Link to alternate location(リンクされたフォルダー)」のラジオボタンを選択し、「参照」ボタンを押す。
- 「フォルダの参照」のダイアログが表示されるので、リソースの参照元となるworkspace\MyApp\resフォルダを選択して「OK」ボタンを押す。
- 「新規フォルダー」のダイアログに戻るので「完了」のボタンを押す。これで、パッケージエクスプローラのMyAppFreeの下に、アイコンの右下に(参照を示す)小さな矢印のついたresフォルダが表示される。resフォルダを開くと参照元のMyAppのリソースと同じ内容が表示されるはず。
リソースファイルの参照の設定(及びassetsの参照)が完了したら、ソースファイルであるsrcの参照の設定を行う。ここは慎重に。
(ソースの参照元であるフォルダworkspace\MyApp\srcの下には、パッケージ名に従ってcom\blogspot\uc1991\myappのフォルダがあり、ソースファイルはこのmyappフォルダに置かれている)
- Eclipseのパッケージエクスプローラから、MyAppFreeプロジェクト配下のsrcフォルダを右クリックし、右クリックメニューから「新規」-「フォルダー」を選択する。
- 「新規フォルダー」のダイアログが表示されるので、「拡張>>」のボタンを押す。
- ラジオボタンが表示されるので「Link to alternate location(リンクされたフォルダー)」のラジオボタンを選択し、「参照」ボタンを押す。
- 「フォルダの参照」のダイアログが表示されるので、ソースの参照元としてworkspace\MyApp\src\comフォルダ(=元パッケージのルートフォルダ)を選択して「OK」ボタンを押す。(workspace\MyApp\srcでないことに注意)
- 「新規フォルダー」のダイアログに戻るので「完了」のボタンを押す。これで、パッケージエクスプローラのMyAppFreeプロジェクト配下のsrcの下に、com.blogspot.uc1991.myappのパッケージのみが表示されているはず。
ソースファイルの設定が完了したらあとひと息。次にビルド時の小細工を入れる。
- EclipseのパッケージエクスプローラからMyAppFreeを右クリックし、メニューから「プロパティ」を選択する。
- プロパティのダイアログで左のペインから「Javaのビルドパス」を選択。「プロジェクト」のタブを選択し、「追加」のボタンを押す。
- プロジェクト選択のダイアログが出るので有料版プロジェクトのMyAppを選択して「OK」ボタンを押す。
- プロパティのダイアログに戻るので「OK」を押して完了する。これで、MyAppFreeのビルドを行うと、先立ってMyAppのビルドが行われ最新の状態になってからMyAppFreeのビルドが行われるようになる。事前のビルドでありこの設定自体は必須ではないと思う。
- 有料版のgenフォルダからR.javaをコピーするバッチファイルrcopy.batを作成し、workspace\MyAppFreeフォルダに入れる。(バッチファイルの内容はこちらのサイトのページを参考に、"app-free"の部分を"MyAppFree"に、"app-paid"の部分を"MyApp"に置き換える)(バッチファイルをおくフォルダに注意)
- ビルド時にrcopy.batが実行されるようにするため、 パッケージエクスプローラからMyAppFreeを右クリックし、メニューから「プロパティ」を選択する。
- プロパティのダイアログで左のペインから「ビルダー」を選択し、「新規」のボタンを押す。
- 「構成タイプ」のダイアログが表示されるので、そのまま「OK」ボタンを押す。
- 「構成の編集」のダイアログが表示去るので、「名前」の欄に「Rクラスコピー」、「ロケーション」の欄に「${build_project}\rcopy.bat」、「作業ディレクトリ」の欄に「${build_project」と入れて「OK」ボタンを押す。(但し、「名前」欄には個別の名前を入れなければならないようで、別のプロジェクトで既に「Rクラスコピー」を使っていると「この構成の名前はすでに存在します」と表示されるので、その場合はユニークな名前を入れる。)
- プロパティのダイアログに戻るので「OK」を押して完了する。 これで、MyAppFreeのビルドを行うと、先立ってMyAppからgenフォルダの内容がコピーされるようになる。初回のビルドではこちらで書いたようにプロジェクトのクリーンを実行しておくこと。
有料版からAndroidManifest.xmlをコピーして内容を修正する。
- パッケージエクスプローラでMyAppのAndroidManifest.xmlをMyAppFreeにCtrl+ドラッグ&ドロップして上書きコピーする。
- コピーしたAndroidManifest.xmlを開く。
- パッケージ名を無料版のパッケージ名"com.blogspot.uc1991.myappfree"に修正する。
- パーミッションの設定を無料版に合わせて修正する。
- アイコンのリソース名、アプリの文字列リソース名を無料版に合わせて修正する。
- アクティビティの名前は"MyAppAvtivity"や".MyAppActivity"といった省略形ではなく、パッケージ名も含めた"com.blogspot.uc1991.myapp.MyAppActivity"といったフルパスに修正する。
ここまでが一通りの手順。
(もっといい方法もあるかもしれないけど)
・・・・・・なのだが、ソースファイルやらに×マークがついて「Rを変数に解決できません」のエラーが残ることがある。初回はプロジェクトのクリーンを実行した上で、コマンドプロンプトを起動して手動でrcopy.batを実行してR.javaをコピーしておく。(自分はこれで☓マークが消えた)
これでも×マークが残る場合はプロジェクトのクリーンやリフレッシュ、Eclipseの再起動を試す。
以下に、まとめるにあたって参考にさせていただいたページを改めて載せておく。
0 件のコメント:
コメントを投稿