AndroidX適配
引入一些比較新的第三方庫(kù)的時(shí)候會(huì)出現(xiàn)AndroidX適配問(wèn)題峻呕,官方解決的鏈接是 https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility
大意就是如果你的項(xiàng)目沒(méi)有適配AndroidX管行,就不用使用那些比較新的庫(kù),否則會(huì)出問(wèn)題钝腺。若要升到AndroidX,并不是簡(jiǎn)單一鍵" Migrating to AndroidX"就行了,還要手動(dòng)修改老的引用他挎。
升級(jí)了一下發(fā)現(xiàn)坑還是有點(diǎn)多,又還原回去捡需,后續(xù)補(bǔ)充办桨。
把第三方庫(kù)降級(jí)適配
編譯的時(shí)候報(bào)錯(cuò) error: resource android:attr/dialogCornerRadius not found.
Output: /Users/youdongzhen/Documents/repository/trackandroid/flutter/flutter_app/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values-v28/values-v28.xml:7: error: resource android:attr/dialogCornerRadius not found.
/Users/youdongzhen/Documents/repository/trackandroid/flutter/flutter_app/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values-v28/values-v28.xml:11: error: resource android:attr/dialogCornerRadius not found.
/Users/youdongzhen/Documents/repository/trackandroid/flutter/flutter_app/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:290: error: resource android:attr/fontVariationSettings not found.
/Users/youdongzhen/Documents/repository/trackandroid/flutter/flutter_app/build/app/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:290: error: resource android:attr/ttcIndex not found.
error: failed linking references.
網(wǎng)上有很多解決方法,這里有個(gè)別人整理的:https://blog.csdn.net/weixin_43465451/article/details/83185112
然而對(duì)我來(lái)說(shuō)還是沒(méi)用站辉,我的問(wèn)題出在引入amap_base包的時(shí)候報(bào)錯(cuò)呢撞,因?yàn)榘惺褂昧薃ndroidX的庫(kù),而我的項(xiàng)目是并不兼容AndroidX庫(kù)的饰剥,需要修改相應(yīng)代碼殊霞。
先用Android項(xiàng)目方式打開(kāi)我們的flutter項(xiàng)目:
打開(kāi)后就是我們比較熟悉的Android模式,引入的第三方庫(kù)都是以模塊形式存在汰蓉,找到引發(fā)問(wèn)題的amap_base的gradle文件:
替換里面的appcompat庫(kù)
dependencies {
// implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.2.71'
implementation 'com.amap.api:navi-3dmap:6.5.0_3dmap6.5.0'
implementation 'com.amap.api:search:6.5.0.1'
implementation 'com.amap.api:location:4.4.0'
// 需要getter和setter序列化時(shí), 使用fastjson
implementation 'com.alibaba:fastjson:1.2.54'
// 其他情況使用gson, fastjson會(huì)有默認(rèn)構(gòu)造器問(wèn)題
implementation 'com.google.code.gson:gson:2.8.5'
}
替換完之后在該模塊下全局搜索AndroidX關(guān)鍵字绷蹲,像原來(lái)的
import androidx.core.app.ActivityCompat
修改為
import android.support.v4.app.ActivityCompat
一一手動(dòng)把這些庫(kù)給替換了,然后就可以編譯成功了顾孽,返回flutter項(xiàng)目里也可以正常運(yùn)行了祝钢。