打包jar
- 對(duì)項(xiàng)目執(zhí)行Make project,執(zhí)行操作后我們可以在build目錄下看到相關(guān)Class文件,在generated下看到AIDL文件生成的Class文件


-
配置Android library的build.gradle文件
task makeJar(type: org.gradle.api.tasks.bundling.Jar) { /** * 指定生成的jar名 */ baseName 'shopcart' /** * 從哪里打包c(diǎn)lass文件 */ from('build/intermediates/classes/debug/com/wz/cartlib') /** * 打包AIDL生成文件 */ from('build/generated/source/aidl/debug/com.wz.cartlib/') /** * 打包到j(luò)ar后的目錄結(jié)構(gòu) */ into('com/wz/cartlib/') /** * 去掉不需要打包的目錄和文件 */ exclude('BuildConfig.class', 'R.class') /** * 去掉R$開頭的文件 */ exclude { it.name.startsWith('R$'); } } /** 在終端執(zhí)行生成JAR包 gradlew makeJar * */ makeJar.dependsOn(clearJar,build) 通過AndroidStudio的命令終端執(zhí)行g(shù)radlew makeJar,等待出現(xiàn)BUILD SUCCESSFUL之后代表打包成功
打包成功后會(huì)在libary的build/libs目錄下生成jar包
-
帶有資源文件.aar文件
1.將aar包復(fù)制到lib目錄下
2.配置工程app的build.gradle文件中加入聲明
repositories { flatDir { dirs 'libs' } compile(name:'httputils-debug', ext:'aar') 在其他app中使用該aar文件時(shí)需要在該app的build.gradle文件的dependencies節(jié)點(diǎn)進(jìn)行aar庫(kù)build.gradle文件中依賴聲明
-
參考文章
http://blog.csdn.net/hard_working1/article/details/52639776
上傳Android libray 至JFrogBintray
-
注冊(cè)JForgBintray賬號(hào)
1.Jcentre官網(wǎng)企業(yè)用戶 https://bintray.com 個(gè)人版:https://bintray.com/signup/oss
image2.登錄Jcentre個(gè)人中心,在Originsation下創(chuàng)建Repository
imageimageRepository類似一個(gè)大的項(xiàng)目,在這個(gè)項(xiàng)目下可以容納多個(gè)子項(xiàng)目,子項(xiàng)目可以進(jìn)行版本控制 注冊(cè)成功后可以看到Repositroy主界面
-
配置Gradle相關(guān)文件
1.配置Android項(xiàng)目下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下創(chuàng)建bintray.properties文件配置Bintray相關(guān)信息
配置bintray賬號(hào)相關(guān)信息 bintray用戶名,不是登陸郵箱,是個(gè)人中心右上角顯示的名字 bintray.user=xiaozhu bintray的ApiKey bintray.apiKey=a1015537bc3d32d94dcdf455e60a0421edee43e2 bintray的Organization Id(組織Id) bintray.organizationId=xiaozhu 配置開發(fā)者信息 昵稱 developer.id=xiaozhu 姓名 developer.name=xiaozhu 郵箱 developer.email=zy1301529626@gmail.com3.在Module下創(chuàng)建project.properties文件配置project相關(guān)信息
倉(cāng)庫(kù)名稱,就是在bintray官網(wǎng)建立的倉(cāng)庫(kù)的名稱 project.repositoryName=maven 項(xiàng)目名稱 project.name=cartlib //注意:project名字 與 library名字一致 否則會(huì)出現(xiàn)上傳文件目錄結(jié)構(gòu)問題 項(xiàng)目組id project.groupId=com.wz.cartlib 項(xiàng)目id,一般同project.name project.artifactId=cartlib 打包類型 project.packaging=aar 項(xiàng)目官方網(wǎng)站地址 project.siteUrl=https://github.com/zy1301529626/MakerJcentre 項(xiàng)目git地址 project.gitUrl=https://github.com/zy1301529626/MakerJcentre.git 生成的javadoc名稱 javadoc.name=cartlib4.在Moudle下Gradle文件下配置打包上傳相關(guān)內(nèi)容
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()) } /** * 加載項(xiàng)目屬性文件 */ File projectPropertiesFile = project.file("project.properties"); if (projectPropertiesFile.exists()) { properties.load(projectPropertiesFile.newDataInputStream()) } /** * 讀取項(xiàng)目屬性 */ def projectRepositoryName = properties.getProperty("project.repositoryName") //倉(cāng)庫(kù)名稱 def projectName = properties.getProperty("project.name")//項(xiàng)目名稱 def projectGroupId = properties.getProperty("project.groupId")//項(xiàng)目Id def projectArtifactId = properties.getProperty("project.artifactId")//一般與項(xiàng)目名稱相同 def projectVersionName = android.defaultConfig.versionName //項(xiàng)目版本號(hào) def projectPackaging = properties.getProperty("project.packaging") //項(xiàng)目打包類型 def projectSiteUrl = properties.getProperty("project.siteUrl") //項(xiàng)目地址 def projectGitUrl = properties.getProperty("project.gitUrl") //項(xiàng)目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") //開發(fā)者Id def developerName = properties.getProperty("developer.name") //開發(fā)者名稱 def developerEmail = properties.getProperty("developer.email") //開發(fā)者email地址 def javadocName = properties.getProperty("javadoc.name") //javadoc名字 /** * 這句代碼一定要加否則會(huì)出現(xiàn)如下錯(cuò)誤 * 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文件的參數(shù) */ install { repositories.mavenInstaller { pom { project { name projectName //項(xiàng)目名 groupId projectGroupId //項(xiàng)目Id(一般為唯一包名) artifactId projectArtifactId //一般與項(xiàng)目名相同 version projectVersionName //項(xiàng)目版本號(hào) packaging projectPackaging //打包類型 url projectSiteUrl //項(xiàng)目地址 licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id developerId //開發(fā)者id name developerName //開發(fā)者名字 email developerEmail //開發(fā)者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賬號(hào)信息里面的Organization Id * repo為你創(chuàng)建的倉(cāng)庫(kù)名稱 * 如果上述兩個(gè)字段寫錯(cuò)了,則會(huì)出現(xiàn)下面類似的錯(cuò)誤 * 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 //代碼倉(cāng)庫(kù)Id name = projectName //項(xiàng)目名稱 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