I have an app using libjingle_peerconnection_so.so and it works fine on debug mode. When I do a store build with Proguad enabled, it is crashing for me:
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] in call to CallStaticBooleanMethodV
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] "Thread-324083" prio=5 tid=17 Runnable
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x1307c660 self=0xb4f11000
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] | sysTid=24587 nice=-11 cgrp=apps sched=0/0 handle=0xafc12980
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] | state=R schedstat=( 17078072 10143959 103 ) utm=0 stm=1 core=0 HZ=100
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] | stack=0xa18fe000-0xa1900000 stackSize=1036KB
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #00 pc 00004640 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #01 pc 00002e8d /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #02 pc 00248469 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+68)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #03 pc 0022cdf3 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+146)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #04 pc 000b189b /system/lib/libart.so (art::JniAbort(char const*, char const*)+582)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #05 pc 000b1fd5 /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #06 pc 0019b495 /system/lib/libart.so (art::JNI::CallStaticBooleanMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+564)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #07 pc 000472eb /data/app/com.smartipcamera.owlcam-1/lib/arm/libjingle_peerconnection_so.so (???)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #08 pc 00047f11 /data/app/com.smartipcamera.owlcam-1/lib/arm/libjingle_peerconnection_so.so (???)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #09 pc 000481f3 /data/app/com.smartipcamera.owlcam-1/lib/arm/libjingle_peerconnection_so.so (???)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #10 pc 0004b9db /data/app/com.smartipcamera.owlcam-1/lib/arm/libjingle_peerconnection_so.so (JNI_OnLoad+102)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #11 pc 001d4c37 /system/lib/libart.so (art::JavaVMExt::LoadNativeLibrary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, art::Handle<art::mirror::ClassLoader>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)+1478)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #12 pc 001fc9c1 /system/lib/libart.so (art::Runtime_nativeLoad(_JNIEnv*, _jclass*, _jstring*, _jobject*, _jstring*)+548)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] native: #13 pc 000197f9 /system/framework/arm/boot.oat (Java_java_lang_Runtime_nativeLoad__Ljava_lang_String_2Ljava_lang_ClassLoader_2Ljava_lang_String_2+152)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at java.lang.Runtime.nativeLoad(Native method)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at java.lang.Runtime.doLoad(Runtime.java:428)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] - locked <0x2fdae695> (a java.lang.Runtime)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at java.lang.Runtime.loadLibrary(Runtime.java:369)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at java.lang.System.loadLibrary(System.java:989)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at org.webrtc.PeerConnectionFactory.<clinit>(unavailable:-1)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at org.appspot.apprtc.ae.a(unavailable:-1)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at org.appspot.apprtc.ae.a(unavailable:-1)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at org.appspot.apprtc.af.run(unavailable:-1)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at android.os.Handler.handleCallback(Handler.java:739)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at android.os.Handler.dispatchMessage(Handler.java:95)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:145)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65] at org.appspot.apprtc.a.f.run(unavailable:-1)
08-07 17:17:35.161: A/art(24350): art/runtime/check_jni.cc:65]
08-07 17:17:35.681: A/libc(24350): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x430040 in tid 24587 (Thread-324083)
what is the proguard setting I should be using? Below is the my current setting:
# 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 class com.google.android.gms.analytics.**
-keep class com.google.analytics.tracking.**
-dontwarn com.google.android.gms.analytics.**
-dontwarn com.google.analytics.tracking.**
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
# Webrtc related
-keep class org.webrtc.**
##---------------End: proguard configuration for Gson ----------