本文共 3702 字,大约阅读时间需要 12 分钟。
作为开发人员,分享今天学习的经验:将Library Module上传至Jcenter,有两种常用的方法。第一种是直接使用GRADLE工具上传,第二种则是通过封装成GRADLE插件的方式向Jcenter发布。下面我将详细记录我的实践和探索过程。
首先,需要报名一个Jcenter账号。如果你还没有账号,前往Jcenter官网进行注册。注册完成后,我会指导你配置必要的开发环境,确保后续操作顺利进行。
在开始上传之前,你需要一个已经编译成功的Module。如果你还没有Module,可以新建一个简单的项目,先进行构建测试。请注意,普通Module与特定Module(如App Module)存在差异。
applicationId
,而普通App Module中包含包名']['applicationId']。以下是项目根目录(即build.gradle
)中必须配置的部分,确保工具能够识别并上传Module。
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' // Pagination插件 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' // Maven插件 classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' // Bintray插件 classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.0" // Build信息处理插件 }}allprojects { repositories { jcenter() }}// 查看完整配置,在`/用户 hasteBSDir/ext Demonstrate ext declines
为了集成插件,确保插件版本与GRADLE版本匹配。例如,如果使用GRADLE 2.1.2,对应的插件版本为1.3。如果使用其他版本,可能会出现编译错误。
接下来的步骤需要你配置开发环境中的环境变量。我们需要在local.properties
文件中添加几个关键参数:
BINTRAY_USER=用户名BINTRAY_KEY=API密钥
将这些信息直接放入local.properties
文件即可。这个文件位于Module的根目录下,以避免信息泄露(unlike build.gradle文件)。local.properties
除了用于存储Jcenter的API信息外,本地开发中可能还需要存储Android SDK路径等必要配置。
在开始上传之前,请确保你的Module已经被正确构建并包含了必要的依赖。在build.gradle
中添加下述内容,将依赖项和插件应用到你的Module:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])}apply plugin: 'com.github.dcendents.android-maven'apply plugin: 'com.jfrog.bintray'def libname = 'your_lib_name' // 项目名称def libdesc = '描述信息'version = rootProject.ext.versiongroup = rootProject.ext.group// 查看完整代码示例
添加Javadoc生成和源代码打包任务,确保项目文件符合Jcenter要求:
task sourcesJar(type: Jar) { source = android.sourceSets.main.java.srcDirs classifier = 'sources'}task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) options { encoding = 'UTF-8' charSet = 'UTF-8' show.version = true show.authors = true verbose = false failOnError = false // 避免因验证错误终止构建 }}task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir}task copyDoc(type: Copy) { from "${buildDir}/docs/" into "docs/"}artifacts { archives javadocJar archives sourcesJar}
确保POM.xml文件包含项目的详细信息,如:
< packaging>: 需要确保为aar格式 < name>: 项目名称 < url>: 项目访问地址 < license>: 项目授权信息 < developer>: 开发者信息 < scm>: 记录开发过程
在终端运行以下命令,将Module上传至Jcenter:
gradle bintrayUpload
完成上传后,访问Jcenter官网,进入Maven库列表,点击你发布的项目磁�偶即可查看项目详情。按照提示完成发布流程,通常只需填写摘要信息即可完成。
在实际操作中,可能会遇到以下问题:
Java: ... Unicode code point U+resse_CANNOT_BE_CONVERTED_U_2192
UTF-8
:task javadoc(type: Javadoc) { options.encoding "UTF-8" options.charSet 'UTF-8'}
Gradle.bat
无法访问目录或文件Android { lintOptions { abortOnError false }}
allprojects { repositories { jcenter() } tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') }}
local.properties
文件中包含正确的BINTRAY_USER
和BINTRAY_KEY
信息。ext
中声明即可更换。整个流程可能需要一天才能完成,但第二次发布会变得相对简单。在这个过程中,遇到问题记得查看日志,逐步排查解决。如果你还是会卡壳,不妨参考相关文档或寻求社区帮助。希望这篇文章能为你的上传过程提供有价值的参考。
转载地址:http://qggyk.baihongyu.com/