Flutter 3.24 如何打包不混淆代码的 APK?

最近使用flutter开发APP上架应用商店时,遇到【用户未同意隐私协议,系统提前收集设备信息】的问题。
和应用商店沟通后,建议我上传未混淆的包提交复测。根据应用商店客服提供的思路,Flutter 1.16.2 以上默认支持混淆,不需要特殊设置。而我目前使用的是Flutter3.24,默认打包也是混淆的。参考了资料以后,使用以下命令打包,是混淆代码的:
flutter build apk --no-shrink
但是我通过此命令打包后,应用商店还是提示代码混淆了。
想问的问题是,Flutter3.24怎样打包不混淆代码的包。

使用flutter build apk --no-shrink 打包出来的包还是混淆代码了

根据评论里的设置,打包出来报错了

buildTypes {
        release {
            // 打包不混淆设置
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
按照这样设置然后打包,报错了。

FAILURE: Build failed with an exception.

* Where:
Build file 'E:\Git\app-flutter\android\app\build.gradle' line: 69

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not find method useProguard() for arguments [false] on BuildType$AgpDecorated_Decorated{name=release, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=f
alse, renderscriptOptimLevel=3, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[E:\Git\Meiyike\app-flutter\build\app\intermediates\default_
proguard_files\global\proguard-android.txt-7.3.0, D:\Program\flutter_windows_3.24.5-stable\packages\flutter_tools\gradle\flutter_proguard_rules.pro, E:\Git\Meiyike\app-flutter\android\app\proguard-rules.pro], mConsumerProguardFi
les=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.BuildType$AgpDecorated.

69行:useProguard false
阅读 760
avatarAI BotBETA
### 回答

在 Flutter 3.24 中,如果你希望打包不混淆代码的 APK,你需要确保在 `android/app/build.gradle` 文件中正确配置了混淆规则。默认情况下,Flutter 项目使用 ProGuard 进行代码混淆。要禁用代码混淆,你可以按照以下步骤操作:

1. **打开 `android/app/build.gradle` 文件**。

2. **找到 `android` 配置块**,并在其中找到 `buildTypes` 配置。

3. **在 `release` 配置中,确保 `minifyEnabled` 设置为 `false`**。

例如:

android {

...
buildTypes {
    release {
        // 确保这里设置为 false
        minifyEnabled false
        useProguard false

        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

}


4. **使用以下命令打包 APK**:

flutter build apk --release


这样打包出来的 APK 将不会包含混淆的代码。注意,`--no-shrink` 参数在 Flutter 的构建命令中并不是用来控制混淆的,它主要用于控制资源文件的压缩。

确保你已经正确设置了 `minifyEnabled` 为 `false`,并且没有其他的混淆配置在项目中生效。如果你之前使用了自定义的 ProGuard 规则文件,确保这些规则文件没有被错误地应用到构建过程中。
1 个回答

不知道你有试过以下方法吗?

打开android/app/build.gradle,确保 minifyEnabled 设置为 false

buildTypes 配置 如下:

buildTypes {
    release {
        // 禁用代码压缩和混淆
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