zoukankan      html  css  js  c++  java
  • 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的代码混淆无法进行

    示例:

    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指定了代码混淆指定的包 

  • 相关阅读:
    c 开发调试汇总
    中级 makefile
    flex
    asp.net的一个重要发现(Page_Load()的执行次序先控件的事件函数)。
    Google App Engine(GAE)入门教程翻译
    类QQ右下角弹出消息对话框(jQuery插件)
    c#过滤HTML代码
    python源码分析2
    asp.net(C#) 编码解码(HtmlEncode与HtmlEncode)
    js操作html的table,包括添加行,添加列,删除行,删除列,合并单元格(未实现)
  • 原文地址:https://www.cnblogs.com/ixenos/p/10969083.html
Copyright © 2011-2022 走看看