2
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

Organization

JNIを使っているAndroidプロジェクトのパッケージ名を変更する

前置き

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

他にパッケージ名を書いてる部分がなければ、これで全部だと思います。
変更し忘れたところがあって実行中に突然クラッシュされたりとか、ないようにしたいものですね。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?