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

  • 相关阅读:
    JS框架_(JQuery.js)网页文字评论弹幕
    JS框架_(JQuery.js)文章全屏动画切换
    JS框架_(coolShow.js)图片旋转动画特效
    JS框架_(JQuery.js)高德地图api
    JS框架_(JQbar.js)柱状图动态百分比进度条特效
    JS框架_(JQuery.js)Tooltip弹出式按钮插件
    JS框架_(Popup.js)3D对话框窗口插件
    JS框架_(Progress.js)圆形动画进度条
    JS框架_(JQuery.js)动画效果鼠标跟随
    JS框架_(Esign.js)仿信用卡电子签名特效
  • 原文地址:https://www.cnblogs.com/ixenos/p/10969083.html
Copyright © 2011-2022 走看看