最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Android Studio 3.0的新特性與適配

 更新時(shí)間:2017年11月03日 14:24:04   作者:daking  
這篇文章主要介紹了詳解Android Studio 3.0的新特性與適配,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

簡介

Android Studio升級到3.0后,有不少的改動和新特性,先貼出官方的遷移說明。

本文會持續(xù)收集與總結(jié)本人在使用Android Studio 3.0進(jìn)行開發(fā)的過程中所遇到的問題。

版本配置

Gradle版本

  1. Android Studio 3.0需要的Gradle版本至少為4.1。
  2. 如果是使用gradle wrapper,則工程根目錄/gradle/wrapper/gradle-wrapper.properties中的distributionUrl字段為https\://services.gradle.org/distributions/gradle-4.1-all.zip。

Android Gradle插件版本

Android Studio 3.0需要Android Gradle插件版本為3.0.0。

Android Studio 3.0默認(rèn)使用Google's Maven Repository來下載Android Support Library,所以在腳本中要使用google()來加入谷歌倉庫。

工程根目錄/build.gradle的相關(guān)配置如下。

buildscript {
  repositories {
    google()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
  }
}

使用annotationProcessor

從Android Studio 3.0開始,使用annotationProcessor代替apt。不可再使用apt,否則會編譯報(bào)錯(cuò)。

Error:android-apt plugin is incompatible with the Android Gradle plugin.  Please use 'annotationProcessor' configuration instead.

比如在Android Studio 3.0之前在application模塊導(dǎo)入ButterKnife 8.4.0的gradle配置如下。

buildscript {
  dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}
apply plugin: 'com.neenbedankt.android-apt'

dependencies {
  compile 'com.jakewharton:butterknife:8.4.0'
  apt 'com.jakewharton:butterknife-compiler:8.4.0'
}

而在Android Studio 3.0中,使用annotationProcessor代替apt,不用再導(dǎo)入android-apt插件。

dependencies {
  compile 'com.jakewharton:butterknife:8.4.0'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}

修改apk名稱

常用的修改輸出的apk文件的名稱的腳本如下。

def apkBaseName() {
  // 先查找project.ext.apkName變量,若無則使用項(xiàng)目名
  if(project.hasProperty("apkName")) {
    return project.apkName
  } else {
    return project.name
  }
}

def buildTime() {
  return new Date().format("yyyyMMdd")
}

def delUnderline(String str) {
  def result = str.startsWith("_") ? str.substring(1) : str
  return result.endsWith("_") ? result.substring(0, result.length() - 1) : result
}

android.applicationVariants.all { variant -> // ApplicationVariant
  variant.outputs.each { output -> // BaseVariantOutput
    def file = output.outputFile
    if(file != null && file.name.endsWith(".apk")) {
      def flavorName = delUnderline(variant.flavorName)
      def buildTypeName = delUnderline(variant.buildType.name)
      def apkFile = new File(file.parent, "${apkBaseName()}_" +
          "${buildTypeName.empty ? "" : buildTypeName + "_"}" +
          "${flavorName.empty ? "" : flavorName + "_"}" +
          "v${variant.versionName}_" +
          "${buildTime()}.apk")
      output.outputFile = apkFile
    }
  }
}

在Android Studio 3.0中執(zhí)行此腳本會報(bào)錯(cuò)如下,原因是ApkVariantOutputImpl的outputFile屬性改為只讀。

Cannot set the value of read-only property ‘outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl

不再設(shè)置outputFile屬性,而是設(shè)置outputFileName。同時(shí)把each()改為all()。

android.applicationVariants.all { variant -> // ApplicationVariant
  variant.outputs.all {
    if (outputFileName.endsWith(".apk")) {
      def flavorName = delUnderline(variant.flavorName)
      def buildTypeName = delUnderline(variant.buildType.name)
      outputFileName = "fileName"
    }
  }
}

AAPT2

為了改進(jìn)增量資源處理,Android Gradle插件3.0默認(rèn)開啟AAPT2。

在舊項(xiàng)目中開啟AAPT2,有時(shí)候會報(bào)錯(cuò),如:

Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
可在gradle.properties中加入以下配置來禁用AAPT2。

android.enableAapt2=false

新的依賴配置

Gradle 3.4推出了新的Java Library Plugin配置,而Android Gradle插件3.0是使用Gradle 4.1的,因此,需要注意更改為新的依賴配置。

舊的依賴配置,如compile project(':base-library'),會導(dǎo)致如下錯(cuò)誤。應(yīng)該修改為implementation project(':base-library')。

Error:Cannot choose between the following configurations of project :base-library:
 - debugApiElements
 - debugRuntimeElements
 - releaseApiElements
 - releaseRuntimeElements

flavor

從Android Gradle插件3.0開始,如果build.gradle中有自定義的productFlavors配置,需要添加自定義的flavorDimensions(風(fēng)味維度),否則會編譯報(bào)錯(cuò)。

Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.

解決方法是:先定義一個(gè)flavorDimensions,之后在每個(gè)flavor中指定為這個(gè)dimension。

android {
  flavorDimensions 'core'
  
  productFlavors {
    beta {
      dimension 'core'
    }
    
    production {
      dimension 'core'
    }
  }
}

在設(shè)置flavorDimensions之前,最終的Build Variant = Product Flavor + Build Type。而設(shè)置之后,最終的Build Variant = 維度1 + 維度2 + ... + 維度n + Build Type。

