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

开启ProGuard(R8)混淆后,Maven本地仓库已发布源码在AS中不可见

问题解决:开启混淆后IDE无法查看闭源库的源码文档

当minifyEnabled true时,即使已打包sources.jar并配置ProGuard保留公共API,IDE仍无法显示文档,核心原因是混淆过程丢失了源码关联所需的关键属性,或sources Jar的构建/发布配置存在偏差。以下是针对性修复方案:


1. 补充ProGuard属性保留规则

在ProGuard规则文件中添加以下配置,确保IDE能建立混淆后字节码与原始源码的关联:

// 保留源码文件名和行号信息,用于IDE映射源码
-keepattributes SourceFile,LineNumberTable

// 确保公共API的类、构造方法、公共成员完整保留(需覆盖所有目标类)
-keep public class com.example.app.MyClass {
    public <init>();
    public <methods>;
    public <fields>;
}
-keep public class com.example.app.MyOtherClass {
    public <init>();
    public <methods>;
    public <fields>;
}

2. 固定sources Jar的源码目录

修改androidSourcesJar任务,直接指定原始源码根目录,避免依赖可能被AGP动态修改的sourceSets路径:

def listOfPublicApiFiles = [
        '/com/example/app/MyClass.java',
        '/com/example/app/MyOtherClass.java',
]

task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    include(listOfPublicApiFiles)
    includeEmptyDirs = false
    // 直接指向原始源码目录,避免AGP混淆后的路径影响
    from project.file('src/main/java')
    // 确保任务在源码编译完成后执行
    dependsOn tasks.compileJava
}

3. 调整发布配置,确保sources artifact正确关联

修改publishing块,显式绑定sources artifact并确保分类器声明正确:

publishing {
    publications {
        standardRelease(MavenPublication) {
            groupId = 'com.company'
            artifactId = "myartifact"
            
            afterEvaluate {
                from components.standardRelease
                // 明确指定sources artifact的分类器,保证POM文件正确识别
                artifact androidSourcesJar {
                    classifier 'sources'
                }
            }
        }
    }
    // 强制发布任务依赖sources Jar的构建任务
    tasks.withType(PublishToMavenRepository) {
        dependsOn androidSourcesJar
    }
}

验证步骤

  1. 重新构建并发布库到本地/远程Maven仓库
  2. 在依赖库的项目中同步Gradle,尝试查看公共API的文档(按F1)
  3. 检查发布的Maven目录,确认sources.jar存在且POM文件包含<classifier>sources</classifier>的artifact声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:45:29