A problem occurred configuring project ':flutter_document_picker'. > Failed to notify project evaluation listener. > java.lang.AbstractMethodError (no error message)
就是plugin库编译没通过,基本是 你的项和plugin库 配置 不一致导致的(具体看下面)
一般解决方案:- 学习第三方库,把关键代码copy,改改到你项目里面
- 强烈推荐
- 防止了大量不可控代码的引入
- 又向别人学习了
- 改自己项目配置,升或降版本 (一般是第三方库的版本高)
- 推荐,根本思路嘛,总的积极些
- 但是有成本,小心 依赖的依赖 搞死人。。。。
- 把第三方库copy到你本地,然后改
- 不好,很不好,有偷懒嫌疑
- 要是有依赖的依赖,得搞死了
- 但假设双端,缺乏一端支持,倒是可以节省人力
扩大log输出,可以先分析下
1. Android项目依赖plugin- cd到 shell根目录
- 运行assemble方法,./gradlew :app:assembleDebug --info --stacktrace
flutter build aar --no-profile --no-release -v
版本相关冲突下面就是可能遇到的一些差异
gradle相关gradle的版本,查看 gradle-wrapper.properties文件
distributionUrl=https://services.gradle.org/distributions/gradle-4.10.1-all.zipbuild tool 版本
build.gradle 文件
com.android.tools.build:gradle:3.2.1
- kotlin首先要编译,即kotlin的gradle插件版本 与 gradle版本对相应。
- kotlin的运行时版本
kotlin的gradle插件 (使项目可以构建kotlin)
- build.gradle的buildscript里
## build.gradle里 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" ext.kotlin_version = '1.2.51'
kotlin的标准库
- 分为jdk7 和 jdk8 的
- 在build.gradle的dependencies里
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"Android X 与 AppCompat 部分对应关系
还有项目中的import,我就省略了
//appcompat
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
implementation 'com.android.support:exifinterface:27.1.0'
//AndroidX
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.exifinterface:exifinterface:1.3.2'
Android、IOS高版本API
编译时支持了高版本API,一般是 第三方库plugin 维护的比较新,你的项目比较老,没支持这些API。
Android支持了高版本API配置想对应
android {
compileSdkVersion 29
///...
return if (useOldApi || Build.VERSION.SDK_INT < 29) {
DBUtils
} else {
AndroidQDBUtils
}
///...
@RequiresApi(Build.VERSION_CODES.R)
object Android30DbUtils : IDBUtils {
///...
IOS支持了高版本 API
if (@available(iOS 15, *)) {
[PHPhotoLibrary.sharedPhotoLibrary
presentLimitedLibraryPickerFromViewController: controller
completionHandler:^(NSArray * _Nonnull list) {
[handler reply: list];
}];
} else {
[PHPhotoLibrary.sharedPhotoLibrary presentLimitedLibraryPickerFromViewController: controller];
[handler reply:nil];
}



