开启混淆后Flutter应用找不到org.pytorch.PyTorchAndroid类崩溃求助
Flutter集成pytorch_mobile插件开启混淆后崩溃:ClassNotFoundException: org.pytorch.PyTorchAndroid
我在开发Flutter应用时使用了pytorch_mobile插件,当把minifyEnabled和shrinkResources设置为true后,应用启动时出现以下崩溃报错:
F/xxx(25186): java_vm_ext.cc:594] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "org.pytorch.PyTorchAndroid" on path: DexPathList[[zip file "/data/app/~~hrC1Awe0qTN_lMvYeHVsZQ==/xxx-iLzf33Fatdto0s-3rgbmzA==/base.apk"],nativeLibraryDirectories=[/data/app/~~hrC1Awe0qTN_lMvYeHVsZQ==/xxx-iLzf33Fatdto0s-3rgbmzA==/lib/arm64, /data/app/~~hrC1Awe0qTN_lMvYeHVsZQ==/xxx-iLzf33Fatdto0s-3rgbmzA==/base.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
为了在正式发布前调试解决这个问题,我在android/app/build.gradle的android.buildTypes中给debug模式也配置了混淆:
... debug { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } ...
我在proguard-rules.pro中尝试了多种规则,包括保留PyTorch相关类、接口,保留插件包内容等,具体规则如下:
-optimizationpasses 1 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -dump class_files.txt -printseeds seeds.txt -printusage unused.txt -printmapping mapping.txt -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -allowaccessmodification -keepattributes *Annotation* -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -repackageclasses '' -keep class org.pytorch.** { *; } -keep interface org.pytorch.** { *; } -keep class io.fynn.pytorch_mobile.** { *; } -keep interface io.fynn.pytorch_mobile.** { *; } -keep class io.fynn.** { *; } -keep interface io.fynn.** { *; } -keep class libpytorch.** { *; } -keep interface libpytorch.** { *; } -keep class libpytorch*.** { *; } -keep interface libpytorch*.** { *; } -keep class org.pytorch.proguard.UsedBy* -keep @org.pytorch.proguard.UsedBy* class * { <init>(); } -keepclassmembers class * { @org.pytorch.proguard.UsedBy* *; } -keep class org.pytorch.* -keep @org.pytorch.* class * { *; } -keepclassmembers class * { @org.pytorch.* *; } -keep class * { *; } -keep class org.pytorch.** { *; } -keep class com.facebook.jni.** { *; } -keep interface org.pytorch.** { *; } -keep interface com.facebook.jni.** { *; } -keep class org.pytorch.PyTorchAndroid** { *; } -keep interface org.pytorch.PyTorchAndroid** { *; } -keep class org.pytorch.PyTorchAndroid.** { *; } -keep interface org.pytorch.PyTorchAndroid.** { *; } -keep class org.pytorch.pytorchandroid** { *; } -keep interface org.pytorch.pytorchandroid** { *; } -keep class org.pytorch.pytorchandroid.** { *; } -keep interface org.pytorch.pytorchandroid.** { *; } -keep class org.pytorch.jni.** { *; } -keep interface org.pytorch.jni.** { *; } -keep class org.pytorch.** -keep class org.pytorch.* #-keep class org.pytorch.PyTorchAndroid #@keep class org.pytorch.** { *; } #@keep class com.facebook.jni.** { *; } #@keep interface org.pytorch.** { *; } #@keep interface com.facebook.jni.** { *; } #@keep class org.pytorch.PyTorchAndroid** { *; } #@keep interface org.pytorch.PyTorchAndroid** { *; } #@keep class org.pytorch.PyTorchAndroid.** { *; } #@keep interface org.pytorch.PyTorchAndroid.** { *; } #@keep class org.pytorch.pytorchandroid** { *; } #@keep interface org.pytorch.pytorchandroid** { *; } #@keep class org.pytorch.pytorchandroid.** { *; } #@keep interface org.pytorch.pytorchandroid.** { *; } #@keep class org.pytorch.jni.** { *; } #@keep interface org.pytorch.jni.** { *; } #@keep class org.pytorch.** #@keep class org.pytorch.* #@keep class org.pytorch.PyTorchAndroid -keeppackagenames *pytorch*,*PyTorch*,**pytorch**,**PyTorch** -libraryjars pytorch_android-1.8.0.aar
但应用依然会出现上述报错并崩溃,目前该插件的相关讨论中还没有可行的优化方案,求解决办法。
内容的提问来源于stack exchange,提问作者luvzfootball
相关产品推荐
相关产品推荐

