Android gradle库中模糊的接口参数名称

Android gradle库中模糊的接口参数名称,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我在github上创建了一个带有一些接口的库HybridMediaPlayer。当我在新项目中从gradle导入并使用这些接口时,我会更改参数名称,例如: player.setOnPositionDiscontinuityListener(new ExoMediaPlayer.OnPositionDiscontinuityListener() { @Override public void onPositionDiscontinuity(int i, int i1) {

我在github上创建了一个带有一些接口的库HybridMediaPlayer。当我在新项目中从gradle导入并使用这些接口时,我会更改参数名称,例如:

player.setOnPositionDiscontinuityListener(new ExoMediaPlayer.OnPositionDiscontinuityListener() {
     @Override
     public void onPositionDiscontinuity(int i, int i1) {

     }
});
其中i是原因,i1是currentWindowIndex。
为什么它在其他项目中被更改,以及如何修复它?Proguard已禁用

我认为这是因为在Android上,只有一个Android存档库AAR存在,没有源jar。AAR只包含已编译的类,而在已编译的类中,完整的变量名不再为人所知。因此,当IDE实现该方法时,它不再知道名称,因此它默认为基于参数类型的标准命名,因此i表示整数


如果需要正确的变量名,那么应该将项目的源jar发布到Jitpack repo。答案可能提供了一种在AAR旁边发布源jar的方法。当源jar也被发布时,IDE将使用Gradle将源jar拉入项目,并在实现获取参数名称等的方法时使用它。

出现这种情况的原因有两个:

一,。您还没有将任何文档作为工件包含在AAR中

如果是这种情况,则需要在AAR的build.gradle中添加以下任务,如下所示:

task javadoc(type: Javadoc) {

    description "Generates Javadoc for ${archivesBaseName}-${version} API"
    group JavaBasePlugin.DOCUMENTATION_GROUP

    title = "${archivesBaseName}-${version} API References"

    source android.sourceSets.main.java.srcDirs, configurations.doc.collect { zipTree(it) }
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))

    options {
        memberLevel = JavadocMemberLevel.PUBLIC
        linksOffline('http://developer.android.com/reference/', "${android.sdkDirectory}/docs/reference");
    }

    include '<path of your public api>/*.java'
    exclude '**/BuildConfig.java'
    exclude '**/R.java' 
    exclude '**/test/**/*.java'

    failOnError false
}

task androidJavadocsJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives androidJavadocsJar
}
或者,您也可以通过android studio按照此操作


注意:您需要在AAR的用户指南中正确地记录Javadoc下载,以便AAR的用户知道如何克服障碍

jitpack的解决方案是为接口添加Javadoc,并在lib gradle构建文件中:

// build a jar with source files
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    failOnError  false
    source = android.sourceSets.main.java.sourceFiles
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    classpath += configurations.compile
}

// build a jar with javadoc
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}
// build a jar with source files
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    failOnError  false
    source = android.sourceSets.main.java.sourceFiles
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    classpath += configurations.compile
}

// build a jar with javadoc
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}