我做了一个带一些接口的库(github上的HybridMediaPlayer)。当我在新项目中从gradle导入它并使用这些接口时,我得到了更改的参数名,例如:
player.setOnPositionDiscontinuityListener(new ExoMediaPlayer.OnPositionDiscontinuityListener() {
@Override
public void onPositionDiscontinuity(int i, int i1) {
}
});
其中“i”是“原因”,“i1”是“currentWindowIndex”。为什么在其他项目中更改了它以及如何修复它?Proguard 已禁用。
发生这种情况的原因有两个:
1.您没有将任何留档作为工件包含在您的AAR
中
如果是这种情况,则需要在AAR的<code>构建中添加以下任务。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下载< code>javaDoc。将以下代码放入目标应用程序的主< code>build.gradle中
apply plugin: 'idea'
...
idea {
module {
downloadJavadoc = true
downloadSources = true
}
}
或者,您可以按照此SO通过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
}
我认为这是因为在Maven repo上只存在一个Android归档库(AAR ),而没有源代码jar。AAR只包含编译过的类,在编译过的类中,完整的变量名不再为人所知。因此,当您的IDE实现该方法时,它不再知道名称,所以它默认为基于参数类型的标准命名(因此I代表整数)。
如果您想要正确的变量名,您应该将项目的源jar也发布到Jitpack repo。这个答案可能提供了一种在AAR旁边发布source jar的方法。当源jar也发布时,IDE将使用Gradle将源jar拉入项目,并在实现方法时使用它来获取参数名等。
在我简单的gradle构建中,我想使用暗影罐和ProGuard一起。我发现了一些例子,其中shadowJar任务的输出是proguard任务的输入,这很好地工作,但是在我的例子中,我希望首先创建一个小的模糊jar,首先我很好地指定库依赖关系,让proguard只关注我的代码,然后我想把它传递给shadowJar插件进行fatjar打包。 我的问题是shadowJar输出包含所有未混淆的库(fine
问题内容: 我以mysql映像为例,但是问题很普遍。 用于在docker中启动mysqld的密码在docker ps中不可见,但在docker inspect中可见: 有没有一种方法可以隐藏/混淆启动容器时传递的环境参数。或者,是否可以通过引用文件来传递敏感参数? 问题答案: 从文档http://docs.docker.com/reference/commandline/run/中 提取出来,您说
问题内容: 我有两组数据。现有客户和潜在客户。 我的主要目标是弄清楚是否有任何潜在客户已经是现有客户。但是,跨数据集的客户命名约定不一致。 现有客户 潜在客户 我想写一些如下所示的选择语句来达到我的目标: 结果如下所示: 我对Levenshtein距离和Double Metaphone的概念含糊其词,但我不确定如何在此处应用它。 理想情况下,我希望SELECT语句的JOIN部分读取类似以下内容:但
问题内容: 我几天前接受采访时,被问到这样的问题。 问:反向链接列表。给出以下代码: 我很困惑,因为我不知道接口对象可以用作方法参数。面试官解释了一下,但我仍然不确定。有人可以启发我吗? 问题答案: 实际上,这是使用接口的最常见和最有用的方法之一。该接口定义了一个契约,您的代码可以与实现该接口的任何类一起使用,而无需了解具体的类- 它甚至可以与编写代码时尚不存在的类一起使用。 Java标准API中
可以使用model('ModelName')->get($id)和model('ModelName')->all来生成数据的ORM封装对象。 $content = $model->get(1); //这里返回的是一个Record对象 $content->title = 'hello world'; //Update操作 $content->save(); //
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcpy(char *dest, const char *src); 其中src参数是传入参数,dest参数是传出参数。有些函数的指针参数同时担当了这两种角色,如select函数。其函数原型为: int