欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Android Studio 3.0 的一些小變化

 更新時(shí)間:2017年10月30日 14:30:31   作者:珠穆朗瑪小王子  
本篇文章主要介紹了淺談Android Studio 3.0 的一些小變化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

前言

一大早還在北京擁擠的地鐵里,我的CTO閆哥在微信里給我發(fā)了一條信息:Android Studio 3.0發(fā)布了。

為什么會(huì)這么關(guān)注Android Studio 3.0 的版本發(fā)布呢?主要是因?yàn)楣炯磳㈤_發(fā)的新app準(zhǔn)備使用Kotlin語(yǔ)言,而Android Studio 3.0 已經(jīng)把Kotlin的語(yǔ)言支持內(nèi)置進(jìn)去了,這樣就省去了很多的麻煩,如果你還沒接觸過Kotlin語(yǔ)言,可以去百度一下 他們的官網(wǎng),如果你現(xiàn)在使用的Java語(yǔ)言,那么你真是太幸運(yùn)了,因?yàn)镵otlin對(duì)于你來(lái)說,將會(huì)非常簡(jiǎn)單,例如像我這樣的,兩三天就可以幾乎應(yīng)付大部分的開發(fā)了。

這里就不對(duì)Kotlin語(yǔ)言做過多的描述了,今天的重點(diǎn),是我升級(jí)到Android Studio 3.0 以后的故事。

正文

來(lái)到公司打開電腦,升級(jí)Android Studio到3.0版本,編譯目前的工程。哎呀呀我擦擦,為什么報(bào)了好多的錯(cuò)?別著急,我們慢慢解決這些問題。


Android Studio的自帶Gradle版本是4.1,插件版本是3.0.0,所以如果你使用的是老版本,就會(huì)出現(xiàn)一些小的兼容問題,我們看看報(bào)了哪些錯(cuò)誤呢:

問題1

Error:(72, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=appDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

outputFile是只讀屬性,不可以對(duì)他進(jìn)行修改

看一下我的gradle里面的代碼:

// 定義生成的apk的名稱
def apkName;

buildTypes {
 release {
  ...
  // 定義release版本生成的apk的名字
  apkName = "xxx" + VERSION_NAME + "_release.apk";
 }
 debug {
  ...
  // 定義debug版本生成的apk的名字
  apkName = "ugirls_" + VERSION_NAME + "_debug.apk";
 }
}

// 修改apk build的名字
android.applicationVariants.all { variant ->
 variant.outputs.each { output ->
  def outputFile = output.outputFile
  if (outputFile != null && outputFile.name.endsWith('.apk')) {
    //這里使用之前定義apk文件名稱
    output.outputFile = new File(outputFile.parent, apkName)
  }
 }
}

這段代碼的功能是修改Build命令生成的apk的名稱,因?yàn)閛utputFile變成只讀屬性,所以報(bào)錯(cuò)。

修改后:

// 之前代碼保持不變
// 修改apk build的名字
android.applicationVariants.all { variant ->
 variant.outputs.all {
  if (outputFileName.endsWith('.apk')) {
   //這里使用之前定義apk文件名稱
   outputFileName = apkName
  }
 }
}

把each修改為all,然后通過outputFileName修改生成的apk的名稱。

如果你提示沒有找到all方法或者是未找到outputFileName,你可以先把這個(gè)功能注釋掉,等其他問題都解決了,再打開就可以解決這個(gè)問題了。

問題2

Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

所有的flavor屬性應(yīng)當(dāng)屬于同一個(gè)命名空間

看著問題似乎有點(diǎn)深?yuàn)W,其實(shí)就是需要我們?yōu)閒lavors設(shè)置一個(gè)版本,統(tǒng)一使用相同版本的flavors。

defaultConfig {
 targetSdkVersion:***
 minSdkVersion :***
 versionCode:***
 versionName :***
 //為flavor設(shè)置一個(gè)版本,命名是隨意的
 flavorDimensions "versionCode"
}

問題3


有些庫(kù)不能被正常引用,例如我使用的multidex,在上面的截圖中已經(jīng)提示我們?nèi)绾谓鉀Q這個(gè)問題

buildscript {
 repositories {
  ...
  // 添加google庫(kù)的依賴
  google()
 }
 dependencies {
  ...
 }
}

問題4

Error:(2638) error: style attribute '@android:attr/windowEnterAnimation' not found.

提示我們找不到@android:attr/windowEnterAnimation,因?yàn)橐呀?jīng)不支持@開頭使用android自帶的屬性,我們只要把@符號(hào)刪掉就可以了。

修改前:

<style name="ToastStyle" parent="android:Animation">
  <item name="@android:windowEnterAnimation">@anim/push_fade_in</item>
  <item name="@android:windowExitAnimation">@anim/push_fade_out</item>
</style>

修改后:

<style name="ToastStyle" parent="android:Animation">
  <item name="android:windowEnterAnimation">@anim/push_fade_in</item>
  <item name="android:windowExitAnimation">@anim/push_fade_out</item>
</style>

問題5

Error:Execution failed for task ':app:javaPreCompileAppDebug'.
Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.
- butterknife-6.1.0.jar (com.jakewharton:butterknife:6.1.0)
Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future.
See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

