用Android Studio将项目上传到JCenter和Maven Central遇到的一些问题及解决办法

大多数项目均可依照nuuneoi的教程How to distribute your own Android library through jCenter and Maven Central from Android Studio 成功上传到JCenter和Maven Central。
但是,如果你的项目中有第三方依赖关系,如在build.gradle中有
compile 'com.android.support:appcompat-v7:23.1.1'
那么在terminal中执行命令
./gradlew build
时,会有错误提示,提示找不到第三方依赖关系中的包的内容,无法生成javadoc。找到一篇分析的比较清楚的文章Android 项目打包到JCenter的坑,其中说到了javadoc无法生成的原因就是存在第三方依赖关系,但是按文中给出的gradle脚本执行,依然会报错。
后来我稍微琢磨了一下nuuneoi教程中给出的gradle脚本。生成javadoc的语句是
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
本人对gradle也知之甚少,但是经过多次尝试,将上述语句中task javadoc的内容删掉即可成功生成javadoc.jar
task javadoc(type: Javadoc) {
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
我想的是,这样一来,能够生成javadoc.jar,但是里面的内容应该为空吧,因为task javadoc内容为空。但是后来发现javadoc.jar中的内容并不为空( ̄ー ̄〃),但是也无所谓了。
如此一来,按照nuuneoi的教程,你的项目应该能顺利的上传到JCenter和Maven Central了。下面几个图是我成功上传到项目。
已经上传到JCenter的项目
已经上传到Maven Central的项目
将项目上传到JCenter的时候,有几个值得注意的点。
  • 同步到JCenter的项目的结构一定要符合格式要求。虽然Bintray团队回复说javadoc是optional,但是没有javadoc应该是通不过审核的。下图应该是正确的项目结构:含有 sources.jar,javadoc.jar, .aar文件和.pom文件

  • 如果你之前的项目的结构不符合要求,后来修改至符合要求了,再向Bintray团队提出审核申请,Bintray团队可能还是不会审核通过。这个时候,将原来的项目版本删掉,再上传一个新的项目版本(可能内容是一样的,这无所谓),然后提出审核申请,应该就能通过了。反正这是我经历过的问题,也是这样解决的。

评论

此博客中的热门博文

关于Google Play新打包格式aab(Android App Bundle)的调研简报

Android Studio中kapt调试annotation processor的一些注意事项