Flutter第三方库images_picker编译错误解决
问题
Xcode升级13.3后images_picker需要使用1.2.11版本,但是使用该版本Flutter编译报错,如下:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Multiple task action failures occurred:
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.camera:camera-view:1.0.0-alpha30.
AAR metadata file: /Users/xxx/.gradle/caches/transforms-2/files-2.1/a7349c0fe56bc16154716f788d7e3816/jetified-camera-view-1.0.0-alpha30/META-INF/com/android/build/gradle/aar-metadata.properties.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.activity:activity:1.4.0.
AAR metadata file: /Users/xxx/.gradle/caches/transforms-2/files-2.1/3d69715f367c1303568a03164e319955/jetified-activity-1.4.0/META-INF/com/android/build/gradle/aar-metadata.properties.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.camera:camera-lifecycle:1.1.0-alpha10.
AAR metadata file: /Users/xxx/.gradle/caches/transforms-2/files-2.1/6d92a5cd8d8f9b4306d5dc997981c775/jetified-camera-lifecycle-1.1.0-alpha10/META-INF/com/android/build/gradle/aar-metadata.properties.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.camera:camera-core:1.1.0-alpha10.
AAR metadata file: /Users/xxx/.gradle/caches/transforms-2/files-2.1/8bf7d16da0b583d42148039b5f0e2f7a/jetified-camera-core-1.1.0-alpha10/META-INF/com/android/build/gradle/aar-metadata.properties.
问题分析
从错误提示从可以看出是库的版本最低要求是安卓31,而工程的配置是30。
解决方案
1.将工程最低支持安卓版本改为31
由于项目需要支持30,而且改成31还会报其他错误所以没有采用该方案。
2.修改images_picker
在github上查看images_picker的源码地址,对其进行fork然后修改了库使其最低支持安卓30并支持Xcode13.3。地址
flutter工程引入:
images_picker:
git:
url: https://github.com/1339256554/images_picker.git
ref: '1.2.9+2’
3.本地修改源码
如果嫌弃github下载慢,还可以将修改好的源码直接放在本地采用本地modules方式引入。
4.修改Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'PERMISSION_LOCATION=1',
'PERMISSION_CAMERA=1',
'PERMISSION_MICROPHONE=1',
]
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end