如何在Flutter发布的apk中禁用代码混淆?

问题描述 投票:0回答:2

我利用 agora-rtc-engine 在 Flutter 中构建了一个视频会议应用程序 (https://pub.dev/packages/agora_rtc_engine)

我的应用程序在调试版本上运行良好,但每当我尝试在应用程序的发布版本中加入房间/视频会议时,它就会崩溃。该库的 pub-dev 页面提到这是由于 Flutter 的代码混淆造成的。他们展示的防止崩溃的方法已经过时了(proguard.rules)。那么,我现在该如何修复它?

这里是完整的源代码:https://github.com/CodeSarthak/Vartalap

如有任何帮助,我们将不胜感激。非常感谢!

android flutter obfuscation agora.io
2个回答
6
投票

通常情况下,您只需要添加一个带有很少设置的文件即可:D

  • 创建混淆规则来定义要阻止的内容 这是对我有用的方法,根据您的应用程序,您可能需要添加更多特定于您的解决方案的内容。 :D
  • 创建 ProGuard 文件

proguard screenshot

代码: 创建文件:proguard-rules.pro

## Flutter wrapper
-keepattributes Signature
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-keep class com.google.firebase.** { *; }
-keepattributes JavascriptInterface
-keepattributes Annotation
-dontwarn com.razorpay.**
-keep class com.razorpay.** { *; }
-optimizations !method/inlining/
-keepclasseswithmembers class * {public void onPayment*(...);}
-keepclassmembers class * {@android.webkit.JavascriptInterface ;}
-keepclassmembers class com.yourpackagehere.models.** { *; }
-dontwarn io.flutter.embedding.**
  • 并将其添加到应用程序级 gradle 文件中

settings in gradle

代码:

build.gradle 内部

buildTypes {
   
        release {
            shrinkResources false
            signingConfig signingConfigs.release
            minifyEnabled false
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

希望这对您有帮助:D


0
投票

使用自定义规则创建 proguard 文件以排除我需要的内容,这对我有用,谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.