Android Studio 3.0 新功能全面解析和舊項(xiàng)目適配問題
簡介:
Android Studio是Android的官方IDE。它是專為Android而打造,可以加快您的開發(fā)速度,幫助您為每款A(yù)ndroid設(shè)備構(gòu)建最優(yōu)應(yīng)用。
它提供專為Android開發(fā)者量身定制的工具,其中包括豐富的代碼編輯、調(diào)試、測試和性能分析工具。
上周四,Google 終于在經(jīng)歷大半年的打磨錘煉之后正式發(fā)布 Android Studio 3.0 版本,給廣大安卓開發(fā)人員一份滿意的答卷。如往常一樣,每次新版開發(fā)工具的發(fā)布,很多謹(jǐn)慎點(diǎn)的朋友仍擔(dān)心穩(wěn)定性、是否存在坑等問題,選擇隔岸觀火,等一段時間再更新升級。
經(jīng)過查看官網(wǎng)對新版開發(fā)工具的新功能介紹之后,當(dāng)天我就選擇了升級。事實(shí)上,我也的確折騰良久,但是截至目前,沒有發(fā)現(xiàn)所謂的坑。只是需要對舊的工程做一些配置上的調(diào)整而已。各方面響應(yīng)速度和新功能的使用,總體還是覺得值得升級。這篇文章,就來介紹新版開發(fā)工具給我們帶來哪些實(shí)用的改變,并以實(shí)際操作經(jīng)驗(yàn)告訴大家,舊工程的配置需要如何做兼容修改。
3.0 帶來的改變
Kotlin Support
在 Android Studio 3.0 之前,使用 Kotlin 語言開發(fā)安卓應(yīng)用,需要額外配置 Kotlin 插件。而新版本內(nèi)置默認(rèn)支持 Kotlin 語言,來減少我們在配置上的工作。
選擇工具欄 Code -> Convert Java File To Kotlin File,或者使用快捷鍵的形式,你可以一鍵實(shí)現(xiàn) Java 文件到 Kotlin 文件的轉(zhuǎn)換。

備注:關(guān)于快捷鍵的使用,你可以使用 Command + Shift + A 這組快捷鍵打開 Find Action 窗口,輸入關(guān)鍵字尋找對應(yīng)功能及其快捷鍵,效果就像上面 Gif 圖展示的這樣。
Java 8 Support
3.0 對 Java 8 語言特性的默認(rèn)支持使你不用在 build.gradle 配置文件中添加 jackOptions 一項(xiàng)。如果你有使用到的話,記得刪除:
android {
...
defaultConfig {
...
// Remove this block.
jackOptions {
enabled true
...
}
}
}
選擇工具欄 File ——》Project Structure,修改 Source Compatibility 和 Target Compatibility 選項(xiàng)到 1.8 即可使我們的項(xiàng)目支持 Java 8 語言特性。

Android Profiler
過去我們使用的 Android Monitor 工具從 3.0 版本開始被 Android Profiler 替代掉了。如圖,run 按鈕一欄多了一個 Android Profiler 按鈕:

Android Profiler 提供有 CPU、Memory 和 Network 三大調(diào)試分析利器,實(shí)時跟蹤 Apk 的運(yùn)行狀態(tài),可以幫助我們可視化地做一些性能調(diào)優(yōu)工作。
這三個工具在開發(fā)階段非常實(shí)用,比如 CPU Profiler 能夠分析應(yīng)用中的線程使用情況,Memory Profiler 能夠檢測出內(nèi)存泄漏,Network Profiler 能夠攔截網(wǎng)絡(luò)請求實(shí)現(xiàn)抓包功能等。這里列舉一些使用圖片,簡單預(yù)覽一下這三大工具的風(fēng)采:



有關(guān)這幾個工具的詳細(xì)使用細(xì)節(jié),可以參考官方的介紹:
Device File Explorer
這個功能厲害了。新版開發(fā)工具帶來的資源管理器允許我們訪問連接設(shè)備的文件系統(tǒng),實(shí)現(xiàn) PC 端到手機(jī)或模擬器端的便捷文件傳輸。有了這個工具,從此就可以告別之前使用的「文件傳輸助手」等第三方工具啦。

