1、修改模块的gradle
从
implementation 'io.github.sinaweibosdk:core:13.6.1@aar'
改为
implementation 'io.github.sinaweibosdk:core:13.10.4@aar'
同步、运行报错:
Didn't find class "androidx.core.content.FileProvider"
解决:据此提示判断weibo sdk使用了androidx;我的工程很懒,一般只更新业务代码,但既然要用weibo sdk,所以也必须把那些import android.support.改为使用androidx了
2、引入androidx
implementation 'androidx.core:core:1.13.1'
同步、运行报错:
... contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled ...
解决:就是说还要显式声明一下用androidx, 在gradle.properties增加2行
android.useAndroidX=true android.enableJetifier=true
同步、运行报错:
Invoke-customs are only supported starting with Android O (--min-api 26)
解决:意即 minSdkVersion 至少26,所以要修改各模块build.gradle里的minSdkVersion
同步、运行报错:
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
解决:Build - clean 再重新运行,报错:
... is currently compiled against android-30. Recommended action: Update this project to use a newer compileSdk of at least 34, for example 34.
解决:修改各模块build.gradle里的compileSdkVersion的值,至少34
同步、运行报错:
... No static method metafactory ...
解决:在模块build.gradle的android {} 里增加
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
同步、运行报错:
Didn't find class "android.support.v4.content.FileProvider"
解决:这个是manifest里有
android:name="android.support.v4.content.FileProvider"
需要改为
android:name="androidx.core.content.FileProvider"
之后就没什么错了。
3、补充
3-1、中途可能还有一些错懒得记录了,一般是java中import 语句例如
import android.support.v4.content.ContextCompat;
要转换为
import androidx.core.content.ContextCompat;
这只是举例,有很多句,有自动转换的菜单;我是手工改的。
3-2、有个webview的语句报错:
setAppCacheEnabled(BOOL),没这个方法了...
暂时注释掉,以后有空解决。
3-3、xml里写死的android.support控件要找一下改掉
例如
改为
3-4、gradle里旧support语句替换
implementation 'com.android.support:support-v4:26.+' implementation 'com.android.support:appcompat-v7:28.0.0'
替换为
implementation 'androidx.core:core:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))
第3句若不加会报错