[Android] .so (ダイナミックライブラリ) を取り込もうとしてうまくいかない時

Android StudioでCやC++のライブラリを取り込む時には、JDKを使ってダイナミックライブラリなどにして取り込むと思います。 なんかうまくいかない時には下記の方法で調べてみてください。 ### こんな場合を想定 * .soファイルをプロジェクトに取り込んだけどメソッドをCallした時にクラッシュする * .soファイルは他の部署(外部の会社)で作成したものだ ## 確認する事 * ライブラリを取り込むクラス名とパッケージ名が正しいか確認する .soをロードして使う方法は結構ググると出てきますが、パッケージ名とクラス名もダイナミックライブラリを作成する際に決まっている事について盲点だったりします。 使うだけの人はライブラリ入れればどこでもロードできると思っています。(私もそうでした...) これに気づけないと、何時間もハマる可能性があるので、注意してください。 Macならnmコマンドで確認することができます。 ```bash `gutter:false; $ nm -D hoge.so | grep -i java ``` 手元に手頃なライブラリがないので、例を示せませんが、Java_com_example_HogeHoge_method のような記載があれば、パッケージ名、クラス名、メソッド名がわかります。 自分が使おうとしている情報とあっているか確認してみてください。

0 件のコメント :

コメントを投稿