ネイティブ ライブラリを使用する必要があるsqlitecipherライブラリを使用しようとしています。彼らのチュートリアルはとてもシンプルですが、私にはうまくいきません。次のエラーが発生するたびに:
FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.example.test-2.apk,libraryPath=/data/app-lib/org.example.test-2]: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:365)
at java.lang.System.loadLibrary(System.java:535)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:141)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:136)
これは、コンパイル中に .so ファイルが添付されなかったことを意味します。
3 つのファイルはすべて /libs/armeabi/ ディレクトリに保存されます。
問題は、maven を使用して依存関係を管理していることだと思いました (ビルドはとにかく Android Studio を使用して実行されます)。次の試み - これらのライブラリを Maven の依存関係に含めます。ドキュメントによると、それは非常に簡単です。パブリックリポジトリでそれらを見つけることができなかったので<scope>system</scope>
、タグで使用しました。それらは表示されましたが、機能しませんでした。後で、スコープ「システム」が機能しないと言われているこのリンクを見つけ、それらのライブラリをローカルリポジトリに追加しようとしました
mvn install:install-file -DgroupId=net.sqlitecipher -DartifactId=stlport_shared -Dversion=1.0 -Dfile=libstlport_shared.so -Dpackaging=so -DgeneratePom=true
結局 - うまくいきませんでした。
また、このトピックを見ました。おそらくこれは解決策ですが、現在gradleは使用していません。maven から gradle に移行せずに .so ファイルを apk に含める方法はありますか?
私が理解しているように、Android Studio は内部的に gradle を使用して apk を構築しているため、ネイティブ ライブラリのサポートが開始されるまで、maven を使用したすべての努力は役に立ちません。また、Intellij IDEA Cardea (13.0) を使用してプロジェクトをビルドしようとしましたが、残念ながら成功しませんでした。