美文网首页Android 学习资源Android知识Android开发
史上最详细教程-Android library 发布到JCent

史上最详细教程-Android library 发布到JCent

作者: peipeicn | 来源:发表于2016-08-30 17:22 被阅读291次

    1. Bintray账号

    Bintray网站 https://bintray.com/(需要翻墙)
    1.1 先注册账号(傻瓜式,非职业选手也能搞定)
    1.2 然后登陆账号
    1.3 点击your profile

    1.png

    1.4 点击Edit


    2.png

    1.5 点击API Key


    3.png

    1.6 将key复制下来保存,后边要用,然后回到网站首页


    4.png

    1.7 点击Add,建立仓库


    5.png

    1.8 填写信息,type选maven,其他随便写,然后create,之后会自己调到仓库页面


    6.png

    1.9 点击Add New Package创建Package


    7.png

    1.10 填写内容,带*为必填项,点击Create Package


    8.png

    1.11 点开Package后页面如下就ok了


    9.png

    2. 发布前配置信息

    2.1 在项目根目录的 local.properties 文件中添加 Bintray 的账号信息:

    bintray.user=用户名
    bintray.apikey=第一步获取到的API key
    

    2.2 在Project的build.gradle配置插件依赖

    buildscript {    
        dependencies {        
            classpath 'com.android.tools.build:gradle:2.1.3'                 
            classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'  
            classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'   
        }
    }
    

    这里要说一下遇到的坑,原来'com.github.dcendents:android-maven-gradle-plugin:1.4.1'写的是1.3
    执行的时候出现 Noservice of type Factory available in ProjectScopeServices
    这里找到解决办法,貌似是AS版本问题

    2.3 在model的build.gradle配置

    apply plugin: 'com.android.library'
    apply plugin: 'com.github.dcendents.android-maven'
    apply plugin: 'com.jfrog.bintray'
    
    version = "0.0.4"
    group = "com.peipei.ptool"
    def siteUrl = 'https://github.com/yadav-rahul/TastyToast' 
    def gitUrl = 'https://github.com/yadav-rahul/TastyToast.git'
    //compile 'com.facebook.rebound:rebound:0.3.8'
    //这里的version就是上边rebound后边的版本号
    //group就是com.facebook.rebound
    //siteUrl 项目主页
    //gitUrl 项目的git地址
    
    android {
        compileSdkVersion 24
        buildToolsVersion "24.0.0"
    
        defaultConfig {
            minSdkVersion 9
            targetSdkVersion 24
            versionCode 4
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
             }
         }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:24.1.1'
        compile 'com.facebook.rebound:rebound:0.3.8
    }
    
    install {
        repositories.mavenInstaller {
            pom {
                project {
                    packaging 'aar'// 打包的类型
                    name 'ptool'//项目名称
                    description '描述'// 项目的描述
                    url siteUrl// 项目的主页
                    // 配置开源证书信息
                    licenses {
                        license {
                            name 'The Apache software License, Version 2.0'
                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    // 配置开发者信息
                    developers {
                        developer {
                            id ''
                            name 'peipei'
                            email '****@gmail.com'
                         }
                    }
                    // 软件配置管理信息
                    scm {
                        connection gitUrl
                        developerConnection gitUrl
                        url siteUrl
                     }
                 }
            }
        }
    }
    //生成对应的source.jar
    task sourcesJar(type: Jar) {
        from android.sourceSets.main.java.srcDirs
        classifier = 'sources'
    }
    //生成java doc文件
    task javadoc(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
        failOnError false
        // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
    }
    //生成对应的javadoc.jar
    task javadocJar(type: Jar, dependsOn: javadoc) {
        classifier = 'javadoc'
        from javadoc.destinationDir
    }
    
    artifacts {
        archives javadocJar
        archives sourcesJar
    }
    // 读取配置的bintray用户的信息
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    // 配置bintray的信息
    bintray {
        user = properties.getProperty("bintray.user")
        key = properties.getProperty("bintray.apikey")
        configurations = ['archives']
        pkg {
            repo = "***"//在bintray上边建立的仓库名字
            name = "****"//在bintray上Package名字
            websiteUrl = siteUrl
            vcsUrl = gitUrl
            labels = ['android'] // 设置标签
            licenses = ["Apache-2.0"]
            publish = true
        }
    }
    //javadoc生成的时候使用GBK编码,而项目使用的UTF-8编码。就需要加入以下代码
    javadoc {
        options{
            encoding 'UTF-8'
            charSet 'UTF-8'
            author true
        }
    }
    

    配置完成后调用 Gradle 命令上传即可:
    Terminal 输入 gradlew bintrayUpload

    3. 同步到JCenter

    10.png

    点击Add to JCenter,等审核通过就可以用了

    11.png

    在Package页面可以找到 compile 'com.peipei.ptool:ptool:1.0.0'


    12.png

    这样就将library传到了JCenter

    4. 可能的坑

    1. HTTP/1.1 409 Conflict
      版本存在

    2. java.net.SocketException: Software caused connection abort: socket write error
      翻墙吧

    推荐一个比较简单的方法【Android】5分钟发布Android Library项目到JCenter 使用的是android-library-publish-to-jcenter,android-library-publish-to-jcenter已经将需要写的脚本封装好了,我们只需要配置相关属性即可在5分钟之内发布我们的项目到JCenter(不包括审核时间哦)

    相关文章

      网友评论

        本文标题:史上最详细教程-Android library 发布到JCent

        本文链接:https://www.haomeiwen.com/subject/fehxettx.html