sources.jar 不适用于混淆的 AAR 库

问题描述 投票:0回答:0

我正在尝试为闭源 AAR 发布 sources.jar,但 android studio 没有选择它来突出显示 API。

据我所知,这应该是可能的,但我找不到我做错了什么。

库的build.gradle:

apply plugin: 'com.android.library'

apply from: 'my-maven-publish.gradle'

android {
...
    buildTypes {
        def buildChecksumString = "\"" + rootProject.ext.buildSha + "\""
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'self-proguard-rules.pro'

            buildConfigField "String", "BUILD_CHECKSUM", buildChecksumString
            resValue "string", "mylib_version", version
        }
    }
...
}

包含的“my-maven-publish.gradle”:

apply plugin: 'maven-publish'
apply plugin: 'signing'

...
task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "sources"
    archiveClassifier.set("sources")
    include("**/SDK.java",
            "**/SDKListener.java") // and some other public classes
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                ...

                artifact(sourceJar)

                pom {
                  ...
                }
            }
        }
    ...
}

proguard 配置文件保留了这些公共类,看起来像:

-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, Annotation, *Annotation*, EnclosingMethod, PermittedSubclasses

# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames, includedescriptorclasses class * {
    native <methods>;
}
...
-keep, includedescriptorclasses class com.my.library.SDK { *; }
-keep interface com.my.library.SDKListener { *; }
# etc. for some other public classes
...

SDK.java 仅包含公共静态方法和少量内部静态类。 SDK类实际上就像一个代理,它的所有方法都调用SDKInternal类的方法(包含私有的东西)。

我看到 Android Studio 下载了 xxx-sources.jar 就这样。 API 没有用文档突出显示,我得到的只是 Cmd + click 上的反编译类。

你能告诉我错误是什么吗? 🙏

附言

我正在使用 Java,gradle 文件在 Groovy 中。

摇篮是 7.1.1

AGP 是 4.1.0

代码使用 R8 混淆。

android maven gradle android-gradle-plugin aar
© www.soinside.com 2019 - 2024. All rights reserved.