文档章节

使用Android Studio 配置Gradle 搭建远端仓库

Dean_King
 Dean_King
发布于 2016/11/01 17:45
字数 928
阅读 182
收藏 1

以前我自己整理的工具类会打一个jar包,然后到处复制。自从IDE换到AS后,使用gradle导入其他工程,只要简单的一行代码,甚至还有界面化搜索功能,实在是好用的很,所以最近整理了一些工具类就想做成这种方式。于是查了些资料得知,JCenter现在是Android Studio中repositories的默认节点,所以要把项目上传到JCenter这个远端仓库,https://bintray.com/网站管理着JCenter仓库。

由于上传项目时,遇到了一些小问题,我根据网上的资料,整理一下这个过程。

配置Gradle

Module的build.gradle:

apply plugin: 'com.android.library' //把application改成library

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        //applicationId "包名"  //需要注释掉applicationId,因为在rebuild的时候报错,具体原因可能是因为第一行改成library的原因,不是很清楚。
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 1
        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:23.3.0'
    compile 'com.android.support:design:23.3.0'
}

//以上部分基本是由IDE生成

//添加插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

//定义版本
version = "0.0.1"

//定义相当网站
def siteUrl = 'https://github.com/gitusername/projectname'    // project homepage
def gitUrl = 'https://github.com/gitusername/projectname.git' // project git

//定义GROUP
group = "包名"

//定义pom并打包aar
install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                name ''//一些描述
                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 ''
                        email ''
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

//打包javadocjar和sourcejar
task sourcesJar(type: Jar) {
    from 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))
}

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

javadoc {
    options{
        encoding 'UTF-8'
        charSet 'UTF-8'
        author true
    }
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

//上传到maven仓库,从local.properties读取user和apikey
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo = "maven"  //在网站上创建的仓库名,在https://bintray.com/上注册完帐号时,已经有了一个组织(organization),但是没有仓库(Repositories),需要自己先创建一个仓库
        name = "projectname"                // project name in maven
        userOrg = ''  //组织名
        //这里是困我最长时间的地方,网站上创建组织(organization)时组织名称不能与用户名(user)相同
        //而在上传的时候,默认路径是user/repo/name 正确的位置应该是organization/repo/name
        //由于默认使用user,所以上传时一直报404错误
        //网上的几个资料都没有指出配置userOrg,我自然也不知道用什么字段可以指定正确路径
        //由于我猜测字段是organization,然后报了错,并提示了一个网址,于是通过这个网址找到了bintray的GITHUB项目(https://github.com/bintray/gradle-bintray-plugin),找到了相关配置
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

Module的build.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.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        //添加下边这两句
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

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

local.properties:

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/Users/dean/Dev/bak/adt-bundle-mac-x86_64-20140702/sdk

bintray.user=      //网站用户名  如果报401错误,可能是user或者apikey写错了
bintray.apikey=    //登录网站后,找到编辑简介(Edit Profile)-> API Key

Rebuild一下,使用命令行(AS自带)上传:

gradlew bintrayUpload

 

上传成功后,在网站(https://bintray.com)自己创建的仓库里找到上传的项目,在项目详情中找到"Add to JCenter" ,等待审核通过。

© 著作权归作者所有

Dean_King
粉丝 3
博文 11
码字总数 6737
作品 0
海淀
私信 提问
AndroidStudio使用问题记录

问题: Gradle sync failed: Connection timed out: connect Consult IDE log for more details (Help | Show Log) (23 s 591 ms) 问题原因: Androidstudio的网络通信被网络防火墙阻止了,导......

黑灯瞎火走夜路
2018/12/21
0
0
Android Studio下载Gradle时会出现的问题

Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。 当我们打开一个别人的项目或者更新...

淡日临窗
2017/11/09
0
0
Android 尝试解决 Gradle 升级时 offline mode 类型问题

小菜每次升级 AndroidStudio 和 Gradle 都倍感头疼,没有梯子真的好痛苦,这次小菜从 2.3.3 升级到 3.1.4 版本,被 Gradle 的 offline modle 问题困扰了很久,现在整理一下小菜的处理方式。 ...

阿策神奇
2018/08/14
0
0
AS 升级之Gradle's dependency cache may be corrupt问题解决办法

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/60589629 问题: 今天,发现自己的AndroidStudio可以升...

紫雾凌寒
2017/03/06
0
0
Android批量打包-如何一秒内打完几百个apk渠道包

在国内Android常用渠道可能多达几十个,如: 谷歌市场、腾讯应用宝、百度手机助手、91手机商城、360应用平台、豌豆荚、安卓市场、小米、魅族商店、oppo手机、联想乐商、中兴汇天地、华为、安...

SuShine
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

蚂蚁区块链BaaS:开放在云端,落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的...

阿里云官方博客
28分钟前
3
0
Idea cannot access【好使】

Idea中无法访问类中public方法。。 解决: idea点击左下角电脑图标,打开右边栏各种功能键 右边栏Maven Projects中点一下刷新,就是那个两个蓝的箭头组成的环 ----------------------------...

Airship
29分钟前
3
0
Spark内置图像数据源初探

作者:林武康,花名知瑕, 阿里巴巴计算平台事业部EMR团队的高级开发工程师,Apache HUE Contributor, 参与了多个开源项目的研发工作,对于分布式系统设计应用有较丰富的经验,目前主要专注于...

阿里云云栖社区
29分钟前
1
0
【面试被虐】游戏中的敏感词过滤是如何实现的?

小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了以下事情的发生….. 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过...

爱编程的浪子
32分钟前
4
0
springboot之maven属性引入

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><delimiters><delimite......

Online_Reus
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部