Flutter 发布APK时进行代码/资源混淆的坑

本文详细介绍了在使用Flutter发布APK时如何正确配置代码混淆,避免第三方库引起的编译错误。通过在build.gradle文件中设置签名配置和启用ProGuard,结合proguard-rules.pro文件中的-dontwarn和-keep指令,确保了代码混淆过程的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Flutter 发布APK时进行代码/资源混淆的坑

@author ixenos

 

1. 关键点

proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因为第三方库里往往有些不会用到的类,没有正确引用,

此时必须设置-dontwarn,比如(-dontwarn io.flutter.**),对第三方库进行warning忽略,否则编译不通过

 

2.在发布Flutter APK时,如需代码混淆,那么需要在/app/build.gradle中加入如下语句

 1 ...
 2 
 3 //这里对签名配置文件进行读取
 4 def keystorePropertiesFile = rootProject.file("key.properties")
 5 def keystoreProperties = new Properties()
 6 keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
 7 
 8 ...
 9 
10 android {
11 
12     ...
13 
14     //这里是签名配置,
15     signingConfigs {
16         release {
17             keyAlias keystoreProperties['keyAlias']
18             keyPassword keystoreProperties['keyPassword']
19             storeFile file(keystoreProperties['storeFile'])
20             storePassword keystoreProperties['storePassword']
21         }
22     }
23 
24     //发布配置
25     buildTypes {
26         release {
27             signingConfig signingConfigs.release
28 
29             minifyEnabled true  //资源压缩设置
30             useProguard true    //代码压缩设置
31 
32             //读取代码压缩配置文件
33             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
34         }
35     }
36 
37     ...
38 
39 }    

 

那么在 "proguard-rules.pro" 文件中,我们就要加入 -dontwarn 语句对第三方库进行报错屏蔽,否则proguard的代码混淆无法进行

示例:

1 #Flutter Wrapper
2 -dontwarn io.flutter.**
3 -keep class io.flutter.app.** { *; }
4 -keep class io.flutter.plugin.**  { *; }
5 -keep class io.flutter.util.**  { *; }
6 -keep class io.flutter.view.**  { *; }
7 -keep class io.flutter.**  { *; }
8 -keep class io.flutter.plugins.**  { *; }

其中,-keep指定了代码混淆指定的包 

 

转载于:https://www.cnblogs.com/ixenos/p/10969083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值