Flutter迁移AndroidX后运行报错:ProcessException异常解决求助
Flutter迁移AndroidX后Gradle运行错误解决方案
我之前也踩过类似的坑,先帮你梳理问题和解决步骤:
你遇到的报错信息
- Error running Gradle: ProcessException: Process "E:\Flutter\myapp\android\gradlew.bat" exited abnormally:
Command: E:\Flutter\myapp\android\gradlew.bat app:properties
Finished with error: Please review your Gradle project setup in the android/ folder.
你的项目配置文件
gradle-wrapper.properties
#Mon Jul 29 22:33:03 ICT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
android/build.gradle
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.2' classpath 'com.google.gms:google-services:4.3.0' } } allprojects { repositories { google() jcenter() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir }
app/build.gradle
def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 28 lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.visionelectronics.smart_rolling_door" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVer sionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' } apply plugin: 'com.google.gms.google-services'
具体解决步骤
先修复低级拼写错误
看你app/build.gradle的defaultConfig块里,versionName flutterVer sionName这里多了个空格,应该改成versionName flutterVersionName。这个小错误会直接导致Gradle解析失败,是最优先要解决的问题。补全AndroidX核心配置
迁移AndroidX必须在android/gradle.properties文件里添加以下两行(如果还没加的话):android.useAndroidX=true android.enableJetifier=true这两行是告诉Gradle启用AndroidX,并自动将第三方依赖迁移到AndroidX版本,缺一不可。
清理缓存重新构建
改完配置后,缓存可能残留旧数据,执行以下操作:- 删除项目根目录下的
.gradle文件夹,以及android目录下的.gradle文件夹 - 在终端运行
flutter clean - 接着运行
flutter pub get - 最后尝试重新运行项目
- 删除项目根目录下的
版本兼容性检查(备选方案)
你的Gradle 5.1.1和AGP 3.4.2版本是兼容的,但如果前面的步骤都没用,可以试试升级版本:- 把
gradle-wrapper.properties里的distributionUrl改成https\://services.gradle.org/distributions/gradle-5.4.1-all.zip - 把
android/build.gradle里的AGP版本改成classpath 'com.android.tools.build:gradle:3.5.3'
升级后重复步骤3清理缓存再尝试运行。
- 把
按照这个流程走,应该能解决你遇到的Gradle错误。
内容的提问来源于stack exchange,提问作者NamCao
相关产品推荐
相关产品推荐

