Запутанные имена параметров интерфейса в библиотеке Gradle - PullRequest
0 голосов
/ 28 апреля 2018

Я сделал библиотеку с некоторыми интерфейсами (HybridMediaPlayer на github). Когда я импортирую его из Gradle в новый проект и использую эти интерфейсы, я получаю измененные имена параметров, такие как:

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

     }
});

Где "i" - это "причина", а "i1" - "currentWindowIndex". Почему это изменилось в другом проекте и как это исправить? Proguard отключен.

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Это может произойти по двум причинам:

1. Вы не включили никакую документацию в качестве артефакта в AAR

Если это так, то вам необходимо добавить следующие задачи в build.gradle AAR следующим образом:

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.

Примечание: Вам необходимо правильно задокументировать загрузку Javadoc в руководстве пользователя вашего AAR, чтобы пользователь вашего AAR знал, как преодолеть препятствие

0 голосов
/ 04 мая 2018

Решением для 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
}
0 голосов
/ 01 мая 2018

Я думаю, это связано с тем, что в репозитории Maven существует только библиотека архивов Android (AAR) и отсутствует файл jar исходного кода. AAR содержит только скомпилированные классы, а в скомпилированных классах полное имя переменной больше не известно. Поэтому, когда ваша IDE реализует метод, она больше не знает имен, поэтому по умолчанию используется стандартное именование на основе типов аргументов (отсюда i для целого числа).

Если вам нужны правильные имена переменных, вы должны опубликовать исходный файл вашего проекта, а также репозиторий Jitpack. Этот ответ может также предоставить способ опубликовать JAR-источник рядом с AAR. Когда также публикуется исходный файл jar, среда IDE будет использовать Gradle, чтобы также вставить исходный файл jar в проект, и будет использовать его при реализации методов для получения имен аргументов и тому подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...