2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

前置き

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

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

参考

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?