好多的錯(cuò)誤日志啊,其實(shí)最關(guān)鍵的只有前兩行:

使用注解編譯庫(kù),需要顯示的聲明,而我正在使用的butterknife是含有注解編譯功能的,但是并沒有聲明。

解決辦法:

android {

 defaultConfig {
 // 聲明需要使用注解功能
  javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
  ...
 }
}

其他的變化

通過剛才的修改,我的工程已經(jīng)運(yùn)行起來(lái)了,但是發(fā)現(xiàn)了Android Studio 3.0 的幾個(gè)小變化。

變化1

Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle:
apply plugin: 'me.tatarka.retrolambda'

從警告上看,希望我移除這個(gè)插件,于是我到官網(wǎng)上查看了一下信息:

If Android Studio detects that your project is using Jack, Retrolambda, or DexGuard, the IDE uses Java 8 support provided by those tools instead.

如果Android Studio發(fā)現(xiàn)你的工程中使用Jack ,Retrolambda 或DexGuard,編輯器會(huì)使用Java8支持,替換這個(gè)工具。
因?yàn)槲沂褂胢e.tatarka.retrolambda第三方框架,所以就出現(xiàn)了這個(gè),我們只要?jiǎng)h除相關(guān)的配置就可以了。

變化2

提示有更高版本你的第三方框架:

上面的截圖顯示,gson有更高的版本2.8.3,提示我升級(jí)gson。這就省去了我們?nèi)ithub上查看是否版本更新的時(shí)間,非常的方便。

總結(jié)

這就是我今天遇到的問題及解決方案,如果之前有更多問題再補(bǔ)充。

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

相關(guān)文章

  • Android跑馬燈MarqueeView源碼解析

    Android跑馬燈MarqueeView源碼解析

    這篇文章主要為大家詳細(xì)介紹了Android跑馬燈MarqueeView源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android編程中HTTP服務(wù)用法詳解

    Android編程中HTTP服務(wù)用法詳解

    這篇文章主要介紹了Android編程中HTTP服務(wù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android中http服務(wù)的具體步驟與相關(guān)使用技巧,需要的朋友可以參考下
    2016-01-01
  • Android sdcard實(shí)現(xiàn)圖片存儲(chǔ) 、聯(lián)網(wǎng)下載

    Android sdcard實(shí)現(xiàn)圖片存儲(chǔ) 、聯(lián)網(wǎng)下載

    這篇文章主要介紹了Android sdcard實(shí)現(xiàn)圖片存儲(chǔ) 、聯(lián)網(wǎng)下載功能,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android使用手勢(shì)實(shí)現(xiàn)翻頁(yè)效果

    Android使用手勢(shì)實(shí)現(xiàn)翻頁(yè)效果

    這篇文章主要介紹了Android使用手勢(shì)實(shí)現(xiàn)翻頁(yè)效果,本程序使用了一個(gè)ViewFlipper組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Android 操作系統(tǒng)獲取Root權(quán)限 原理詳細(xì)解析

    Android 操作系統(tǒng)獲取Root權(quán)限 原理詳細(xì)解析

    許多機(jī)友新購(gòu)來(lái)的Android機(jī)器沒有破解過Root權(quán)限,無(wú)法使用一些需要高權(quán)限的軟件,以及進(jìn)行一些高權(quán)限的操作,其實(shí)破解手機(jī)Root權(quán)限是比較簡(jiǎn)單及安全的,破解Root權(quán)限的原理就是在手機(jī)的/system/bin/或/system/xbin/目錄下放置一個(gè)可執(zhí)行文件“su”
    2013-10-10
  • android實(shí)現(xiàn)多點(diǎn)觸摸效果

    android實(shí)現(xiàn)多點(diǎn)觸摸效果

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)多點(diǎn)觸摸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android高德地圖poi檢索仿微信發(fā)送位置實(shí)例代碼

    Android高德地圖poi檢索仿微信發(fā)送位置實(shí)例代碼

    本篇文章主要介紹了Android高德地圖poi檢索仿微信發(fā)送位置實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • Android jni調(diào)試打印char陣列的實(shí)例詳解

    Android jni調(diào)試打印char陣列的實(shí)例詳解

    這篇文章主要介紹了Android jni調(diào)試打印char陣列的實(shí)例詳解的相關(guān)資料,通過此文希望能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • Android中的導(dǎo)航navigation的使用詳細(xì)步驟

    Android中的導(dǎo)航navigation的使用詳細(xì)步驟

    在Android中,導(dǎo)航主要通過使用Navigation SDK來(lái)實(shí)現(xiàn),該SDK提供了一組工具和組件,可以幫助開發(fā)人員構(gòu)建具有一致性和可訪問性的用戶界面,這篇文章主要介紹了Android中的導(dǎo)航navigation的使用詳細(xì)步驟,需要的朋友可以參考下
    2024-04-04
  • Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法

    Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法

    這篇文章主要介紹了Android開發(fā)設(shè)置RadioButton點(diǎn)擊效果的方法,詳細(xì)分析了Android開發(fā)中RadioButton屬性功能及相關(guān)設(shè)置技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論