2016-03-29 28 views
3

Android用の開発とSpatialiteを使用するのが初めてで、このエラーのためにアプリがいくつかのデバイスでクラッシュする理由を理解できません。Androidのjsqlite.Database.internal_initのjava.lang.Unterin_initでjava.lang.Unterin_initが見つかりません。Spatialite

ます。java.lang.UnsatisfiedLinkError:無効jsqlite.Database.internal_init(見つかりません実装)jsqlite.Databaseでjsqlite.Database.internal_init(ネイティブメソッド) で (Java_jsqlite_Database_internal_1initとJava_jsqlite_Database_internal_1init__みました)(Database.java:25)。

このクラッシュレポートはAndroid 6.0搭載のNexus 5(ハンマーヘッド)からのものですが、Android搭載Xoomで報告されています4.1およびその他の未知のデバイスがあります。私はそれは多分、これらの問題に言及したようNDKのバージョンに関係すると思う:

Adding ".so" library to my android studio project
Android NDK java.lang.UnsatisfiedLinkError: findLibrary returned null https://bitbucket.org/almworks/sqlite4java/issues/71/arm64-bit。 (これはsqlite4java用ですが)

これ以外にも、このエラーや警告が表示されます(デバイスによって異なる):libjsqlite.soにはテキストの再配置があります。これはメモリを浪費し、セキュリティ強化を防ぎます。修正してください。それは、他のエラーのようにアプリをクラッシュしませんが。

+0

あなたは 'libjsqlite.so'ファイルは、あなたが含まれているとその場所(jniLibs/XXX)内容の詳細を与えることができますか? – antonio

+0

私はそれらをsrc/main/jniLibs/armeabi、src/main/jniLibs/armeabi-v7a およびsrc/main/jniLibs/x86に含めました。例のように。 Nexus 5、Nexus 5Xなどいくつかのデバイスでクラッシュしますが、私のサムスンS6エッジではいくつかの点で動作します。 – Jisike

+0

あなたのapkを圧縮解除すると、 '.so'ライブラリを含む' lib'フォルダにarmeabiなどが表示されますか? – antonio

答えて

4

私はアプリbuilt.gradle(またはAndroidManifest.xmlに設定)に設定することで、このことを解決:

targetSdkVersion 21 

をそして、それは働きます! 私はそれが良い解決策ではないことを知っています、それはパッチですが、私はうまくいきます!

*** UPDATE

あなたは21にターゲットバージョンを変更することができない場合は、次の操作を行うことができます。

  • からソースコードをダウンロードしてください:すべての参照でhttps://github.com/geopaparazzi/geopaparazzi
  • クリーンあなたのプロジェクトをspatialite、.warファイル、jndiライブラリ
  • コピーモジュールgeopaparazzispatialitelibraryをコピーしてプロジェクトに組み込みます
  • コンパイル
  • モジュールから必要とし、それは少し複雑なプロセスだが、それが動作するバージョン23

をターゲットプロジェクトを享受していません。

andrea antonelloのおかげで、彼は私が問題を解決し、spatialiteで素晴らしい仕事をするのを助けます。

1

これが同じ問題を抱える人を助けることができる場合は、jniライブラリを更新して解決しました。今のようにJNIライブラリの最新バージョンを含むgeopaparazziのgithubのレポから

https://github.com/geopaparazzi/libjsqlite-spatialite-android/blob/master/archive/20150616.libjsqlite.4.3.0.tar.bz2

:これを行うには、私は、このファイルをダウンロードしました。

spatialiteandroidライブラリの.soファイルをアーカイブファイルの.soファイルに置き換えます。

あなたはここで、ライブラリのすべてのバージョンを見つけることができます:https://github.com/geopaparazzi/libjsqlite-spatialite-android/tree/master/archive

関連する問題