as安装过程中gradle_重新认识AndroidStudio和Gradle,这些都是我们应该知道的
前言
主要從AndroidStudio的環(huán)境安裝升級GradleEclipse轉(zhuǎn)AS,多渠道配置Maven私服Action,Option快捷鍵等幾個方面出發(fā)講一些操作技巧以及我對AndroidStudio使用的一些理解與經(jīng)驗。本文較全面的講述了我們在開發(fā)中必須要了解的比較多而全可能不能馬上記住目的在于大家看我之后能有一個認識在需要使用的時候知道有這么個東西。希望對你的開發(fā)工作有所幫助不足之處請批評指正。
一、Install&Settings&Update
1、Gradle
Gradle官方會不斷更新我們可以使用本地安裝的方式并配置path我們就可以使用Terminal直接輸入gradle命令執(zhí)行構(gòu)建任務(wù)。當然如果我們想快速更新可以修改配置文件。 首先修改project\gradle\warpper\gradle-wapper.properties 文件其中distributionUrl的值distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
這里實際是從網(wǎng)絡(luò)下載配置的版本會自動檢測如果不是的就會下載。
然后修改 project的build.gradledependencies?{
classpath?'com.android.tools.build:gradle:1.3.0'
//?NOTE:?Do?not?place?your?application?dependencies?here;?they?belong
//?in?the?individual?module?build.gradle?files
}
注意這兩個配置是一一對應(yīng)的比如gradle-2.4-all對應(yīng)的就是1.3.0。后者的意思是這個project配置的gradle構(gòu)建版本為1.3.0前者的意思是這個project使用的gradle的版本為2.4。我們會發(fā)現(xiàn)如果我們修改前者如果本地沒有安裝這個版本的gradle會自動從gradle官網(wǎng)下載。但是如果我們修改后者它會自動從jcenter()倉庫下載一些plugin之類的。
2、AS具體的安裝和更新網(wǎng)上有許多的詳細教程我只想說以下三點。Android Studio是Google官方基于IntelliJ IDEA開發(fā)的一款A(yù)ndroid應(yīng)用開發(fā)工具,絕逼比Eclipse強大還沒有轉(zhuǎn)的盡快吧:
關(guān)閉AndroidStudio的自檢升級如果準備好升級還是自己選擇想升級的版本升級靠譜
升級前導(dǎo)出AndroidStudio的配置文件settings.jar(C:\Users\Administrator.AndroidStudio1.4\config目錄下或者操作File|Export Setings導(dǎo)出)升級后導(dǎo)入Settings.jar這樣就不需要重新配置有必要的話給自己備份一個說不定老天無緣無故掛了重裝很方便。
具體細節(jié)的配置可以閱讀強烈建議直接打開AS的設(shè)置窗口多轉(zhuǎn)幾次就熟悉了里邊的各種配置啦。也可以參考這邊文章1.4版本有點舊了差不多夠用打造你的開發(fā)工具settings必備
二、Gradle
1 簡述Groovy語言
Groovy是一種開發(fā)語言是在Java平臺上的具有向PythonRuby語言特性的靈活動態(tài)語言,Groovy保重了這些特性像Java語法一樣被Java開發(fā)者使用。編譯最終都會轉(zhuǎn)成java的.class文件。他們的關(guān)系如下圖。我想這大概也是Gradle構(gòu)建系統(tǒng)為什么要選擇Groovy的原因它具有java語言的特性開發(fā)者容易理解使用。一定要明白我們在build.gradle里邊不是簡單的配置而是直接的邏輯開發(fā)。如果你熟練掌握Groovy那么你在build.grale里邊可以做任何你想做的事。
2 Gradle編程框架
Gradle是一個工具同時它也是一個編程框架。使用這個工具可以完成app的編譯打包等工作也可以干別的工作Gradle里邊有許多不同的插件對應(yīng)不同的工程結(jié)構(gòu)、打包方式和輸出文件類型。我們經(jīng)常使用到的便是maven\java\com.android.application\android-library等。當按照要求配置好gradle的環(huán)境后執(zhí)行g(shù)radle的task便會自動編譯打包輸出你想要的.apk.aar.jar文件,如果你足夠牛逼你有g(shù)radle就夠了直接拿記事本開發(fā)
如下圖是Gradle的工作流程。Initializtion 初始化執(zhí)行settings.gradle(我們看到都是include",實際里邊可深了
Hook 通過API來添加這中間我們可以自己編程干些自己想做的事情
Configuration 解析每個project的build.gradle確定project以及內(nèi)部Task關(guān)系形成一個有向圖
Execution 執(zhí)行任務(wù)輸入命令 gradle xxx ,按照順序執(zhí)行該task的所有依賴以自己本身
3 關(guān)于gradle的task
每個構(gòu)建由一個或者多個project構(gòu)成一個project代表一個jar一個moudle等等。一個project包含若干個task包含多少由插件決定而每一個task就是更細的構(gòu)建任務(wù)比如創(chuàng)建一個jar、生成Javadoc、上傳aar到maven倉庫。我們可以通過執(zhí)行如下命令查看所有的task:gradle?tasks?--all
當然我們也可以在AS中可以看到所有的task雙擊就可以執(zhí)行單個的task.
當然我們也可以在build.gradle中寫自己的task。關(guān)于詳細的task介紹可以查看網(wǎng)絡(luò)資料進行學(xué)習(xí)推薦Gradle入門系列基本花上半天到一天的時候簡單的過一遍就有一個大概的了解。
4 Gradle環(huán)境下Android的文件結(jié)構(gòu)project-namebuild//構(gòu)建生成文件
libs//本地的依賴jar包等
src//本moudule所有的代碼和資源文件tests//單元測試報告apk//輸出我們需要的.apk文件
lint-results.html//lint檢查報告assets//資源文件
exploded-aar//如果我們依賴了許多的aar或者依賴工程最終都“copy"到了這個目錄下
mainfests//合并的mainfestintermediates//構(gòu)建打包的資源文件
outputs
reports
ivy.xml//moudle的配置task任務(wù)、依賴關(guān)系等java//java code
jni //navtive jni so
gen
res
assets
AndroidManifest.xml +build.gradle //moduleandroidTest//需要android環(huán)境的單元測試比如UI的單元測試
Test//普通的java單元測試
main//主渠道gradle
module-name
build.gradle // for all module
gradle.propeties //全局配置文件
local.properties //SDK、NDK配置
config.gradle//自定義的配置文件
settings.gradle//module管理
6 關(guān)于幾個buid.gradle、gradle.propeties文件build.gradle文件(主工程的Top-level)apply?from:"config.gradle"//可以給所有的moudle引入一個配置文件
buildscript?{
repositories?{
jcenter()
}
dependencies?{
classpath?'com.android.tools.build:gradle:1.3.0'
//?NOTE:?Do?not?place?your?application?dependencies?here;?they?belong
//?in?the?individual?module?build.gradle?files
}
}
allprojects?{
repositories?{
jcenter()//引入遠程倉庫
maven?{?url?MAVEN_URL?}//引入自己的私有maven倉庫
}
}
gradle.properties(全局配置文件#?This?can?really?make?a?significant?difference?if?you?are?building?a?very?complex?project?with?many?sub-module?dependencies:
#sub-moudle并行構(gòu)建
org.gradle.parallel=true
#后臺進程構(gòu)建
org.gradle.daemon=true
#私有maven倉庫地址
MAVEN_URL=?http://xxx.xx.1.147:8081/nexus/content/repositories/thirdparty/
build.gradle(module)apply?plugin:?'com.android.application'//插件?決定是apk\aar\jar等
android?{
compileSdkVersion?23
buildToolsVersion?"24.0.0"
//?此處注釋保持默認打開關(guān)閉后可使不嚴格的圖片可以通過編譯,但會導(dǎo)致apk包變大
//aaptOptions.cruncherEnabled?=?false
//aaptOptions.useNewCruncher?=?false
packagingOptions?{
exclude?'META-INF/NOTICE.txt'//?這里是具體的沖突文件全路徑
exclude?'META-INF/LICENSE.txt'
}
//默認配置
defaultConfig?{
applicationId?"com.locove.meet"
minSdkVersion?16
targetSdkVersion?23
versionCode?1
versionName?"1.0"
multiDexEnabled=true//65536問題
}
sourceSets?{
main?{
jniLibs.srcDirs?=?['libs']//重新配置路徑
}
}
buildTypes?{
release?{
//?zipAlign優(yōu)化
zipAlignEnabled?true
//?移除無用的resource文件
shrinkResources?false
//?混淆
minifyEnabled?false
proguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'
signingConfig?signingConfigs.releaseConfig
}
}
}
dependencies?{
compile?fileTree(dir:?'libs',?include:?['*.jar'])
compile?'com.google.code.gson:gson:2.2.+'
testCompile?'junit:junit:4.12'
}
7 gradle編譯文件和緩存文件gradle緩存文件C:\Users\Administrator.gradle\caches\modules-2\files-2.1
idea緩存文件 C:\Users\Administrator.AndroidStudio1.4
三、構(gòu)建過程簡析
這里參考了QQ音樂技術(shù)團隊Android構(gòu)建過程分析?下圖是文章末尾的一張構(gòu)建流程圖解壓合并資源
主要是assets目錄res目錄Androidmainfest.xml目錄。其中合并的時候會涉及到優(yōu)先級的問題詳情請查看該篇文章。
AAPT(Android Asset Packaging Tool)打包R.java文件 資源ID
app.ap 壓縮包
對png圖進行優(yōu)化等
源碼編譯
生成.class字節(jié)碼在這里可以進行刪除無用類字節(jié)碼優(yōu)化重命名包名還有一點就是代碼混淆。生成dex、打包簽名、zipalign
三、構(gòu)建速度優(yōu)化
AS編譯太慢是我們經(jīng)常吐槽的我們該做些什么來加快編譯的速度呢前面我們簡單的了解了gradle構(gòu)建項目的流程。我們可以從以下幾個方面來做
注意AS配置
如及時更新Gradle和JDK版本、擴大AS內(nèi)存等修改-Xms256m、取消AS的自更新設(shè)置去除不經(jīng)常使用的插件等。
慎重sub-module
減少sub-module或者將sub-module導(dǎo)成aar,并上傳到私有的maven倉庫就更加方便啦,每增加一個sub-module的構(gòu)建的時間會增加很多。從根上解決這個問題我們應(yīng)該增加sub-module時要慎重同時要考慮他的獨立性,與主module要完全解耦。這樣我們不會再開發(fā)的時候產(chǎn)品要換個ui圖也跑到sub-module里邊修改。當我們修改了sub-module的時候編譯器會檢測到修改重新編譯然后copy到主工程的buid/intermediates/exploded-aar目錄下。
守護進程deamon:
當我們在gradle.peopeties中配置org.gradle.daemon=true的時候相當于開了個進程這樣我們構(gòu)建項目的許多工作比如加載虛擬機之類的就在該進程中完成。
并行編譯parallel:
這個適用于有多個依賴sub-module的情況下如果單單只有一個module實測會耗時更多。看看官方的說法When configured, Gradle will run in incubating parallel mode.This option should only be used with decoupled projects. org.gradle.parallel=true。這里通過增大gradle運行的java虛擬機大小達到多個module并行構(gòu)建的目的。
依賴庫使用固定版本
我們配置依賴的時候 如依賴V4包com.android.support:support-v4:23.0.0+再后邊有個+后表示依賴最新的這樣可以保證依賴的庫有更新時能夠得到更新。但是小編并不建議這么做。因為每次構(gòu)建都需要訪問網(wǎng)絡(luò)去判斷是否有最新版本這樣也是需要耗時的。我們可能需要頻繁的構(gòu)建調(diào)試但是我們一般很少更新庫。當然這些可以配置在你的release分支上總之調(diào)試的請配置固定版本吧。
去除無用的構(gòu)建任務(wù)task
Gradle每次構(gòu)建都執(zhí)行了默認的許多task其中部分task是我們不需要執(zhí)行的至少在調(diào)試的時候不需要我們可以把這些屏蔽掉方法如下tasks.whenTaskAdded?{?task?->
if?(task.name.contains('AndroidTest')?||?task.name.contains('Test'))?{
task.enabled?=?false
}
}
巧用include
對于我們沒有依賴的module我們可以在settings.gradle里邊去掉改module的include建議寫成一行只include一個module如下include:'lib1'
//include:'lib2'
這樣我們實際就只include了lib1,當我們sync或者build\clean的時候就沒有l(wèi)ib2的事啦這樣解決時間。
減少構(gòu)建過程中的I/O操作I/O操作如copy文件訪問git等,Debug版本配置的minSdkVersion 21+builder faster
Instant Run:
最后還想說幾點
1、不僅僅只是快1mms
這里的每一項我都嘗試配置使用過實際測試基本可以解決個10多mms當然也得看你的項目當然的狀態(tài)以及你編輯修改的東西。雖然解決下的時間不是很顯眼但是如果用百分數(shù)來看可以提高到20%的速度你就能感受到其中的價值啦然后再乘以你編譯的次數(shù)絕對的節(jié)約時間。
2、組件化的優(yōu)勢
另外一點我曾在知乎上也回答過盡量的模塊化項目內(nèi)容對于一些功能特點我們都可以抽象成小組件在demo中調(diào)試完成然后挪到工程里邊。這樣不僅豐富了自己的公共庫也提高了工作效率。
3、java調(diào)試或者說單元測試
對于純java的業(yè)務(wù)相信在model層里有很多都是我們可以通過只運行java來調(diào)試比如我最近在做單詞的短語匹配算法那么我在調(diào)試的時候再class里邊寫個main方法很low的方案僅調(diào)試算法部分就好然后實際還是要使用單元測試更憂。
四、Maven倉庫
1、Jcenter和mavenCentral區(qū)別jcenter比mavenCentral倉庫要全性能優(yōu)響應(yīng)要快但有一些構(gòu)建還是僅存在maven里邊。
jcenter上傳lib流程更加簡單。
參數(shù)group 分組
artifact 名稱
version 版本
2、maven私服本機搭建maven私服
build.gradle
手動上傳上傳
遠程依賴
五、依賴以及統(tǒng)一依賴管理依賴種類aar
jar/AndroidManifest.xml (mandatory)
/classes.jar (mandatory)
/res/ (mandatory)
/R.txt (mandatory)
/assets/ (optional)
/libs/*.jar (optional)
/jni//*.so (optional)
/proguard.txt (optional)
/lint.jar (optional)庫library)依賴
工程moudle依賴
Dependency configurationscompile
runtime
testCompile
testRuntime
xxxCompile
依賴方式@aar
+1 自動更新最新版本建議Release版本中使用指定了文件類型為aar
You shouldn't need to put @aar if the pom declares the packaging as aar (which is true in your case).本地依賴離線:AS可以配置離線那么遠程依賴會使用本地緩存的而不再去請求加載
遠程倉庫依賴
依賴配置testCompile group: 'junit', name: 'junit', version: '4.+'
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
compile com.tencent.bugly:crashreport:2.1.5+
compile 'com.stubworld.core:CorelibAndroid:1.0@aar'build.gradle
project Structure
統(tǒng)一依賴管理實際就是將每個moudle的依賴配置寫到一個全局的配置文件中方便我們管理。我們可以添加一個全局的config.gradle,然后在全局的build.gradle中apply一下。詳解請參考文章搭建自己的maven私服并使用Gradle統(tǒng)一依賴管理
五、多渠道BuildType+ProductFlavor=Build Variant
buildType稱為構(gòu)建類型ProductFlavor稱為定制產(chǎn)品。怎么理解呢buldType默認有debug和release兩個版本而productFlavor默認是匿名的。我們可以這么理解buildType是我們開發(fā)需要的通用類型比如默認的調(diào)試、發(fā)行版本、也可以定制方便測試人員測試的版本對于ProductFlavor就是我們需要對產(chǎn)品進行定制啦不同的Product對應(yīng)了獨有的部分代碼比如我們要開發(fā)個免費版、企業(yè)版這里是舉個例子主要還是要看你的產(chǎn)品構(gòu)成。兩者還有一個區(qū)別在于buildType默認共享一個defaultConfig,但是不同的Product可以對應(yīng)不同的xxxConfig,由此就可以擁有不同包名等。
下面教你如果給有多重依賴關(guān)系module配置多渠道直接貼碼說明 我們假設(shè)A依賴了B、B依賴了C//A為主工程
productFlavors{
free{
//免費版
minSdkVersion?21
}
pay{
//付費版
minSdkVersion?14
}
}
buildTypes{
release{
resValue?"string",?"app_name",?"CoolApp"
signingConfig?signingConfigs.release
buildConfigField?"String",?"API_URL",?'"http://api.dev.com/"'
buildConfigField?"boolean",?"REPORT_CRASHES",?"true"
}
debug{
applicationIdSuffix?".debug"
versionNameSuffix?"-debug"
resValue?"string",?"app_name",?"CoolApp?(debug)"
signingConfig?signingConfigs.debug
buildConfigField?"String",?"API_URL",?'"http://api.prod.com/"'
buildConfigField?"boolean",?"REPORT_CRASHES",?"false"
}
}
dependencies{
freeCompile?project(path:'B',configuration:'freeRelease')
freeCompile?project(path:'B',configuration:'freeDebug')
payCompile?project(path:'B',configuration:'payRelease')
payCompile?project(path:'B',configuration:'payDebug')
}
//B為依賴工程
publishNonDefault?true?//依賴工程這一句很重要不然sync不過
productFlavors{
free{
}
pay{
}
}
buildTypes{
debug{
}
release{
}
}
dependencies{
freeCompile?project(path:'C',configuration:'freeRelease')
freeCompile?project(path:'C',configuration:'freeDebug')
payCompile?project(path:'C',configuration:'payRelease')
payCompile?project(path:'C',configuration:'payDebug')
}
//在對應(yīng)的module里面新建和main平級和productFlavors名字相同的問題夾并且將src等放在和main相同的路徑下就ok啦編譯不同的渠道會找不同的文件。多渠道的意義可以配置不同的URL地址
不同的名字、版本名、ApplicationId
不同的簽名配置
不同的源碼
不同的manifest
不同的sdk
小結(jié)
不同的產(chǎn)品要求、不同的生產(chǎn)環(huán)境我們都可以通過配置多個渠道來達到我們的工作要求省時省力。
六、Eclipse項目徹底轉(zhuǎn)為AS1、策略步驟一Eclipse導(dǎo)出獲得xxx.gradle
步驟二畫出依賴關(guān)系圖
步驟三調(diào)整文件結(jié)構(gòu)把文件結(jié)果弄成標準的用資源管理器就可
步驟四修改build.gradle,修復(fù)依賴關(guān)系
步驟五建立gradle統(tǒng)一管理對于大項目依賴負責(zé)常更新的還是有必要的
2、坑
平時使用的時候也會出現(xiàn)這種問題好好的sync的時候一直報R文件找不到clean后還是不行我的解決方案是在settings.gradle文件里邊注釋掉報錯的module所有上層的include包括自身sync一下沒有問題。然后打開自己sync沒有問題然后逐層向上打開工程一切ok。Multiple dex files define?http://Lcom.xxx.xxx.xxxR文件不存在
3、技巧依賴關(guān)系理清由下至上
靈活使用settings.gradle,控制include可以syncbuild任何一個工程以及所依賴的工程減少時間方法查找問題提高效率
構(gòu)建交給服務(wù)器如果公司有服務(wù)器構(gòu)建的話對于大項目可以交給服務(wù)器來編譯解放自己的電腦來干別的工作
clean、Invalidate Caches、Restart、刪除.idea、.gradle
七、 只有一個快捷鍵Acton or option
網(wǎng)絡(luò)上有許多的快捷鍵大全之類的看的密密麻麻的東西我就頭暈最后在知乎上有位大神提到AS只有一個快捷鍵那就是Control+Shift+A瞬間頓悟。所以后面我很少去既什么操作快捷鍵是什么而只是研究快捷操作英文名是什么比如說定位跳轉(zhuǎn)到某一行我只要control+shift+A然后輸入Line,就會列出所有有關(guān)line的操作與此同時每次操作我都會留意下跟在后邊括號里邊的快捷鍵是啥如此往復(fù)循環(huán)一次使用頻率高的就給記住直接的快捷鍵沒有記住的模糊搜索下操作指令名稱也能快速找到如果沒有可以去keymap里邊自定義設(shè)置。關(guān)于操作大概總結(jié)了以下幾類1、提示源碼提示Documentationctrl Ctrl+shilf+space 連續(xù)兩次放大查看 再次點擊縮小
查看某個方法的調(diào)用路徑Call Hierachy Ctrl+alt+h
查看某個方法的具體內(nèi)容Definition Ctrl+Shift+I
extends或者implement 的所有子類 chooseImplementation Ctrl+Alt+B \Ctrl+T
2、編輯同起點按住Alt同時鼠標上下走
不同起點按住Shift+Alt ,同時鼠標多處點擊多行編輯
自動補全Surround if.else,try/catch可以使用快捷鍵Ctrl+Alt+T (Code | Surround With)
3、查找和替換 file find goto search replace打開文件enter file name ctrl+shift+r 輸入文件名
打開文件-資源文件 ctrl+alt+F12 , 按住ctrl,鼠標點擊
打開一個類 enter class name ctrl+shift+t 輸入類名
跳轉(zhuǎn)到一個方法File Structure Ctrl+O 輸入方法名
打開某一個對象 symbol 輸入對象名
跳轉(zhuǎn)到某一行l(wèi)ine 輸入行數(shù)
跳轉(zhuǎn)到當期接口的實現(xiàn)方法implementation(s) ctrl+t
全部文件替換 Replace in path 比如你要替換整個工程真某個字符串
書簽 bookmarks 我的總結(jié)是有限的實際在官方文檔中有分類說明
八、代碼檢查操作 Analyze | Inspect Code | 窗口顯示
AndroidperformanceUnused resources //沒有使用到的資源reslint
class structureFile can be local //可以是局部變量的寫成了全局變量
ImportsUnused import 沒有使用的import
GeneralDefault File Template Usage //有些沒有使用模板的規(guī)范
Performance issues'StringBuffer'can be replaced with 'String'
Probable bugsString comparison using '==', instead of 'equals()'
簡單舉例也可以在面板上直接輸入文字搜索
九、調(diào)試
這里不再過多敘述啦本人實際開發(fā)中使用的也是比較基礎(chǔ)不過有個技巧當我們按住Alt鍵然后點擊某一行代碼可以查看到這一行代碼的執(zhí)行結(jié)果。前提是這行代碼已經(jīng)執(zhí)行過啦覺得還是挺好用的。更多可以參考Android Studio代碼調(diào)試大全學(xué)習(xí)。
十、 終極技巧合理使用插件pluginSimpleUML
MarkDown
書簽、喜歡分組bookMarks、favorites
抓屏布局分析LayoutInspector
宏Edit|Macors
這個和office辦公軟件有點類似我們可以錄制一段操作然后播放就可以自動執(zhí)行錄制好的操作。Templates模板File 的頭部可能有聲明作者、日期的注釋這里可以自動生成。SaveAsTemplates可以將某一個class或者文件保存為模板新建的時候直接生成引用。.notnull 自動填充為空的判斷
.for
具體的有很多在設(shè)置面板中查看LiveTemplates (Settings|Live Teamplates)
FileTemplates
File and Code Templates
Project Templates
前后綴Editor|Code Style|Java
這個可以自動給變量添加一個前后綴比如我們的成員變量常在前面加一個m。
Intentions
意圖這里可以根據(jù)預(yù)設(shè)的代碼結(jié)構(gòu)來填充修改代碼比如我們有 a.equals("A"),如果我們按 Alt+Enter,就會有一個split的提示選項點擊之后代碼就會變成 “A".equalsa。具體有很多打開設(shè)置面板自己看吧。
版本管理分支代碼對比 AS右下角的邊框有分支可以看點開就可以有許多的功能。前提是已經(jīng)激活配置好git.
Annotatelayout布局遍歷
巧用Alt+Enter
當我們的代碼報錯的時候當我們希望有更多功能的時候按這個快捷鍵就會有很多驚喜。比如我們在一個Class上使用該快捷鍵就會有提示添加單元測試 Create Test 然后一秒鐘添加好了單元測試類。巧用Settings.gradle 我們可以通過注釋include達到自由管理項目中各個moudle在我們編譯出錯的時候方便查問題。
快捷鍵有這個命令圖就夠啦。
模板 Tools/Save File as a Template
巧用AS無處不在的篩選排列顯示project里邊的 project/android/FlattenPackages
Find Usage 結(jié)果列表中的 write
以及每個工具面板中的篩選按鈕
巧用注解@NonNull 官方文檔 Improve Code Inspection with Annotations
面板區(qū)域內(nèi)直接輸入搜索
我們在很多的面板比如左側(cè)的項目導(dǎo)航欄可以直接輸入字母模糊搜索你需要的文件。LocalHistory
代碼編輯的歷史記錄方便找回意外丟失修改的代碼。一些有趣的task根據(jù)git提交自動配置版本號defaultConfig?{
#?Add?10000?to?move?past?old?SVN?revisions.
versionCode?gitCommitCount()?+?10000??:?0
}
def?gitCommitCount()?{
try?{
def?stdout?=?new?ByteArrayOutputStream()
exec?{
commandLine?'git',?'rev-list',?'--count',?'HEAD'
standardOutput?=?stdout
}
def?commitCount?=?stdout.toString().trim().toInteger()
return?commitCount
}
catch?(ignored)?{
return?0;
}
}
def?gitRevision()?{
try?{
def?stdout?=?new?ByteArrayOutputStream()
exec?{
commandLine?'git',?'rev-list',?'HEAD',?'-n',?'1'
standardOutput?=?stdout
}
def?commitRevision?=?stdout.toString().trim()
return?commitRevision
}
catch?(ignored)?{
return?"(unknown?revision)";
}
}
其他參考
十一、 AndroidStudio 2.2版本特性設(shè)計布局編輯器
約束布局
開發(fā)改進C++支持
示例瀏覽器
構(gòu)建Instant Run 改進
Java 8 支持
Open JDK 支持
測試模擬器增加了虛擬傳感器
apk分析器
十二、總結(jié)Gradle是一個強大的包裝機
maven遠程依賴很給力
快捷鍵只有一個那就是Ctrl+Shift+A
絕招有很多.套路太深別說你不懂
妹紙都是浮云我們天天雙眼就盯著AndroidStudio,所謂日久生情。
總結(jié)
以上是生活随笔為你收集整理的as安装过程中gradle_重新认识AndroidStudio和Gradle,这些都是我们应该知道的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php return 返回html_【p
- 下一篇: linux运算_LinuxShell算术