微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

 

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的代码混淆无法进行

示例:

#Flutter Wrapper
-dontwarn io.Flutter.**
-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.**  { *; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