2016-06-30 9 views
1

アンドロイド用の異なるアーキテクチャのネイティブコードをクロスコンパイルし、アンドロイドスタジオで対応するjniラッパークラスを作成しました。今私はそれをライブラリとして利用できるようにしたい。android用のネイティブコードと純粋なJavaを含むライブラリを作る方法

1)私のライブラリには純粋なJavaとネイティブコードしか含まれていないため、.soファイルとjniファイルをjarファイルでjarファイルにすることはできますか? xml、res、etc)もしそうなら、その構造は何でしょうか?

2).jarファイルを作成できない場合、残っているのは.aarファイルを作成することだけです。それはアンドロイドスタジオの使用を含むでしょう。私はアンドロイドスタジオなしでそれを行うことはできますか?

編集1: ファイルをjarファイルにした場合、.soを抽出して使用したくありません。私がファイルをjarファイルにして、それを私のプロジェクトに依存するものとして追加すると、jniが見つけることができるように.soがapkのlibs/jniフォルダに自動的に置かれます。質問はどのようにすればいいのですか?(可能であれば)

+0

私はあなたが.soファイルとJavaファイルをライブラリに追加できるはずだと信じています。ただし、jarファイルで.soファイルを使用できるようにするには、ライブラリ上の場所にデバイスの場所を解凍する必要があります。私はまだそれをテストしていないが、私はそれが動作することを確認する機会があれば、私は答えを投稿します。 –

+0

あなたはこのhttps://www.adamheinrich.com/blog/2012/12/how-to-load-native-jni-library-from-jar/について話していますか?私はそれをしたくありません。ファイルをjarファイルにしてからプロジェクトに依存関係として追加すると、.soがlibに自動的に入れられ、jniがそれを見つけることができるようになります。 – Tejas

答えて

1

幸運なことに、方法が見つかりました。 .aar自体は指定された構造のシンプルなzipファイルなのでhereです。私がやったのは、.classファイル(適切なパッケージフォルダ内)をclasses.jarにコピーし、空のフォルダ "res"を作成し、すべての.soファイルを適切なアーキテクチャのjniフォルダに入れ、単純なAndroidManifestを作成したものです。基本タグを含むxml。そして、それらを拡張子.aar(mylib.aarのような)でファイルに変換します。私は.aarを別のプロジェクトのlibsフォルダにコピーして、アプリケーションのbuild.gradlecompile(name:'mylib',ext:'aar')など)に依存関係を置くことでテストしました。それは素晴らしい作品です。

関連する問題