Android Studio 3.0 的一些小變化
前言
一大早還在北京擁擠的地鐵裡,我的CTO閆哥在微信裡給我發了一條資訊:Android Studio 3.0釋出了。
為什麼會這麼關注Android Studio 3.0 的版本釋出呢?主要是因為公司即將開發的新app準備使用Kotlin語言,而Android Studio 3.0 已經把Kotlin的語言支援內建進去了,這樣就省去了很多的麻煩,如果你還沒接觸過Kotlin語言,可以去百度一下 他們的官網,如果你現在使用的Java語言,那麼你真是太幸運了,因為Kotlin對於你來說,將會非常簡單,例如像我這樣的,兩三天就可以幾乎應付大部分的開發了。
這裡就不對Kotlin語言做過多的描述了,今天的重點,是我升級到Android Studio 3.0 以後的故事。
正文
來到公司開啟電腦,升級Android Studio到3.0版本,編譯目前的工程。哎呀呀我擦擦,為什麼報了好多的錯?彆著急,我們慢慢解決這些問題。
Android Studio的自帶Gradle版本是4.1,外掛版本是3.0.0,所以如果你使用的是老版本,就會出現一些小的相容問題,我們看看報了哪些錯誤呢:
問題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是隻讀屬性,不可以對他進行修改
修改後的程式碼:
// 修改apk build的名字
android.applicationVariants.all { variant ->
variant.outputs.all {
if (outputFileName.endsWith('.apk')) {
if ("debug".equalsIgnoreCase(variant.buildType.name)) {
outputFileName = "app_debug.apk"
} else if("release".equalsIgnoreCase(variant.buildType.name)){
outputFileName = "app_release.apk"
}
else if("lzp".equalsIgnoreCase(variant.buildType.name)){
outputFileName = "app_test.apk"
}
}
}
}
把each修改為all,然後通過outputFileName修改生成的apk的名稱。
如果你提示沒有找到all方法或者是未找到outputFileName,你可以先把這個功能註釋掉,等其他問題都解決了,再開啟就可以解決這個問題了。
問題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屬性應當屬於同一個名稱空間
看著問題似乎有點深奧,其實就是需要我們為flavors設定一個版本,統一使用相同版本的flavors。
defaultConfig {
targetSdkVersion:***
minSdkVersion :***
versionCode:***
versionName :***
//為flavor設定一個版本,命名是隨意的
flavorDimensions "versionCode"
}
問題3
有些庫不能被正常引用,例如我使用的multidex,在上面的截圖中已經提示我們如何解決這個問題
buildscript {
repositories {
...
// 新增google庫的依賴
google()
}
dependencies {
...
}
}
問題4
Error:(2638) error: style attribute '@android:attr/windowEnterAnimation' not found.
提示我們找不到@android:attr/windowEnterAnimation,因為已經不支援@開頭使用android自帶的屬性,我們只要把@符號刪掉就可以了。
修改前:
<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.
好多的錯誤日誌啊,其實最關鍵的只有前兩行:
使用註解編譯庫,需要顯示的宣告,而我正在使用的butterknife是含有註解編譯功能的,但是並沒有宣告。
解決辦法:
android {
defaultConfig {
// 宣告需要使用註解功能
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
...
}
}
其他的變化
通過剛才的修改,我的工程已經執行起來了,但是發現了Android Studio 3.0 的幾個小變化。
變化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'
從警告上看,希望我移除這個外掛,於是我到官網上檢視了一下資訊:
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發現你的工程中使用Jack ,Retrolambda 或DexGuard,編輯器會使用Java8支援,替換這個工具。
因為我使用me.tatarka.retrolambda第三方框架,所以就出現了這個,我們只要刪除相關的配置就可以了。
變化2
提示有更高版本你的第三方框架:
上面的截圖顯示,gson有更高的版本2.8.3,提示我升級gson。這就省去了我們去github上檢視是否版本更新的時間,非常的方便。
總結
這就是我今天遇到的問題及解決方案,如果之前有更多問題再補充。
祝大家週末愉快~
相關文章
- Android studio遇到的一些小問題Android
- Android Studio 2.0 to Android Studio 3.0Android
- Android Studio 3.0 Canary 釋出Android
- 模組化的一些小研究
- 當 jenkins遇上Android Studio 3.0JenkinsAndroid
- Android Studio 3.0新功能介紹Android
- 前端優化的一些小技巧前端優化
- Android Studio 3.0 上 Gradle 改動AndroidGradle
- Android Studio 3.0更新:Kotlin正式可用AndroidKotlin
- Android Studio 3.0 svg圖片問題AndroidSVG
- android Studio R 變紅Android
- Android Studio3.0 NDK配置與開發Android
- android studio 3.0 gradle 打包指令碼配置AndroidGradle指令碼
- React Redux使用的一些小優化ReactRedux優化
- Android Studio 3.0 利用 Android Profiler 測量應用效能Android
- Android 9.0的一些變化Android
- Android studio3.0 的幾種依賴方式筆記Android筆記
- 官方詳細介紹Android Studio 3.0 Canary 1Android
- Android studio更新到3.0後問題解決Android
- Android Studio3.0更新之路(遇坑必入)Android
- Android Studio 3.0 Android 分析器 | 中文教學視訊Android
- (Android Studio 3.0)Android Profiler記憶體洩漏檢查Android記憶體
- 升級xCode9 導航欄變化及一些小技巧XCode
- Android Studio 升級到3.0 提示 java.lang.NoClassDefFoundErrorAndroidJavaError
- 領略千變萬化的Android Drawable (一)Android
- 智慧經營3.0都有哪些數字化變化?
- 查收新年禮物丨DevEco Studio 3.0 Beta2釋出,20個新變化詳解dev
- Android L 的 API 變化AndroidAPI
- Swagger3.0新版帶來的新變化Swagger
- 網站前端優化一些小經驗網站前端優化
- Android Studio 3.0 新功能解析和舊專案適配Android
- jquery的一些小技巧jQuery
- 一些小的方法工具
- android 14變化Android
- 記錄專案中Swift3.0的語法變化Swift
- android studio 的一些bug修改Android
- Android Studio 3.0正式版下載(附安裝教程+快捷鍵)Android
- 一些小SQLSQL