У меня есть Android приложение, которое использует SQLCipher, я уже использовал SQLCipher основного сайтаAndroid SQLCipher не работает в режиме выпуска
и этот question
У меня есть все правильные банки и .so файлы на месте.
В файлах proguard я указываю, чтобы хранить файлы SQLCipher.
Когда я экспортирую приложение в режиме деблокирования и размещаю его на своем личном сервере, я получаю следующий стек, когда я его устанавливаю.
Если я не использую proguard, тогда он будет работать в режиме деблокирования, так что это определенно проблема proguard.
Кто-нибудь знает, почему он работает в режиме отладки, но не один раз экспортируется?
11-18 16:09:18.911: E/MP-Decision(1683): Update arg 2
11-18 16:09:18.991: E/MP-Decision(1683): Update arg 2
11-18 16:09:19.001: E/MP-Decision(1683): Update arg 2
11-18 16:09:19.001: E/MP-Decision(1683): Update arg 4
11-18 16:09:19.001: E/MP-Decision(1683): Update arg "0 190 240 240".
11-18 16:09:19.001: E/MP-Decision(1683): Update arg "0 75 400 400".
11-18 16:09:19.281: E/RR3ContentProvider(25278): inside RR3ContentProvider onCreate
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] No pending exception expected: java.lang.NoSuchFieldError: no "I" field "nHandle" in class "Lnet/sqlcipher/database/SQLiteCompiledSql;" or its superclasses
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:421)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void java.lang.Runtime.loadLibrary(java.lang.String, java.lang.ClassLoader) (Runtime.java:362)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void java.lang.System.loadLibrary(java.lang.String) (System.java:533)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context, java.io.File) ((null):-1)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context) ((null):-1)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void com.carefreegroup.rr3.LoginValidate.<init>(android.content.Context) ((null):-1)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void com.carefreegroup.rr3.NfcScannerApplication.onCreate() ((null):-1)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1020)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:4924)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.app.ActivityThread.access$1500(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:153)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1412)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.os.Looper.loop() (Looper.java:157)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:5633)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:896)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:712)
11-18 16:09:19.441: A/art(25278): art/runtime/thread.cc:1011]
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] Runtime aborting...
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] Aborting thread:
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] "main" prio=5 tid=1 Runnable
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] | group="main" sCount=0 dsCount=0 obj=0x6747afc8 self=0x41ec7f10
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] | sysTid=25278 nice=0 cgrp=apps sched=0/0 handle=0x40049198
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] | state=R schedstat=(0 0 0) utm=4 stm=2 core=1 HZ=100
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] | stack=0xbe57b000-0xbe57f000 stackSize=8MB
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::DumpStack(std::ostream&) const+87 [0x41708914] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x41700b8c] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::Runtime::Abort()+79 [0x4170111c] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::LogMessage::~LogMessage()+505 [0x415ad9aa] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x4170b040] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::ThrowNewExceptionV(art::ThrowLocation const&, char const*, char const*, std::__va_list)+109 [0x4170b50a] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::ThrowNewExceptionF(art::ThrowLocation const&, char const*, char const*, ...)+15 [0x4170b52c] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416c2096] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416c2c4e] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: sqlcipher::register_android_database_SQLiteCompiledSql(_JNIEnv*)+75 [0x4b540280] (libdatabase_sqlcipher.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: JNI_OnLoad+71 [0x4b5405b4] (libdatabase_sqlcipher.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: art::JavaVMExt::LoadNativeLibrary(std::string const&, art::mirror::ClassLoader*, std::string&)+1155 [0x416c4bdc] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416e1332] (libart.so)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.nativeLoad(Native method)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.doLoad(Runtime.java:421)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] - locked <0x674774a8> (a java.lang.Runtime)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.loadLibrary(Runtime.java:362)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at java.lang.System.loadLibrary(System.java:533)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at net.sqlcipher.database.SQLiteDatabase.loadLibs(unavailable:-1)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at net.sqlcipher.database.SQLiteDatabase.loadLibs(unavailable:-1)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at com.carefreegroup.rr3.LoginValidate.<init>(unavailable:-1)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at com.carefreegroup.rr3.NfcScannerApplication.onCreate(unavailable:-1)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4924)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.access$1500(ActivityThread.java:153)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.os.Handler.dispatchMessage(Handler.java:102)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.os.Looper.loop(Looper.java:157)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.main(ActivityThread.java:5633)
11-18 16:09:19.591: A/art(25278): art/runtime/runtime.cc:203] at java.lang.reflect.Method.invoke(Native method)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] Pending exception java.lang.NoSuchFieldError thrown by 'java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String):-2'
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] java.lang.NoSuchFieldError: no "I" field "nHandle" in class "Lnet/sqlcipher/database/SQLiteCompiledSql;" or its superclasses
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:421)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void java.lang.Runtime.loadLibrary(java.lang.String, java.lang.ClassLoader) (Runtime.java:362)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void java.lang.System.loadLibrary(java.lang.String) (System.java:533)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context, java.io.File) ((null):-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void net.sqlcipher.database.SQLiteDatabase.loadLibs(android.content.Context) ((null):-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void com.carefreegroup.rr3.LoginValidate.<init>(android.content.Context) ((null):-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void com.carefreegroup.rr3.NfcScannerApplication.onCreate() ((null):-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.app.Instrumentation.callApplicationOnCreate(android.app.Application) (Instrumentation.java:1020)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.app.ActivityThread.handleBindApplication(android.app.ActivityThread$AppBindData) (ActivityThread.java:4924)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.app.ActivityThread.access$1500(android.app.ActivityThread, android.app.ActivityThread$AppBindData) (ActivityThread.java:153)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1412)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.os.Looper.loop() (Looper.java:157)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:5633)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:896)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:712)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] Dumping all threads without appropriate locks held: thread list lock
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] All threads:
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] DALVIK THREADS (12):
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] "main" prio=5 tid=1 Runnable
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] | group="main" sCount=0 dsCount=0 obj=0x6747afc8 self=0x41ec7f10
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] | sysTid=25278 nice=0 cgrp=apps sched=0/0 handle=0x40049198
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] | state=R schedstat=(0 0 0) utm=7 stm=2 core=2 HZ=100
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] | stack=0xbe57b000-0xbe57f000 stackSize=8MB
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::DumpStack(std::ostream&) const+87 [0x41708914] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::ThreadList::DumpLocked(std::ostream&)+67 [0x41713884] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x41700c3e] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::Runtime::Abort()+79 [0x4170111c] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::LogMessage::~LogMessage()+505 [0x415ad9aa] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x4170b040] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::ThrowNewExceptionV(art::ThrowLocation const&, char const*, char const*, std::__va_list)+109 [0x4170b50a] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::Thread::ThrowNewExceptionF(art::ThrowLocation const&, char const*, char const*, ...)+15 [0x4170b52c] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416c2096] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416c2c4e] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: sqlcipher::register_android_database_SQLiteCompiledSql(_JNIEnv*)+75 [0x4b540280] (libdatabase_sqlcipher.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: JNI_OnLoad+71 [0x4b5405b4] (libdatabase_sqlcipher.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: art::JavaVMExt::LoadNativeLibrary(std::string const&, art::mirror::ClassLoader*, std::string&)+1155 [0x416c4bdc] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] native: ??? [0x416e1332] (libart.so)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.nativeLoad(Native method)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.doLoad(Runtime.java:421)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] - locked <0x674774a8> (a java.lang.Runtime)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.Runtime.loadLibrary(Runtime.java:362)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.System.loadLibrary(System.java:533)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at net.sqlcipher.database.SQLiteDatabase.loadLibs(unavailable:-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at net.sqlcipher.database.SQLiteDatabase.loadLibs(unavailable:-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.carefreegroup.rr3.LoginValidate.<init>(unavailable:-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.carefreegroup.rr3.NfcScannerApplication.onCreate(unavailable:-1)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4924)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.access$1500(ActivityThread.java:153)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.os.Handler.dispatchMessage(Handler.java:102)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.os.Looper.loop(Looper.java:157)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at android.app.ActivityThread.main(ActivityThread.java:5633)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at java.lang.reflect.Method.invoke(Native method)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203]
11-18 16:09:19.601: A/art(25278): art/runtime/runtime.cc:203] "Thread pool worker 0" prio=5 tid=2 Native (still st
......
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-keep public class net.sqlcipher.** {
*;
}
-keep public class net.sqlcipher.database.** {
*;
}
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-dontwarn com.google.android.gms.**
-dontwarn com.google.common.**
Можете ли вы разместить свою конфигурацию proguard? есть смысл здесь с образцом конфигурации https://gist.github.com/developernotes/3040592 – scottyab
@scottyab Привет, я отправил proguard-project.txt – turtleboy
@scottyab Я пробовал файл proguard, который вы разместили выше. Я добавил -dontwarn com.google.android.gms. ** и удаляет -dontobfuscate. Я все равно даю те же ошибки. есть ли у вас какие-либо другие идеи, которые я мог бы попробовать? Спасибо – turtleboy