Android資源混淆 + 混淆忽略 .so庫


安裝包立減1M--微信Android資源混淆打包工具
http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=208135658&idx=1&sn=ac9bd6b4927e9e82f9fa14e396183a8f#rd

AndResGuard
https://github.com/shwenzhang/AndResGuard/blob/master/README.zh-cn.md

美團Android資源混淆保護實踐
http://tech.meituan.com/mt-android-resource-obfuscation.html


AndResGuard資源混淆用法
http://www.qingpingshan.com/rjbc/az/171398.html

 

關於AndResGuard

AndResGuard是一個幫助你縮小APK大小的工具,他的原理類似Java Proguard,但是只針對資源。他會將原本冗長的資源路徑變短,例如將res/drawable/wechat變為r/d/a。

AndResGuard不涉及編譯過程,只需輸入一個apk(無論簽名與否,debug版,release版均可,在處理過程中會直接將原簽名刪除),可得到一個實現資源混淆后的apk(若在配置文件中輸入簽名信息,可自動重簽名並對齊,得到可直接發布的apk)以及對應資源ID的mapping文件。

項目地址: https://github.com/shwenzhang/AndResGuard

Gradle集成

  1. Project/build.gradle
    buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.14' } }
  2. Module/build.gradle
    apply plugin: 'com.android.application' apply plugin: 'AndResGuard' android { ... } dependencies { ... } andResGuard { // mappingFile = file("./resource_mapping.txt")  mappingFile = null use7zip = true useSign = true // 打開這個開關,會keep住所有資源的原始路徑,只混淆資源的名字  keepRoot = false whiteList = [ // for your icon  "R.drawable.icon" ] compressFilePattern = [ "*.png", "*.jpg", "*.jpeg", "resources.arsc" ] sevenzip { artifact = 'com.tencent.mm:SevenZip:1.1.14' //path = "/usr/local/bin/7za" --- Linux //path = "D:\7za\7za.exe" --- Windows } }

如何使用

用法1:

用法2:

在Android Gradle Terminal中

  1. Windows
    gradlew.bat resguardRelsese
  2. OS X or Linux
    ./gradlew reguardRelease

注意問題

  1. mappingFile用於增量更新,保持本次混淆與上次混淆結果一致;
  2. uss7zip為true時,useSign必須為true;
  3. useSign為true時,需要配置signConfig;
  4. whiteList添加在代碼內部需要動態獲取的資源id;
  5. sevenzip可使用artifacr或path,path指本地安裝的7za(7zip命令行工具)。

 


 

Android studio 混淆打包時如何忽略依賴庫中的第三方.so文件
http://blog.csdn.net/u011907407/article/details/55510379


 

在app項目中直接忽略library中的.so文件

在app的proguard-rules.pro忽略依賴庫中的文件寫法如下:
-libraryjars ../XXX(此處為library名稱)/src/main/jniLibs/armeabi/xxxxx.so
-libraryjars ../XXX(此處為library名稱)/src/main/jniLibs/armeabi-v7a/xxxxx.so
-libraryjars ../XXX(此處為library名稱)/src/main/jniLibs/x86/xxxxx.so


同理依賴庫中jar包在app 中忽略混淆的寫法
-libraryjars ../XXX(此處為library名稱)/libs/xxx.jar
-libraryjars ../XXX(此處為library名稱)/libs/xxx.jar


最后溫馨提醒:
shrinkResources true
(該屬性為打包時是否自動刪除無用的資源與代碼,慎用!!據說有人因為這個屬性導致app崩潰..此處不詳細討論..)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM