我是靠谱客的博主 温柔摩托,最近开发中收集的这篇文章主要介绍Android组件化之JFrog公共上传AndroidStudio打包Jar/上传library到JFrog Bintray,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

AndroidStudio打包Jar/上传library到JFrog Bintray

打包jar

  • 对项目执行Make project,执行操作后我们可以在build目录下看到相关Class文件,在generated下看到AIDL文件生成的Class文件

    image

    image

  • 配置Android library的build.gradle文件

    task makeJar(type: org.gradle.api.tasks.bundling.Jar) {
    /**
    * 指定生成的jar名
    */
    baseName 'shopcart'
    /**
    * 从哪里打包class文件
    */
    from('build/intermediates/classes/debug/com/wz/cartlib')
    /**
    * 打包AIDL生成文件
    */
    from('build/generated/source/aidl/debug/com.wz.cartlib/')
    /**
    * 打包到jar后的目录结构
    */
    into('com/wz/cartlib/')
    /**
    * 去掉不需要打包的目录和文件
    */
    exclude('BuildConfig.class', 'R.class')
    /**
    * 去掉R$开头的文件
    */
    exclude { it.name.startsWith('R$'); }
    }
    /**
    在终端执行生成JAR包 gradlew makeJar
    *
    */
    makeJar.dependsOn(clearJar,build)
  • 通过AndroidStudio的命令终端执行gradlew makeJar,等待出现BUILD SUCCESSFUL之后代表打包成功

  • 打包成功后会在libary的build/libs目录下生成jar包

  • 带有资源文件.aar文件
    1.将aar包复制到lib目录下
    2.配置工程app的build.gradle文件中加入声明

    epositories {
    flatDir {
    dirs 'libs'
    }
    compile(name:'httputils-debug', ext:'aar')
  • 在其他app中使用该aar文件时需要在该app的build.gradle文件的dependencies节点进行aar库build.gradle文件中依赖声明

  • 参考文章

    http://blog.csdn.net/hard_working1/article/details/52639776

上传Android libray 至JFrogBintray

  • 注册JForgBintray账号

    1.Jcentre官网企业用户 https://bintray.com 个人版:https://bintray.com/signup/oss
    image
    2.登录Jcentre个人中心,在Originsation下创建Repository

    image

    image

    Repository类似一个大的项目,在这个项目下可以容纳多个子项目,子项目可以进行版本控制 注册成功后可以看到Repositroy主界面

  • 配置Gradle相关文件

    1.配置Android项目下Gradle文件

    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' //用于打包Maven所需文件
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' //用于上传Maven生成的文件到Bintray
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1" //用于上传JFrog Artifactory本地
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    }
    }

    2.在Module下创建bintray.properties文件配置Bintray相关信息

    配置bintray账号相关信息
    bintray用户名,不是登陆邮箱,是个人中心右上角显示的名字
    bintray.user=xiaozhu
    bintray的ApiKey
    bintray.apiKey=a1015537bc3d32d94dcdf455e60a0421edee43e2
    bintray的Organization Id(组织Id)
    bintray.organizationId=xiaozhu
    配置开发者信息
    昵称
    developer.id=xiaozhu
    姓名
    developer.name=xiaozhu
    邮箱
    developer.email=zy1301529626@gmail.com

    3.在Module下创建project.properties文件配置project相关信息

    仓库名称,就是在bintray官网建立的仓库的名称
    project.repositoryName=maven
    项目名称
    project.name=cartlib //注意:project名字 与 library名字一致 否则会出现上传文件目录结构问题
    项目组id
    project.groupId=com.wz.cartlib
    项目id,一般同project.name
    project.artifactId=cartlib
    打包类型
    project.packaging=aar
    项目官方网站地址
    project.siteUrl=https://github.com/zy1301529626/MakerJcentre
    项目git地址
    project.gitUrl=https://github.com/zy1301529626/MakerJcentre.git
    生成的javadoc名称
    javadoc.name=cartlib

    4.在Moudle下Gradle文件下配置打包上传相关内容

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
/**
* 加载bintray属性文件
*/
Properties properties = new Properties()
File localPropertiesFile = project.file("bintray.properties");
if (localPropertiesFile.exists()) {
properties.load(localPropertiesFile.newDataInputStream())
}
/**
* 加载项目属性文件
*/
File projectPropertiesFile = project.file("project.properties");
if (projectPropertiesFile.exists()) {
properties.load(projectPropertiesFile.newDataInputStream())
}
/**
* 读取项目属性
*/
def projectRepositoryName = properties.getProperty("project.repositoryName") //仓库名称
def projectName = properties.getProperty("project.name")//项目名称
def projectGroupId = properties.getProperty("project.groupId")//项目Id
def projectArtifactId = properties.getProperty("project.artifactId")//一般与项目名称相同
def projectVersionName = android.defaultConfig.versionName //项目版本号
def projectPackaging = properties.getProperty("project.packaging") //项目打包类型
def projectSiteUrl = properties.getProperty("project.siteUrl") //项目地址
def projectGitUrl = properties.getProperty("project.gitUrl")
//项目git地址
/**
* 读取bintray属性
*/
def bintrayUser = properties.getProperty("bintray.user")
//bintray用户名
def bintrayApikey = properties.getProperty("bintray.apiKey") //bintray Api Key
def bintrayOrganizationId = properties.getProperty("bintray.organizationId") //组织Id
def developerId = properties.getProperty("developer.id") //开发者Id
def developerName = properties.getProperty("developer.name") //开发者名称
def developerEmail = properties.getProperty("developer.email") //开发者email地址
def javadocName = properties.getProperty("javadoc.name") //javadoc名字
/**
* 这句代码一定要加否则会出现如下错误
* Could not upload to 'https://api.bintray.com/content/coolcode/maven/LibUiBase/1.0.0/CommonLibrary/LibUiBase/1.0.0/LibUiBase-1.0.0.pom': HTTP/1.1 400 Bad Request [
message:Unable to upload files: Maven group, artifact or version defined in the pom file do not match the file path 'CommonLibrary/LibUiBase/1.0.0/LibUiBase-1.0.0.p
om']
*/
group = projectGroupId
/**
* 配置生成POM.xml文件的参数
*/
install {
repositories.mavenInstaller {
pom {
project {
name projectName //项目名
groupId projectGroupId //项目Id(一般为唯一包名)
artifactId projectArtifactId //一般与项目名相同
version projectVersionName //项目版本号
packaging projectPackaging //打包类型
url projectSiteUrl
//项目地址
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id developerId //开发者id
name developerName //开发者名字
email developerEmail //开发者email地址
}
}
scm {
connection projectGitUrl
developerConnection projectGitUrl
url projectSiteUrl
}
}
}
}
}
/**
* 生成sources.jar
*/
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))
}
/**
* 生成javadoc.jar
*/
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
/**
* javadoc的配置
*/
javadoc {
options {
encoding "UTF-8"
charSet 'UTF-8'
author true
version projectVersionName
links "http://docs.oracle.com/javase/7/docs/api"
title javadocName
}
}
/**
* userOrg为bintray账号信息里面的Organization Id
* repo为你创建的仓库名称
* 如果上述两个字段写错了,则会出现下面类似的错误
* Could not create package 'huangxuanheng/maven/fragmentstack': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]
*
*/
bintray {
user = bintrayUser
key = bintrayApikey
configurations = ['archives']
pkg {
userOrg = bintrayUser //组织Id
repo = projectRepositoryName
//代码仓库Id
name = projectName //项目名称
websiteUrl = projectSiteUrl
vcsUrl = projectGitUrl
licenses = ['Apache-2.0']
publish = true
}
}

5.在Terminal窗口下收入如下指令上传到Bintray

gradlew install
gradlew bintrayUpload
  • 参考文章

    1.http://blog.csdn.net/huang_cai_yuan/article/details/53215131

    2.http://blog.csdn.net/lmj623565791/article/details/51148825

最后

以上就是温柔摩托为你收集整理的Android组件化之JFrog公共上传AndroidStudio打包Jar/上传library到JFrog Bintray的全部内容,希望文章能够帮你解决Android组件化之JFrog公共上传AndroidStudio打包Jar/上传library到JFrog Bintray所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部