Kotlin支持

在Android Studio 3.0之前,使用Kotlin需要進(jìn)行額外的配置。而Android Studio 3.0開始,默認(rèn)內(nèi)置支持Kotlin,無需額外配置。

使用Android Studio工具欄中的Code -> Convert Java File To Kotlin File,可將.java文件轉(zhuǎn)為.kt文件。

Java8支持

從Android Studio 2.1起,官方通過Jack來支持Java8,從而開發(fā)者能使用Lambda等特性。

android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  
  defaultConfig {
    jackOptions {
      enabled true
    }
  }
}

可在Android Studio工具欄,F(xiàn)ile -> Project Structure,修改Source Compatibility和Target Compatibility為1.8。

Project Structure

從Android Studio 3.0起,默認(rèn)支持Java8,無需額外進(jìn)行JackOptions配置。

Android Profiler

從Android Studio 3.0起,新增Android Profiler來代替舊的Android Monitor工具。

Android Profiler提供了CPU、Memory和network等三個(gè)調(diào)試分析工具。

Android Profiler

Android Profiler的詳細(xì)使用方法參考官方文檔。

CPU Profiler
Memory Profiler
Network Profiler

Device File Explorer

在Android Studio 3.0主界面的右下角,點(diǎn)開"Device File Explorer",可訪問當(dāng)前連接設(shè)備的文件。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Fragment通過FragmentManager實(shí)現(xiàn)通信功能詳細(xì)講解

    Fragment通過FragmentManager實(shí)現(xiàn)通信功能詳細(xì)講解

    這篇文章主要介紹了Fragment通過FragmentManager實(shí)現(xiàn)通信功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Android給通知channel靜音的方法實(shí)例

    Android給通知channel靜音的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Android如何給通知channel靜音的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Android項(xiàng)目實(shí)戰(zhàn)教程之高仿網(wǎng)易云音樂啟動頁實(shí)例代碼

    Android項(xiàng)目實(shí)戰(zhàn)教程之高仿網(wǎng)易云音樂啟動頁實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Android項(xiàng)目實(shí)戰(zhàn)教程之高仿網(wǎng)易云音樂啟動頁的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Android中AsyncTask異步任務(wù)使用詳細(xì)實(shí)例(一)

    Android中AsyncTask異步任務(wù)使用詳細(xì)實(shí)例(一)

    AsyncTask是Android提供的輕量級的異步類,可以直接繼承AsyncTask,在類中實(shí)現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行的程度(可以通過接口實(shí)現(xiàn)UI進(jìn)度更新),最后反饋執(zhí)行的結(jié)果給UI主線程,通過本文給大家介紹Android中AsyncTask異步任務(wù)使用詳細(xì)實(shí)例(一),需要的朋友參考下
    2016-02-02
  • Android指紋識別API講解,一種更快更好的用戶體驗(yàn)

    Android指紋識別API講解,一種更快更好的用戶體驗(yàn)

    今天小編就為大家分享一篇關(guān)于Android指紋識別API講解,一種更快更好的用戶體驗(yàn),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Android中Property模塊的鍵值設(shè)置

    Android中Property模塊的鍵值設(shè)置

    這篇文章主要介紹了Android中Property模塊的鍵值設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Android調(diào)用手機(jī)攝像頭拍照和錄音功能

    Android調(diào)用手機(jī)攝像頭拍照和錄音功能

    這篇文章主要為大家詳細(xì)介紹了Android調(diào)用手機(jī)攝像頭拍照和錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Android中二維碼的掃描和生成(使用zxing庫)

    Android中二維碼的掃描和生成(使用zxing庫)

    ZXing是一個(gè)開放源碼的,用Java實(shí)現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口,下面這篇文章主要給大家介紹了關(guān)于Android中二維碼掃描和生成的相關(guān)資料,主要使用的zxing庫,需要的朋友可以參考下
    2022-09-09
  • Android中Listview點(diǎn)擊item不變顏色及設(shè)置listselector 無效的解決方案

    Android中Listview點(diǎn)擊item不變顏色及設(shè)置listselector 無效的解決方案

    這篇文章主要介紹了Android中Listview點(diǎn)擊item不變顏色及設(shè)置listselector 無效的原因及解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Android學(xué)習(xí)筆記45之gson解析json

    Android學(xué)習(xí)筆記45之gson解析json

    JSON即JavaScript Object Natation,是一種輕量級的數(shù)據(jù)交換格式,采用完全獨(dú)立于語言的文本格式,為Web開發(fā)提供了一種理想的數(shù)據(jù)交換格式。通過本篇文章給大家介紹Android學(xué)習(xí)筆記45之gson解析json的相關(guān)內(nèi)容,對android gson解析json相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12

最新評論

丹寨县| 资阳市| 东乌珠穆沁旗| 梁山县| 汉中市| 乌海市| 靖江市| 沙洋县| 台北市| 三明市| 修武县| 泾川县| 凤城市| 沅陵县| 弥勒县| 仲巴县| 霸州市| 出国| 渑池县| 大理市| 灵武市| 综艺| 开原市| 调兵山市| 亳州市| 贡山| 古浪县| 类乌齐县| 阳山县| 广元市| 东莞市| 封丘县| 新郑市| 泾源县| 桓台县| 苏尼特左旗| 界首市| 沙河市| 西藏| 民县| 石狮市|