Adaptive Icons wizard
選擇 File -> New -> Image Asset,利用 Android Studio 提供的工具創(chuàng)建圖片資源一直以來也是開發(fā)利器之一?,F(xiàn)在,這個工具開始支持 vector drawables 格式,并且能夠創(chuàng)建用于適配 Android 8.0 系統(tǒng)上各種形狀的桌面圖標(biāo)。

URL intent-filter validator
這個功能也蠻貼心的。Manifest 清單文件開始支持一個特殊的標(biāo)簽,用于測試給定的 Url 字符串是否符合 intent-filter 標(biāo)簽內(nèi)容所定義的規(guī)則。舉個例子:

如圖,這里使用 data 標(biāo)簽定義一個 Url 規(guī)則,并使用 tools:validation 標(biāo)簽驗(yàn)證一個錯誤的測試 Url 地址,檢測器能夠自動識別并給出錯誤提示。這個例子很簡單,肉眼一眼就能看出錯誤。那如果是比較復(fù)雜的規(guī)則呢,可能就不那么容易看得出來。這個時候,這個工具就可以派上用場啦。
APK Analyzer
3.0 版本對 APK Analyzer 的功能做了進(jìn)一步強(qiáng)化。主要在于:對于使用 ProGuard 混淆過的 APK 文件,我們能夠上傳 mapping.txt 文件進(jìn)行代碼還原;Dex 文件提供顯示各個包目錄的大??;等等。

