aabresguard:aab资源混淆插件使用问题记录

本文记录了在集成aab插件过程中遇到的问题及解决方案,包括找不到mapping.txt文件、配置插件库依赖时出现的错误、firebase执行报错等问题,并提供了详细的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章用于记录在集成aab插件中遇到的问题,能帮助到他人的同时,也能让自己总结经验和经历,避免重复犯错耗时过久:

1,as执行打包时,报错mapping.txt文件无法找到。报错显示在 “

mappingFile = file("mapping.txt").toPath() // 用于增量混淆的 mapping 文件

”这一行上

解决方案:在打包的app目录下创建一个空的mapping.txt文件

2,as执行打包时,如果你的mappingFile = file("build/xx/../mapping.txt").toPath()是设置了打包生成的mapping文件时,会报错且指向你的mapping.txt文件中的第一个混淆映射列表上:如 Unexpected resource dir: com.airbnb.lottie.model.layer.BaseLayer com.airbnb.lottie.model.layer.BaseLayer$$InternalSyntheticLambda$0$8de8db95e85e73fa4ad208291267f612164ecfcd0bc90840382bccb86bd556c0$0.f$0 -> a

解决方案:不要将mapping.txt文件指向build目录中,在打包的app目录下创建一个空的mapping.txt文件 (同问题1)

3,在根目录build.gradle文件中配置了插件库依赖,但是执行同步时出现以下问题:

Type 'com.bytedance.android.plugin.tasks.AabResGuardTask' property 'aabResGuard' is missing an input or output annotation.
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

解决方案:

buildscript {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
        maven { url 'https://raw.githubusercontent.com/martinloren/AabResGuard/mvn-repo' }  //增加该设置
   }
    dependencies {
        classpath "com.bytedance.android:aabresguard-plugin:0.1.10"  //增加该设置
    }
}

4,在打包时firebase执行报错:

java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
    at android.app.ActivityThread.installProvider(ActivityThread.java:7221)

 解决方案:在aab的配置白名单中增加如下配置

whiteList = [ // 白名单规则
                  "*.R.raw.*",
                  "*.R.string.*",
                  "*.R.drawable.icon",
                  "*.R.string.com.crashlytics.android.build_id",
                  "*.R.string.google_app_id",
                  //谷歌服务
                  "*.R.string.default_web_client_id",
                  "*.R.string.firebase_database_url",
                  "*.R.string.gcm_defaultSenderId",
                  "*.R.string.google_api_key",
                  "*.R.string.google_app_id",
                  "*.R.string.google_crash_reporting_api_key",
                  "*.R.string.google_storage_bucket",
                  "*.R.string.project_id",
                  "*.R.string.com.crashlytics.android.build_id",
                  //所有涉及到 getResources().getIdentifier 对应的资源ID
                  "*.R.array.a1",
                  "*.R.string.s1",
                  "*.R.mipmap.m1",
                  "*.R.dimen.d1",
                  "*.R.integer.int1",
                  // for fabric
                  "*.R.string.com.crashlytics.*",
                  //Firebase Crashlytics
                  "*.R.bool.com.crashlytics.useFirebaseAppId",
                  "*.R.string.com.crashlytics.useFirebaseAppId",
                  "*.R.string.google_app_id",
                  "*.R.bool.com.crashlytics.CollectDeviceIdentifiers",
                  "*.R.string.com.crashlytics.CollectDeviceIdentifiers",
                  "*.R.bool.com.crashlytics.CollectUserIdentifiers",
                  "*.R.string.com.crashlytics.CollectUserIdentifiers",
                  "*.R.string.com.crashlytics.ApiEndpoint",
                  "*.R.string.io.fabric.android.build_id",
                  "*.R.string.com.crashlytics.android.build_id",
                  "*.R.bool.com.crashlytics.RequireBuildId",
                  "*.R.string.com.crashlytics.RequireBuildId",
                  "*.R.bool.com.crashlytics.CollectCustomLogs",
                  "*.R.string.com.crashlytics.CollectCustomLogs",
                  "*.R.bool.com.crashlytics.Trace",
                  "*.R.string.com.crashlytics.Trace",
                  "*.R.string.com.crashlytics.CollectCustomKeys",
    ]

5,执行  unusedStringPath = file("unused.txt").toPath() // 过滤文案列表路径 默认在mapping同目录查找  这一句时报错无法找到unused.txt文件

解决方案:在打包的app目录下创建一个空的unused.txt文件

参考引用:

1,https://github.com/bytedance/AabResGuard/issues/71

2,https://github.com/bytedance/AabResGuard/issues/75

3,AabResGuard/README.md at develop · bytedance/AabResGuard · GitHub

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值