XXResGuard二开踩坑记

/ 0评 / 0

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,或者执行如下的方法

file

sample工程运行

直接在根目录下执行

./gradlew clean :app:bundleDebug --stacktrace

会在samples/app/build/outputs/bundle/debug下生成obfuscated-app.aab

或者点击

file

sample工程的aar没有混淆

gradle.properties中的enableAabResGuardPlugin改为true

CI工程运行

直接在前面生成的AabResGuard.jar文件上右击Modify Run Configuration
file

再添加如下参数
file

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都可以
file

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

file

因为执行的目录为项目根目录,所以我们需要把tool_output里面的config.xml、release.keystore复制到项目根目录,然后把自己的apk重命名为input.apk,执行即可

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注