Flutter项目在Android工程打包失败
Caused by: org.gradle.process.internal.ExecException: Process 'command '/Users/Macx/Documents/flutter/bin/flutter'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:409)
at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:38)
at org.gradle.process.internal.DefaultExecActionFactory.exec(DefaultExecActionFactory.java:145)
at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1117)
at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1112)
at org.gradle.api.Project$exec$6.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at BaseFlutterTask.buildBundle(/Users/Macx/Documents/flutter/packages/flutter_tools/gradle/flutter.gradle:904)
at BaseFlutterTask$buildBundle.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:160)
at FlutterTask.build(/Users/Macx/Documents/flutter/packages/flutter_tools/gradle/flutter.gradle:1025)
编译错误有时候不是代码问题,可能是编译器的问题。
在一顿摸索后第一次解决这个方法是:
1.删掉pubspec.lock
2.重新pub get
3.在flutter项目里打开Android工程
4.build signed Apk
打包成功。
但还没完,后来又遇到了,再一次按照上面的方法来打包,失败!有毒啊。怕的不是出现错误,而是出现错误后线索无法跟踪,咱没能找到错误原因,然后猜想-验证-再猜想-再验证... 这就是没能充分理解整个编译过程的苦吧。OK,一顿操作猛如虎,在上述方法中加入了一条3.Flutter运行一下 变成这样:
1.删掉pubspec.lock
2.重新pub get
3.Flutter运行一下
4.在flutter项目里打开Android工程
5.build signed Apk
打包成功!谢天谢地,写代码居然要靠祈祷来盼成功...
好日子不长,没错,这次我又遇到了,上面以为靠谱的方法执行完后,依然失败,天呐。再来!老子跟你干到底!猜想-验证 走起!很幸运,确实又给我发糖果了,这次又增加了一条:
0.先在一个新建的项目按照以上步骤编译一下,新项目能成功的话再往下走。
1.删掉pubspec.lock
2.重新pub get
3.Flutter运行一下
4.在flutter项目里打开Android工程
5.build signed Apk
成功!F**k。这也太迷了吧!总感觉这事还没完,先做个记录吧,问题的根源是什么我也不清楚。
---------------------------------------分割线--------------------------------------------------
我找到问题的根源了,像这类问题(错误信息里看不到具体错误),可以在Terminal里边打如下命令
./gradlew compileDebugSource --stacktrace -info
我得到的信息是i18n.dart这个文件的变量找不到,但具体为什么我也说不清楚,应该是编译器的bug吧,这个文件是自动生成的。替换掉我引用的变量就编译成功了