其他功能
除了上面介紹的這些變化,還有一些其他大大小小的變更。比如 Layout Inspector 和 Layout Editor 工具在 UI 上有所調(diào)整,比如 App Links Assistant 和 Firebase App Indexing Assistant 的強(qiáng)化使用,這些留著大家自己去探索發(fā)現(xiàn)吧。也可以訪問 Android Studio Release Notes 官網(wǎng),了解 3.0 版本的更多發(fā)布細(xì)節(jié)。
舊項(xiàng)目的適配
Android Studio 3.0 發(fā)布的同時,Android Plugin for Gradle 3.0.0 也同時發(fā)布。編譯速度整體都得到了大幅提升。升級完 Android Studio 之后,舊的工程需要做出部分改變,才能通過 Gradle 的編譯。這里根據(jù)我的一個實(shí)際項(xiàng)目,介紹一下需要改變的內(nèi)容。當(dāng)然,也許你的項(xiàng)目用不上這些,也可能不止這些。
distributionUrl
Plugin 3.0.0+ 需要配置 Gradle 的最小版本是 4.1,我們可以通過 File -> Project Structure -> Project 的方式設(shè)置 Android Plugin 的版本,或者修改 gradle.properties 文件的內(nèi)容,添加 distributionUrl 屬性:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Google's Maven repository
新版 Android Studio 工具默認(rèn)使用 Google's Maven Repository 用于下載依賴 Android Support Library,替代了 Android SDK Manager 的本地依賴方式。所以,需要在工程根目錄下的 build.gradle 文件中添加 google() 一行代碼:
allprojects {
repositories {
google()
}
}
buildToolsVersion
Android Plugin For Gradle 3.0.0 默認(rèn)自動添加插件所需要用到的最小版本的編譯工具。所以,我們不需要再手動在 build.gradle 添加一行 buildToolsVersion 屬性的代碼。對于舊的項(xiàng)目,可以去掉這行配置,比如:
android {
compileSdkVersion 26
// remote buildToolsVersion
buildToolsVersion "25.0.2"
...
}
flavor dimensions
Plugin 3.0.0 開始,如果 build.gradle 自定義有 productFlavors 配置的話,需要添加定義 flavorDimensions(風(fēng)味維度)。否則,編譯報錯:
rror:All flavors must now belong to a named flavor dimension. The flavor 'flavor_name' is not assigned to a flavor dimension.
flavorDimensions 的出現(xiàn)使得構(gòu)建變種類型更加多樣化:
可構(gòu)建的變種數(shù)量 = 風(fēng)味維度的數(shù)量 * 構(gòu)建類型的數(shù)量
詳細(xì)使用可參考 配置構(gòu)建變體。對于舊項(xiàng)目,簡單的話,可以隨意定義一個風(fēng)味維度,保證編譯通過,如(這里的“minApi”可自由定義):
flavorDimensions "minApi"
productFlavors {
beta {
dimension "minApi"
...
}
production {
dimension "minApi"
...
}
}
each() 和 outputFile()
Plugin 3.0.0 版本移除了一些用于編譯配置的 API,其中比較常見的就是 each() 和 outputFile(),兩個常用于修改輸出
Apk 文件名和路徑的方法。
在之前的文章 Android Gradle 常用使用場景實(shí)現(xiàn)方式的總結(jié) 中有提到,自定義輸出 APK 文件名可以這樣做:
android {
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, rootProject.getName()
+ "-" + buildType.name
+ "-" + releaseTime()
+ "-v" + defaultConfig.versionName
+ "-" + defaultConfig.versionCode
+ ".apk");
}
}
}
但是使用 Plugin 3.0.0 時就會出現(xiàn)編譯報錯,我們需要修改 each() 和 outputFile() 方法為 all() 和 outputFileName,比如:
android {
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = rootProject.getName()
+ "-" + buildType.name
+ "-" + releaseTime()
+ "-v" + defaultConfig.versionName
+ "-" + defaultConfig.versionCode
+ ".apk";
}
}
}
對于舊的工程,基本上便是這些配置上的適配修改。如果你還遇到了別的問題,別緊張,按照編譯錯誤提示一步步操作,也能成功通過編譯??傮w來說,這次 Android Studio 3.0 和 Plugin For Gradle 3.0.0 的發(fā)布還是非常值得升級嘗試的,并沒有網(wǎng)上說的那么多坑。何況,我們作為寫代碼的程序員,本來不就是為了解決問題而來嘛。
總結(jié)
以上所述是小編給大家介紹的Android Studio 3.0 新功能全面解析和舊項(xiàng)目適配問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
RecyclerView實(shí)現(xiàn)縱向和橫向滾動
這篇文章主要為大家詳細(xì)介紹了RecyclerView實(shí)現(xiàn)縱向和橫向滾動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
RxJava加Retrofit文件分段上傳實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了RxJava加Retrofit文件分段上傳實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android實(shí)現(xiàn)在子線程中更新Activity中UI的方法
這篇文章主要介紹了Android實(shí)現(xiàn)在子線程中更新Activity中UI的方法,涉及Android線程與activity操作的相關(guān)技巧,需要的朋友可以參考下2016-04-04
Android中實(shí)現(xiàn)用命令行同步網(wǎng)絡(luò)時間
這篇文章主要介紹了Android中實(shí)現(xiàn)用命令行同步網(wǎng)絡(luò)時間,本文講解使用BusyBox實(shí)現(xiàn)同步網(wǎng)絡(luò)時間,并給出了詳細(xì)操作步驟,需要的朋友可以參考下2015-07-07
21天學(xué)習(xí)android開發(fā)教程之XML解析與生成
21天學(xué)習(xí)android開發(fā)教程之XML解析與生成,使用SAX來解析XML,在Android里面可以使用SAX和DOM,DOM需要把整個XML文件讀入內(nèi)存再解析,比較消耗內(nèi)存,而SAX基于事件驅(qū)動的處理方式,可以在各節(jié)點(diǎn)觸發(fā)回調(diào)函數(shù),需要的朋友可以參考下2016-02-02
Android手機(jī)聯(lián)系人快速索引(手機(jī)通訊錄)
最近需要實(shí)現(xiàn)一個手機(jī)通訊錄的快速索引功能。根據(jù)姓名首字母快速索引功能,下面通過本篇文章給大家介紹Android手機(jī)聯(lián)系人快速索引(手機(jī)通訊錄)的相關(guān)代碼,需要的朋友參考下2015-12-12

