【问题标题】:Android app crashes even after proguard rules are specified即使指定了 proguard 规则,Android 应用也会崩溃
【发布时间】:2020-10-06 18:49:02
【问题描述】:

我正在尝试发布一个使用 Twilio 构建的视频通话 Android 应用。我使用捆绑工具将生成的签名捆绑包安装在我连接的安卓设备中。但是,我在接听视频通话时遇到了运行时异常。

JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "tvi.webrtc.WebRtcClassLoader" on path: DexPathList[[zip file "/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/base.apk", zip file "/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.ar.apk", zip file "/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.arm64_v8a.apk", zip file "/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.en.apk", zip file "/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/lib/arm64, /data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/base.apk!/lib/arm64-v8a, /data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.ar.apk!/lib/arm64-v8a, /data/app/com.demo.app-dOUL_EUaQs_CwBerkm7P8w==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/com.demo.app-dOUL_EUaQs
2020-10-06 16:57:52.411 3350-3350/com.demo.app A/m.kaauh.patien: java_vm_ext.cc:570]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:196)
2020-10-06 16:57:52.411 3350-3350/com.demo.app A/m.kaauh.patien: java_vm_ext.cc:570]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
2020-10-06 16:57:52.411 3350-3350/com.demo.app A/m.kaauh.patien: java_vm_ext.cc:570]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)

(堆栈跟踪很长,但我希望在阅读第一行后问题清楚)

我使用默认的android.enableR8=true,规则在proguard-rules.pro中指定

# required by twilio plugin
-keep class tvi.webrtc.** { *; }
-dontwarn tvi.webrtc.**
-keep class com.twilio.video.** { *; }
-keep class com.twilio.common.** { *; }
-keepattributes InnerClasses

我的应用 build.gradle 指定了发布配置

minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release

不知道我错过了什么。任何帮助或建议将不胜感激。

谢谢

【问题讨论】:

    标签: java android twilio proguard


    【解决方案1】:

    您使用tvI.webrtc,但应该使用tvO.webrtc

    只需复制并粘贴下面的代码

    语音安卓3.2.0+

    # Twilio Programmable Voice
    -keep class com.twilio.** { *; }
    -keep class tvo.webrtc.** { *; }
    -dontwarn tvo.webrtc.**
    -keep class com.twilio.voice.** { *; }
    -keepattributes InnerClasses
    

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多