前置き
Javaのソースコードだけで構成されているプロジェクトならば、パッケージ名の変更は簡単です。
が、nativeのコードを入れているプロジェクトでは一筋縄では行きませんでした。
方法
1. 普通にパッケージ名を変更する
こちらのサイト や こちらのサイト に説明があるので、説明通りに変更します。
Eclipseを使っていると、Renameの時に「nativeのメソッドがあるよ!」と警告が出ますが、どうしようもないのでOK押してRenameしましょう。
Google Cloud Messagingなんかを使っている場合は、その設定部分も自力で書き換えないといけないようです。
2. nativeのファイルを編集する
困ったことに、パッケージ名の区切り文字がピリオド .
ではないのです。
IDEの置換機能や、sed
などを使って置換すれば良いでしょう。
2.1. nativeから呼び出すJavaのクラス名
FindClass
なんかで、パッケージ名を含んだクラス名を指定するところです。
スラッシュ /
区切りなので、例えばこんなふうになります。
net.kikuchy.sample_app
↓
net/kikuchy/sample_app
2.2. Javaから呼び出される関数の名前
Javaから呼び出される関数は、何かのパッケージ名を含んだ名前になっている必要があります。
アンダーバー _
区切りです。パッケージ名にアンダーバーが入っている場合は、 1
でエスケープします。
なぜ 1
なんだ…?
net.kikuchy.sample_app.MainActivity の hogeMethod
↓
Java_net_kikuchy_sample_1app_MainActivity_hogeMethod
他にパッケージ名を書いてる部分がなければ、これで全部だと思います。
変更し忘れたところがあって実行中に突然クラッシュされたりとか、ないようにしたいものですね。