編輯:關於Android編程
最近做了兩個開源項目,一個是Android網絡框架NoHttp,和Volley、OkHttp一樣做客戶端請求的,更多相關信息請百度哦;另一個是Android Web服務器框架AndServer,用來在Android端搭建一個web服務器的框架,類似Java的Servlet
一樣.
為什麼要說上面這一段,一個是想給自己宣傳一下;另一個是這兩個框架都支持Gradle一句話依賴使用,有人就問我,自己的開源項目怎麼支持AndtoidStudio的gradle compile依賴呢?
沒有Bintray帳號的同學到Bintray官網申請,進入頁面後點擊右上角的Sign In
登錄,如果有帳號的人可以直接登錄了,沒有帳號的同學點擊下面的Sign Up
注冊帳號,操作流程如圖所示:
點擊Sign In
按鈕登陸或者注冊。
有帳號直接登錄,或者用第三方帳號(Github、Twwiter,Google+)登錄,如果沒有帳號就點擊Sign Up
注冊:
根據提示輸入相關信息注冊,郵件地址灰常重要,一定填自己最常用的,找回密碼等用得到,注冊好之後會收到一封激活的郵件,根據提示激活就好了。
apikey是我們發布項目到Jcetner時必須要用的,拿到ApiKey後保存起來等下要用,步驟如下:
拿到apikey必須要先登錄,登錄成功後,右上角原來顯示Sign In
的地方顯示的自己的用戶名,鼠標指向用戶名的時候有一個下拉菜單,我們需要點擊Your Profile
,出現的頁面左偏上角你的頭像和用戶名下面有一個[Edit],圖示:
點擊Edit後出來的新頁面,選擇左側的[API Key],會出來如下頁面,輸入你登錄密碼點擊下方的Submit後會顯示一個ApiKey,圖示:
輸入密碼後點擊Submit後顯示如下,鼠標選中文字後復制並保存(注意不要點擊Revoke it,這是撤銷這個ApiKey的意思):
我們上傳項目到Jcenter時使用Gradle的task自動完成,所以只需要配置好gradle一句話就可以完成上傳了,下面是項目中的配置。
正式開始之前我們上一張圖,這裡以AndServer為例:
我們項目一般會有多個gradle配置文件,第一步要配置的是項目的gradle,而不是module/library的gradle,也就是上圖[項目的gradle]標注的文件,你的項目中應該只有dependencies節點下的代碼不一樣:
這是修改之前的:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
這是修改之後的:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// 添加下面兩行代碼即可。
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
第二步要配置的是要上傳的module的gradle,而不是整個項目的gradle,也就是上圖[library的gradle]標注的文件:
這是修改之前的:
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
// applicationId "com.yanzhenjie.andserver.sample" // 這一行要刪除,因為library不允許有applicationId。
minSdkVersion 8
targetSdkVersion 23
versionCode 1
versionName '1.0.1'
}
}
dependencies {
// 如果你的library有依賴別的jar,這裡要把jar依賴進來。
compile fileTree(dir: 'libs', includes: ['*.jar'])
}
這是修改之後的:
apply plugin: 'com.android.library'
// 這裡添加下面兩行代碼。
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
resourcePrefix "andserver_res_"
defaultConfig {
// applicationId "com.yanzhenjie.andserver.sample" // 這一行要刪除,因為library不允許有applicationId。
minSdkVersion 8
targetSdkVersion 23
versionCode 1
versionName '1.0.1'
}
}
dependencies {
// 如果你的library有依賴別的jar,這裡要把jar依賴進來。
compile fileTree(dir: 'libs', includes: ['*.jar'])
}
// 項目引用的版本號,比如compile 'com.yanzhenjie:andserver:1.0.1'中的1.0.1就是這裡配置的。
version = "1.0.1"
// 定義兩個鏈接,下面會用到。
def siteUrl = 'https://github.com/yanzhenjie/AndServer' // 項目主頁。
def gitUrl = '[email protected]:yanzhenjie/AndServer.git' // Git倉庫的url。
// 唯一包名,比如compile 'com.yanzhenjie:andserver:1.0.1'中的com.yanzhenjie就是這裡配置的。
group = "com.yanzhenjie"
install {
repositories.mavenInstaller {
// 生成pom.xml和參數
pom {
project {
packaging 'aar'
// 項目描述,復制我的話,這裡需要修改。
name 'AndServer For Android'// 可選,項目名稱。
description 'The Android build the framework of the Http server.'// 可選,項目描述。
url siteUrl // 項目主頁,這裡是引用上面定義好。
// 軟件開源協議,現在一般都是Apache License2.0吧,復制我的,這裡不需要修改。
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//填寫開發者基本信息,復制我的,這裡需要修改。
developers {
developer {
id 'yanzhenjie' // 開發者的id。
name 'yanzhenjie' // 開發者名字。
email '[email protected]' // 開發者郵箱。
}
}
// SCM,復制我的,這裡不需要修改。
scm {
connection gitUrl // Git倉庫地址。
developerConnection gitUrl // Git倉庫地址。
url siteUrl // 項目主頁。
}
}
}
}
}
// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
// 生成jarDoc的task,不需要修改。
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
// destinationDir = file("../javadoc/")
failOnError false // 忽略注釋語法錯誤,如果用jdk1.8你的注釋寫的不規范就編譯不過。
}
// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// 這裡是讀取Bintray相關的信息,我們上傳項目到github上的時候會把gradle文件傳上去,所以不要把帳號密碼的信息直接寫在這裡,寫在local.properties中,這裡動態讀取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") // Bintray的用戶名。
key = properties.getProperty("bintray.apikey") // Bintray剛才保存的ApiKey。
configurations = ['archives']
pkg {
repo = "maven" // 上傳到maven庫。
name = "andserver" // 發布到Bintray上的項目名字,這裡的名字不是compile 'com.yanzhenjie:andserver:1.0.1'中的andserver。
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true // 是否是公開項目。
}
}
上面有兩個特別的地方要注意:
我們上傳的開源項目一般會托管到github上,我們上傳的時候會把項目和module的gradle文件傳上去,所以不要把帳號密碼的信息直接寫在gradle文件中,而我們的local.properties
文件一般不會上傳(沒經驗的人可能會傳),所以我們把用戶隱私信息配置到local.properties
, 在gradle中動態讀取,如何讀取,在上面最後一個代碼塊中有介紹。 我們看到在module/library的gradle中pkg下的name="andserver"
,這個名字是我們項目在Bintray中的名字,所以這個andserver
不是compile ‘com.yanzhenjie:andserver:1.0.1’的andserver
,那麼compile中的andserver
哪裡配置呢?compile的library名稱就是library/module的名稱,如下圖所示:
我們會在local.properties
中配置很多變量,別的地方動態引用或者讀取,這樣就可以做到修改一個地方,其它地方都可以不用改了:
sdk.dir=你的sdk路徑
# 其實你只需要添加下面兩行,第一個填你的用戶名,比如我的是yolanda。
bintray.user=yolanda
bintray.apikey=fa************************5a
注意下我這裡為了不洩漏我的ApiKey,就用*代替了,你的要寫你的完整的ApiKey喔。
准備工作都做完啦,最後一步就是上傳操作了,點擊AndroidStudio底部的Terminal,觀察下Terminal顯示的路徑是否是你當前項目的root。
這裡如果你系統配置了gradle的用戶環境,輸入gradle install
,如果沒有配置gradle用戶環境,輸入gradlew install
,如果沒有問題,最終你會看到BUILD SUCCESSFUL
。 如果你看到了生成javadoc時編譯不過,那麼要看下在gradle中task javadoc下有沒有failOnError false
這句話,在剛才編寫gradle時提示過了。如果加了這句而你的javadoc寫的不規范會有警告,你不用鳥它。 最後一步,運行gradle install
後看到BUILD SUCCESSFUL
後,再輸入上傳命令gradle bintrayUpload
,等一分鐘左右就執行完了,會提示SUCCESSFUL
。 浏覽器https://bintray.com/後會看到你的項目。
上傳完成咯,但是別著急喔,你會發現在項目gradle中依賴如下代碼後依賴失敗:
'compile '包名:模塊名:1.0.0'
原因是我們項目上傳完成後還需要Bintray的管理員審核,所以在剛才項目頁面點擊進去查看詳情,點擊Add to Jcetner
:
之後的頁面中填寫項目信息,交給Bintray管理員審核:
審核蠻快的,我都是晚上提交,第二天早上在公交車上就收到審核通過的郵件了,審核通過就可以用gradle compile依賴咯,祝你好運喔。
小米Note全網通版是一款支持電信、聯通、移動手機卡的雙卡雙待手機,是小米Note標准版的升級版,但售價僅比標准版多了100元。下面下載吧小編就為大家總結小
本文目標在於指導新手,文章順序如下:Android Studio新手–>下載安裝配置–>零基礎入門–>基本使用&nd
Google已經建議Android開發全部轉向Android Studio開發,Android Studio 是使用gradle編譯、打包的,那麼問題來了,gradle可
1、Activity的工作原理在我們的應用程序中,當存在多個Activity切換時,他們如何切換的。在上一個文章中,我們知道了Activity生命周期的幾個函數,當Act
問題背景: 參考鏈接 做了一個圖片浏覽,用ContentResolver
關於Android View 事件分發過程的文章網絡上可以搜到一把大,這