Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio發布到Jcenter

Android Studio發布到Jcenter

編輯:關於Android編程

1.前言

擁抱開源,熱愛開源,將我們認為不錯的代碼開源到gihtub,將我們的庫發布到jcenter\mevan等。

2.准備工作

2.1 准備

申請倉庫賬號 注意model為android library項目

2.2 插件引入

在根目錄的gradle文件下加入

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
        classpath 'com.github.dcendents:android-maven-plugin:1.2'

個人認為這1個最好保持一直。
最後我們根目錄下的gradle文件變成這個樣子

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
        classpath 'com.github.dcendents:android-maven-plugin:1.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2.3 在根目錄下創建一個bintray.gradle文件(必須這名字)

group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID

apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += configurations.compile
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

javadoc {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
        title PROJ_ARTIFACTID
    }
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

def pomConfig = {
    licenses {
        license {
            name "The Apache Software License, Version 2.0"
            url "http://www.apache.org/licenses/LICENSE-2.0.txt"
            distribution "repo"
        }
    }
    developers {
        developer {
            id DEVELOPER_ID
            name DEVELOPER_NAME
            email DEVELOPER_EMAIL
        }
    }
    //這裡有引號,並且有個空格,否則生成不了依賴,主要是這裡的dependencies並不是build.gradle裡的dependencies,而gradle會把他當成自身的dependencies處理
    "dependencies " {
//        dependency{
//            groupId "com.alibaba"
//            artifactId "fastjson"
//            "version " "1.2.6"
//            //同dependencies
//        }
    }

}

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifactId PROJ_ARTIFACTID

            pom{
                packaging 'aar'
            }
            pom.withXml {
                def root = asNode()
                root.appendNode('description', PROJ_DESCRIPTION)
                root.children().last() + pomConfig
            }
        }
    }
}

bintray {
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())

    user = properties.getProperty('BINTRAY_USER');
    key = properties.getProperty('BINTRAY_KEY');



    configurations = ['archives']
    publications = ['mavenJava']
    publish = true

    pkg {
        repo = 'maven'
        name = PROJ_NAME
        desc = PROJ_DESCRIPTION
        websiteUrl = PROJ_WEBSITEURL
        issueTrackerUrl = PROJ_ISSUETRACKERURL
        vcsUrl = PROJ_VCSURL
        licenses = ['Apache-2.0']
        publicDownloadNumbers = true
    }
}

上述文件幾乎不用修改,假如你將要上傳的包 包含其他的三方庫。在以下塊中進行申明

"dependencies " {
//        dependency{
//            groupId "com.alibaba"
//            artifactId "fastjson"
//            "version " "1.2.6"
//            //同dependencies
//        }
    }

通俗易懂,一目了然,就不多做解釋了。

2.4 剩余配置

在Model對應的gralde文件中配置簽名\引入bintray.gradle,最終代碼如下,如看不懂配置相關,閱讀這篇 或者自行閱讀gradle for android

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    signingConfigs {
        config {
            keyAlias 'guolei'
            keyPassword '123456'
            storeFile file('guolei.jks')
            storePassword '123456'
        }
    }
    defaultConfig {
        applicationId "com.gl.draggridview"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //compile 'com.android.support:appcompat-v7:23.1.1'

}
apply from:'../bintray.gradle'

注意bintray.gradle 一定要放在文件最下面。

配置BINTRAY_KEY 和BINTRAY_USER 也就是一開始注冊的那個
這裡寫圖片描述
guolei1130 為我的用戶名,查看key 點擊edit,
這裡寫圖片描述
點api key ,show 即可看到。
在根目錄下的local.properties 配置。
BINTRAY_KEY=e21c3f96df17xxxxxxxx
BINTRAY_USER=guolei1130

這裡對應的是bintray.gradle中的這一段代碼,當然,你可以修改這段代碼,將這2個屬性寫在任意位置

Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())

    user = properties.getProperty('BINTRAY_USER');
    key = properties.getProperty('BINTRAY_KEY');

最後,sync now。

3.上傳前准備

3.1 生成aar 包(上傳)

這裡寫圖片描述
build,生成對應的aar包。

3.2 生成jardocjar sourcesjar

在model 對應的other task中,找到上面2個,點擊生成 一般不慧出錯

3.3 在publish中點擊task生成pom文件

這裡寫圖片描述
點擊第二個即可

3.4 上傳

點擊上圖中的第一個task,如果出錯,根據錯誤排查即可,一般就是身份驗證的相關問題。

4. 導入的jcenter(需經過審核)

這裡寫圖片描述
這個mevan倉庫就是我剛才上傳的,但是我們需要將他導入到jcenter 中,點擊jcenter.點擊有側導入,篩選將要導入的庫,等待管理員審核即可。
這裡寫圖片描述

5. 最後來看下我的庫

github地址,求個star
最後來張圖證明我是剛剛上傳的。
這裡寫圖片描述

沒錯,就是這麼so easy.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved