編輯:關於Android編程
經常逛github,總看到別人的readme中寫著compile ‘com.xxx:1.0.xxx’,這個已經越來越普及,個人,團人,公司都在用,雖然做android這麼長時間了,但是發現自己好像不會,走了好多彎路,幾經折騰,這沒什麼技術含量的玩意,還挺費時的,所以,下定決心,發布一個開源庫出來。Github: https://github.com/hejunlin2013/SuperIndicator
今天的Agenda如下:
主工程下的的build.gradle配置Maven,jcenter服務 創建一個類module 上傳類庫到jcenter倉庫AndroidStudio是從Maven Repository 下載類庫的。基本上有jcenter和Maven Central這兩個服務器用於下載Android的類庫。
在工程(注意是主工程下的)中的build.gradle有一段腳本如下:
buildscript { repositories { jcenter() //jcenter倉庫 mavenCentral() //Maven Central倉庫 } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }
了解到Google studio團隊最先使用MavenCentral作為遠程倉庫下載我們用的編譯類庫的。
MavenCentral有一些問題。首先是對於開發者體驗不好,種種原因Google studio團隊遠程倉庫換成jcenter。
jcenter有一個打包工廠,每天特別多的類庫從此誕生,用於github上各種項目中。
像我們平時在app目錄下build.gradle中的dependencies中經常看到的:
compile 'com.hejunlin.superindicatorlibray:superindicatorlibray:1.0.3'
這是什麼意思呢?它實際上相當於
GROUP_ID:ARTIFACT_ID:VERSION
在這句代碼裡面的GROUP_ID是com.hejunlin.superindicatorlibray,ARTIFACT_ID是superindicatorlibray(類庫名),VERSION是1.0.3。
首先在Android Studio中點擊File菜單,選擇New->New Module,然後在彈出視圖中選擇Android Library,點擊Next後填寫庫的名稱。
創建完新的library後就可以寫公用部分的類代碼了,我這裡是寫superindicatZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcmxpYnJheaOs0LS6w7rzo6y/z7aou7m1w9PQ0ru49nNhbXBsZdauwOC1xLLiytTV4rj2wOC/4qOsztLTw7XEysfErMjPYXBwuaSzzKOswO/D5tPQQWN0aXZpdHnWrsDgtcSjrL3Tz8LAtL7N1NphcHC5pLPM0v3Tw9XiuPbA4L/io6zU2mFwcM/CtcRidWlsZC5ncmFkbGXW0MztvNPSwMC1o7o8L3A+DQo8cD48aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160907/20160907094357168.png" title="\" />
compile project(‘:superindicatorlibray’) //冒號後是你的類庫的名字
本地充分測試好後,接著你就上要開始上傳jcenter倉庫了。
那麼如何上傳你的類庫到jcenter倉庫?
注冊Bintray用戶,Bintray是一個可以托管Android庫的平台,JCenter則由Bintray進行維護的。打開https://bintray.com/,進行注冊,然後登錄。點擊add,然後如圖填寫:
填完後,如出現前面圖中那樣,有一個maven的倉庫,接下來要在這裡添加package,點擊Add New Package,如圖:
現在一個空倉庫和一個package已經創建好了,接下來要在studio,寫腳本配置,上傳類庫
添加bintray插件在module中類庫下build.gradle中添加如下腳本
apply plugin: 'com.jfrog.bintray'//添加bintray插件 apply plugin: 'com.github.dcendents.android-maven'
Bintray在上傳庫時需要一個pom文件,而這個文件可以讓Maven插件自動生成,但你還是需要給出groupId和version的值,將下面這兩行代碼添加到庫module的build.gradle中。
group = 'com.hejunlin.superindicatorlibray' version = '1.0.3'編譯類庫
task generateSourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier 'sources' } task generateJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs //source指定了源碼位置 classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } //這裡dependsOn意為僅當generateJavadocs完成後才開始本task,和ant腳本也是對應的。 task generateJavadocsJar(type: Jar, dependsOn: generateJavadocs) { from generateJavadocs.destinationDir classifier 'javadoc' }
將本地編譯過的類庫及源碼及doc文件上傳到Maven倉庫中package中,需要將task添加到一個archive中,只需要向庫module下的build.gradle中添加如下代碼:
artifacts { archives generateJavaDocsJar archives generateSourcesJar }
接下來還要配置local.properties添加Bintray認證,git提交時,也會讓你填用戶名和密碼,那jcenter,如何配置呢?
我們須要本地local.properties文件下配置,如果沒有沒有就創建一個,放在主工程目錄下:
內容如下:
bintray.user=你的Bintray注冊時的名字 bintray.apikey=xxxxxxxxxxxxxxxxxxxxx
接下來說下這個apikey在哪?
輸入密碼,就可以得到這個key。接下來回到庫module下的build.gradle中添加如下腳本:
Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") pkg { repo = 'maven' name = 'com.hejunlin.superindicatorlibray' version { name = '1.0.3-release' desc = "a superindicatorlibray for viewpager, banner" vcsTag = '1.0.3' } licenses = ['Apache-2.0'] vcsUrl = 'https://github.com/hejunlin2013/SuperIndicator.git' websiteUrl = 'https://github.com/hejunlin2013/SuperIndicator' } configurations = ['archives'] }
最後我們在Android studio中Terminal命令行中,執行:
gradlew install
如果順利的話,過幾分鐘就會出現
恭喜你,編譯成功了,去類module看,多了個build的目錄,這裡東西一會要上傳jcenter:
接下來需要把build成功的文件upload到bintray上,同樣在Terminal命令行,執行如下命令:
gradlew bintrayUpload
順利的話,也會出現,和上面的圖一樣的BUILD SUCCESSFUL
這時檢查你在bintray創建的package,你會看到對應的版本號
點擊進去,如圖,首次沒有打包時,這裡是一個add to jcenter的字樣,我這裡是打了包的。就變成了下圖:
點擊那個箭頭的“add to jcenter”,接下來會跳到一個Request to include package GradientUI in jcenter的頁面,
填下你的groupId,直接send,就會發起一個打包版本的請求,
過幾個小時,通過jcenter那邊的審核就會在bintray上收到jcenter那邊的同意消息提醒。
恭喜你,你的類庫上傳到jcenter成功了!大家都可以用你的類庫了。
我們上傳完成後,如發現類庫中的一個bug,這就涉及到更新問題,那麼怎麼更新呢?
一句話,修改代碼後,改本地build.gradle的版本號,按上面的操作,執行gradlew install,gradlew bintrayUpload,到bintray上點擊“
Stage snapshots on oss.jfrog.org”同樣發送一個請求,不用幾分鐘,就可以用了,升級,不像首次提交那樣,非常快。馬上就你可以更新github上的引用版本號,瞬間心情爽爽哒。
其實寫這篇文章,是沒有一點技術分析的過程,但是,如果當初有人寫這麼一個圖文並茂的教程。我可能不會走那麼多彎路,可以更節省我的時間,做更多有意義的事情。如果腳本什麼的,沒寫全,可以參考我的github:SuperIndicator類庫:https://github.com/hejunlin2013/SuperIndicator,喜歡可以點star。
步驟如下:將以上所有so庫分別放到arm64-v8a,armeabi,armeabi-v7a,x86,x86_64文件夾下 將assets文件夾裡的資源拷貝到/項目名/a
昨天,華為榮耀V8已經在華為商城和京東上正式開賣了,榮耀V8是華為榮耀推出的全新V系列手機,它采用了雙卡雙待的模式,擁有5.7英寸大屏,配備了2K分辨率顯示
Android自定義的view,主要是繼承view,然後實現ondraw這個方法,來進行繪制。 1. 編寫自己的自定義view 2. 加入邏輯線程 3
資源是從github上撸下來的,具體網址忘了。。。我就根據我的資源做個描述:目錄結構:操作步驟:①attrs.xml放在values文件夾下②CircleImageVie