You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

混淆AAR库配套sources.jar无法被Android Studio识别问题排查

闭源AAR的sources.jar已下载但Android Studio无法识别的排查方案

1. 验证sources.jar的内容完整性

找到本地Maven仓库中生成的xxx-sources.jar,解压后检查以下几点:

  • 确认包含的类(如SDK.java、SDKListener.java)的全限定包路径与AAR中混淆后的类完全一致
  • 确认SDK类的内部静态类也被正确包含(比如SDK$InnerClass.java),如果当前include("**/SDK.java")未覆盖内部类,可修改为include("**/SDK*.java")
  • 可在sourceJar任务中添加打印,验证源码路径是否正确:
    task sourceJar(type: Jar) {
        from android.sourceSets.main.java.srcDirs
        println "Source dirs: ${android.sourceSets.main.java.srcDirs}" // 打印源码目录,确认指向正确路径
        archiveClassifier.set("sources")
        include("**/SDK.java", "**/SDKListener.java", "**/SDK*.java")
    }
    

2. 修正Maven发布的Artifact配置

  • 避免重复设置classifier,classifier "sources"和archiveClassifier.set("sources")保留其中一个即可(Gradle 7.x+推荐用archiveClassifier):
    task sourceJar(type: Jar) {
        from android.sourceSets.main.java.srcDirs
        archiveClassifier.set("sources") // 仅保留这一行
        include("**/SDK.java", "**/SDKListener.java", "**/SDK*.java")
    }
    
  • 检查本地仓库的pom.xml,确认存在sources artifact的条目:
    <artifact>
        <groupId>com.my.library</groupId>
        <artifactId>xxx</artifactId>
        <version>x.x.x</version>
        <classifier>sources</classifier>
        <type>jar</type>
    </artifact>
    

3. 确保ProGuard/R8配置与源码匹配

  • 确认混淆后的类与sources.jar中的类全限定名、方法签名完全一致:
    • 检查-keep规则是否正确保留了公共类的完整结构,比如-keep, includedescriptorclasses class com.my.library.SDK { *; }要确保类名、方法名、参数都未被混淆
    • 保留-renamesourcefileattribute SourceFile和-keepattributes SourceFile, LineNumberTable,确保混淆后的类携带正确的源文件标识

4. 修复AGP与Gradle版本兼容性问题

AGP 4.1.0官方兼容的Gradle版本是6.5-6.7,当前使用的Gradle 7.1.1版本过高,可能导致发布流程异常:

  • 修改gradle/wrapper/gradle-wrapper.properties中的distributionUrl,降级到6.7.1:
    distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
    
  • 同步项目后重新发布AAR和sources.jar

5. 清除Android Studio缓存

  • 执行File -> Invalidate Caches... -> Invalidate and Restart,强制Studio重新加载sources.jar
  • 也可以手动删除项目根目录的.gradle、build文件夹,以及本地Maven仓库中该库的缓存,重新同步依赖

内容的提问来源于stack exchange,提问作者Sheikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:47:55