編輯:關於Android編程
android-library-publish-to-jcenter是一個幫助Android開發者將AAR庫發布到jcenter的項目,android-library-publish-to-jcenter已經將需要寫的腳本封裝好了,我們只需要配置相關屬性即可在5分鐘之內發布我們的項目到JCenter(不包括審核時間哦)
Bintray是jcenter的托管商,因此你必須注冊一個Bintray賬號,注冊完賬號後記下你的用戶名以及API Key。
登陸後在首頁右上角點擊用戶名進入個人主頁,然後點擊用戶名下面的Edit進入個人信息編輯頁面,接下來點擊頁面左邊列表的最後一項API Key
如圖所示點擊最右邊箭頭指示的復制按鈕即可復制你的API Key
首先你要檢查你的Android插件的版本,因為1.1.0版本有一個BUG會導致生成javadoc失敗,所以你只需升級到最新即可。目前最新版本是1.2.3,在項目根目錄下的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.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
如果你在看到這篇文章的時候有更新的版本的話,直接改為最新的版本即可。
在項目根目錄下build.gradle文件中的dependencies節點中追加如下代碼:
classpath 'com.github.dcendents:android-maven-plugin:1.2'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
android-maven-plugin插件是用來打包Maven所需文件的
gradle-bintray-plugin插件是用來將生成的Maven所需文件上傳到Bintray的
完成後如下所示:
// 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.2.3'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
下載project.properties文件並放到你的library module目錄下
project.properties文件的原始內容如下:
#project
project.name=
project.groupId=
project.artifactId=
project.packaging=aar
project.siteUrl=
project.gitUrl=
#javadoc
javadoc.name=
詳解:
project.name:項目名稱 project.groupId:項目組ID,通常情況下如果你的包名為com.example.test,那麼項目組ID就是com.example project.artifactId:項目ID,通常情況下如果你的包名為com.example.test,那麼項目ID就是test project.packaging:包類型,Android庫是aar project.siteUrl:項目官方網站的地址,沒有的話就用Github上的地址,例如:https://github.com/xiaopansky/Sketch project.gitUrl:項目的Git地址,例如:https://github.com/xiaopansky/Sketch.git javadoc.name:生成的javadoc打開後主頁顯示的名稱,通常跟項目名稱一樣即可
完成配置後如下所示:
#project
project.name=Sketch
project.groupId=me.xiaopan
project.artifactId=sketch
project.packaging=aar
project.siteUrl=https://github.com/xiaopansky/Sketch
project.gitUrl=https://github.com/xiaopansky/Sketch.git
#javadoc
javadoc.name=Sketch
你無需配置項目版本,會自動從你的build.gradle中獲取版本名稱作為項目版本
下載local.properties文件並放到你的library module目錄下
local.properties文件的原始內容如下:
#bintray
bintray.user=
bintray.apikey=
#developer
developer.id=
developer.name=
developer.email=
詳解:
bintray.user:你的Bintray的用戶名 bintray.apikey:你的的Bintray的API Key developer.id:通常是你在開源社區的昵稱 developer.name:你的姓名 developer.email:你的郵箱
完成配置後如下所示:
#bintray
bintray.user=xiaopansky
bintray.apikey=*****************************
#developer
developer.id=xiaopan
developer.name=********
[email protected]
*號顯示的為個人信息不反方便透露,還請見諒
注意要將local.proerties文件加入忽略列表,以免被提交到Github或其他網站洩露個人信息
修改你的library module的build.gradle文件,在最後加上apply from: "https://raw.githubusercontent.com/xiaopansky/android-library-publish-to-jcenter/master/bintrayUpload.gradle"
,如下所示:
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 22
versionCode 100
versionName "1.0.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
apply from: "https://raw.githubusercontent.com/xiaopansky/android-library-publish-to-jcenter/master/bintrayUpload.gradle"
首先下載bintrayUpload.gradle文件並放到你的library module目錄下
然後修改你的library module的build.gradle文件,在最後加上apply from: "bintrayUpload.gradle"
,如下所示:
apply plugin: 'com.android.library'
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 22
versionCode 100
versionName "1.0.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
apply from: "bintrayUpload.gradle"
推薦大家使用第一種方案,簡單快捷,至此配置工作已全部結束
打開終端進入項目目錄下,執行gradlew bintrayUpload
命令即可
另外,如果你的本地已經配置了Gradle了,那麼執行gradle bintrayUpload
命令也可以。gradlew是Gradle的一層封裝,如果你本地沒有安裝Gradle gradlew就會自動下載Gradle
前面所有步驟走完之後實際上只是上傳了你的項目到Bintray而已,並沒有被包含在jcenter中,要想提交到jcenter中還需要Bintray的審核。
登入Bintray網站,進入個人中心,在右側的Owned Repositories區域點擊Maven的圖標,進入你的Maven項目列表。
如果已經上傳成功了,在這裡就能看到你的項目,進入項目詳情,在右下角的Linked To區域點擊add in jcenter,然後在comment輸入框裡隨便填寫下信息,最後點send提交請求即可
一般情況下審核需要4到5個小時,耐心等待就行了,審核通過後會給你發郵件通知你,並且以後更新項目就不需要再審核了。
當審核通過後,別人就可以一句話導入你的項目了,例如:
compile 'me.xiaopan:sketch:2.0.0'
因為在Bintray上你的項目的maven-metadata.xml文件的路徑是gruopId+"/"+module名稱
。
例如你的groupId是com.example,artifactId是test,但module名稱是library。
這時候項目文件是在com.example.test目錄下的,但maven-metadata.xml文件卻是在com.example.library目錄下的。
這樣一來如果你有多個項目groupId一樣,artifactId不一樣,但module名稱都是library的話,可能就會沖突。
目前為止我還沒有找到更好的解決辦法,就只能讓module名稱和artifactId保持一致,如果你們誰有更好的辦法,歡迎留言交流。
Android拓展系列(12)–使用Gradle發布aar項目到JCenter倉庫 使用Gradle發布Android開源項目到JCenter 使用Gradle發布項目到JCenter倉庫 Android 項目打包到 JCenter 的坑
在之前的博客中已經為大家介紹了,如何在win環境下配置DNK程序,本篇我將帶大家實現一個簡單的Hello jni程序,讓大家真正感受一下NDK開發的魅力。這裡我們選擇使用
前言:因為找了N多網上的資源都沒有好的解決方案,別人都是只給思路沒給具體源碼,真TMD糾結,干嘛求別人,自己動手才是真,最痛恨那些所謂大牛的作風,給了點點代碼就讓別人去想
這張圖簡單說明了Zygote的啟動過程下面重點解析這些函數,從app_process.main開始 int main(int argc, char* const
由於我們使用的國行版手機沒有內置谷歌服務框架,在使用過程中如果安裝谷歌地圖(Google Map)和谷歌商城(Google Play)之類的官方應用時就會閃