2016-03-29 14 views
3

Android için geliştirdiğim ve Spatialite kullanıyorum ve bu hata yüzünden uygulamamın neden birkaç aygıtta kilitlendiğini anlayamıyorum:java.lang.UnsatisfiedLinkError jsqlite.Database.internal_init in Android Spatialite

java.lang.UnsatisfiedLinkError: void jsqlite.Database.internal_init (bulunamadı uygulama) jsqlite.Database de jsqlite.Database.internal_init (Yerli Metodu) de (Java_jsqlite_Database_internal_1init ve Java_jsqlite_Database_internal_1init__ çalıştı) (Database.java:25).

Bu kilitlenme raporu, Android 6.0 ile bir Nexus 5 (çekiç kafası) kaynaklıdır ancak Android ile Xoom'da bildirilmiştir 4.1 ve diğer birkaç bilinmeyen cihaz. Ben belki bu konular belirtildiği gibi NDK sürümleri ile ilişkili düşünüyorum:

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. (Bu sqlite4java için de)

Bunun dışında, aynı zamanda bu hatayı/uyarıyı aldığımda (cihaza bağlı olarak): libjsqlite.so'nun metin yeniden yerleştirmeleri vardır. Bu hafıza boşa harcıyor ve güvenlik sertleşmesini önlüyor. Lütfen düzelt. Diğer hatalar gibi uygulamayı çökmesine rağmen.

+0

sen ayrıntı verebilir misiniz neyi 'libjsqlite.so' dosyaları dahil ve sahip konumlarını (jniLibs/XXX)? – antonio

+0

Bunları src/main/jniLibs/armeabi, src/main/jniLibs/armeabi-v7a ve src/main/jniLibs/x86 adreslerinde bulundum. Örnekte olduğu gibi. Nexus 5, Nexus 5X dahil olmak üzere birkaç cihazda çöküyor, ancak birkaçında Samsung S6 Edge cihazımda çalışıyor. – Jisike

+0

Eğer apk'nızı açarsanız, 'lib' klasöründe' '' '' kütüphaneleri ile birlikte armeabi, vs. görüyor musunuz? – antonio

cevap

4

(veya AndroidManifest.xml) uygulamasında built.gradle bu ayarlayarak bunu çözdü:

targetSdkVersion 21 

Ve işe yarıyor! Bunun iyi bir çözüm olmadığını biliyorum, bir yama ama ben işe yarıyor!

*** GÜNCELLEME

sen 21'e hedef sürümünü değiştiremezsiniz, aşağıdaki yapabilirsiniz:

  • kaynak kodunu indirin: içinde https://github.com/geopaparazzi/geopaparazzi
  • temizleyin bütün referanslar projeniz spatialite, .war dosyası ve jndi kitaplıkları
  • Kopyalama modülü geopaparazzispatialitelibrary ve projenize tümleşik
  • Kodunuzu temizleyin. modül
  • Derleme dan gerekir ve sürüm 23

Biraz karmaşık bir süreç hedefleme projeyi zevk, ama o inşaat yok.

Özellikle andrea antonello'ya teşekkürler, sorunu çözmemde bana yardımcı olur ve mekansalitle harika bir iş çıkarır.

1

Aynı sorun yaşayan herkesin yardımcı olması durumunda, bunu jni kitaplıklarını güncelleyerek çözdüm. Şu andan itibaren jni kütüphanelerin son sürümünü içeren geopaparazzi github repo

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

: Bunu yapmak için ben bu dosyayı indirdim.

Mekansaliteandroid kitaplığındaki .so dosyalarını arşiv dosyasındakiler ile değiştirin.

Burada kütüphanenin tüm sürümlerini bulabilirsiniz: https://github.com/geopaparazzi/libjsqlite-spatialite-android/tree/master/archive:

İlgili konular