AabResGuard二开踩坑记
项目地址:https://github.com/bytedance/AabResGuard
Could not find org.codehaus.groovy.modules.http-builder:http-builder:0.7.2.
导入项目sync提示Could not find org.codehaus.groovy.modules.http-builder:http-builder:0.7.2.
修改根目录下的build.gradle
buildscript {
repositories {
//新增下面这个
maven {
url "https://nexus.web.cern.ch/nexus/content/repositories/public/"
}
}
}
core模块无法打包
执行core/build.gradle下的shadowJar方法,生成的jar包在core/build/libs/AabResGuard-0.2.4.jar,或者执行如下的方法
sample工程运行
直接在根目录下执行
./gradlew clean :app:bundleDebug --stacktrace
会在samples/app/build/outputs/bundle/debug下生成obfuscated-app.aab
或者点击
sample工程的aar没有混淆
gradle.properties中的enableAabResGuardPlugin改为true
CI工程运行
直接在前面生成的AabResGuard.jar文件上右击Modify Run Configuration
再添加如下参数
obfuscate-bundle
--bundle=app.aab
--output=./obfuscated.aab
--config=config.xml
--merge-duplicated-res=true
--storeFile=./samples/app/test.keystore
--storePassword=testtest
--keyAlias=testtest
--keyPassword=testtest
需要在项目根目录下新建config.xml
<?xml version="1.0" encoding="UTF-8"?>
<resproguard>
<issue id="whitelist" isactive="true">
<path value="com.ss.android.ugc.aweme.R.raw.*" />
</issue>
<filter isactive="false">
<rule value="*/arm64-v8a/*" />
<rule value="META-INF/*.RSA" />
</filter>
</resproguard>
上面的参数都是相对项目根目录的,需要设置成自己的签名位置和密码
然后直接正常run或者debug都可以
PS:CI在config.xml中读取的参数,如果二开需要新增参数,ci是解析不到的,可以手动修改下,相关代码逻辑在:com.bytedance.android.aabresguard.commands.ObfuscateBundleCommand#fromFlags
AndResGuard二开踩坑记
项目地址:https://github.com/shwenzhang/AndResGuard
CI运行
AndResGuard就简单很多,首先在tool_output/build_apk.sh
中已经给出了参数和config.xml,我们直接和前面一样,把后面的参数复制一下,在com.tencent.mm.resourceproguard.cli.CliMain#main上右键->Modify Run Configuration,输入input.apk -config config.xml -out outapk -signatureType v2 -signature release.keystore testres testres testres
因为执行的目录为项目根目录,所以我们需要把tool_output里面的config.xml、release.keystore复制到项目根目录,然后把自己的apk重命名为input.apk,执行即可