我创建了一个带有一些接口的库(github上的HybridMediaPlayer)。当我在新项目中从gradle导入它并使用这些接口时,我会更改参数名称,例如:
player.setOnPositionDiscontinuityListener(new ExoMediaPlayer.OnPositionDiscontinuityListener() {
@Override
public void onPositionDiscontinuity(int i, int i1) {
}
});
“i”是“reason”,“i1”是“currentWindowIndex”。 为什么在其他项目中改变它以及如何解决这个问题? Proguard被禁用。
答案 0 :(得分:2)
我认为这是因为Maven repo仅存在Android存档库(AAR)并且没有源jar。 AAR只包含已编译的类,在编译的类中,不再知道完整的变量名。因此,当您的IDE实现该方法时,它不再知道名称,因此它默认为基于参数类型的标准命名(因此i为整数)。
如果你想要正确的变量名,你应该将你的项目的源jar发布到Jitpack repo。 This回答可能提供了一种在AAR旁边发布源jar的方法。当还发布了源jar时,IDE将使用Gradle将源jar拉入项目,并在实现获取参数名称等方法时使用它。
答案 1 :(得分:1)
出现这种情况有两个原因:
<强> 1。您尚未在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
}
<强> 2。您已完成第1步
如果是这种情况,您需要通知android studio下载javaDoc
。将以下代码放在目标应用的主build.gradle
apply plugin: 'idea'
...
idea {
module {
downloadJavadoc = true
downloadSources = true
}
}
或者,您可以按照此SO通过android studio进行操作。
注意:您需要在AAR
的用户指南中正确记录Javadoc下载,以便AAR
的用户知道如何克服障碍
答案 2 :(得分:0)
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
}