Android gradle库中模糊的接口参数名称
我在github上创建了一个带有一些接口的库HybridMediaPlayer。当我在新项目中从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) {
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
}