同じAndroidソースを流用して、いくつかの別アプリとして運用したい、というケースがあります。その場合、アプリの識別子となるパッケージ名のみ変更する必要があります。
基本的にはAndroidManifest.xmlのpackage要素を変更するだけで良いのですが、R.javaなどはpackageに依存しているのでソース中の参照関係が崩れて、そのままだとビルドエラーになり、意外と面倒です。
手動でソースを一括置換するなどしてもよいのですが、Eclipseを使用しているならリネーム機能が備わっているので、以下の手順を踏めばサクッと変更できます。
ここでは例として以下のパッケージ名変更を行います。
jp.bpsinc.android.project -> jp.bpsinc.android.techracho
まずはビルドして、genディレクトリ以下を生成しましょう。以下のような構成になります。
パッケージエクスプローラ上のgen以下にある "jp.bpsinc.android.project" を右クリックし、Refactor -> Rename を選択します。変更内容を入力するダイアログが表示されるので、変更したいパッケージ名である "jp.bpsinc.android.techracho" を入力します。ここで、"Update references"を忘れずにチェックしておき、OKを選択してください。ソース中で "jp.bpsinc.android.project.R" を参照していた部分がすべて "jp.bpsinc.android.techracho.R" に置き換わります。
これでソース中の参照関係は解決です。
あとはAndroidManifest.xmlを修正します。package要素を変更したいパッケージ名である "jp.bpsinc.android.techracho" へ変更しましょう。
[xml]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.bpsinc.android.techracho"
android:versionCode="1"
android:versionName="1.0" >
[/xml]
また、Activity名などを相対参照("."で始まる形)で指定している場合は、パッケージ名が基準となってしまいますので、実際のソース構成に合わせた絶対参照に変更します。
[xml]
<activity
android:name="jp.bpsinc.android.project.MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
[/xml]
上記では次のように変更しています。
.MainActivity -> jp.bpsinc.android.project.MainActivity
最終的に以下の形になります。
これで完了です。念のためクリーンしてビルドしましょう。