flutter第五篇:常见问题
1、新建一个项目后,在连接andorid模拟器的时候,报jdk和gradle的版本不兼容
解决办法:
第一步:修改android->app->build.gradle文件,把JavaVersion.VERSION_1_8都改为JavaVersion.VERSION_21。有三处。
第二步:修改android->gradle->wrapper->gradle-wrapper.properties文件,适当升级gradle的版本,如升级到8.10.2,最新版见https://services.gradle.org/distributions。
或者直接修改为
https://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-all.zip
https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.10.2-all.zip
爹三步:修改android->settings.gradle文件,适当升级com.android.application插件的版本,如升级到8.7.2,https://developer.android.google.cn/build/releases/gradle-plugin?hl=zh-cn#android-gradle-plugin-8.7.2。
升级org.jetbrains.kotlin.android插件的版本,如升级到2.0.21,最新版见https://kotlinlang.org/docs/releases.html#release-details。
2、引入一些第三方插件后,打包时,提示ndk的版本太低
按提示升级ndk版本即可。原本的ndk版本在$flutter_path/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy文件中可以看到。
3、web 加载Imge组件时会报错:The following ProgressEvent object was thrown resolving an image codec:
解决办法:Edit Configurations,在Additional run args 框中填入-d chrome --web-renderer html
4、在模拟器中加载照片失败
════════ Exception caught by image resource service ════════════════════════════
The following SocketException was thrown resolving an image codec:
Failed host lookup: 'oss.xxx.com' (OS Error: No address associated with hostname, errno = 7)
解决办法:不通过IDE启动模拟器,而是通过命令行启动模拟器,在通过命令行启动模拟器时指定dns-sever
假如开发环境是windows,则模拟器在$home\AppData\Local\Android\android-sdk\emulator目录,在此目录调出Powershell或Git Bash窗口,执行 .\emulator.exe -avd flutter_emulator -dns-server 8.8.8.8,114.114.114.114,即可启动flutter_emulator这个模拟器。
可以用命令查看所有的AVD:.\emulator.exe -list-avds
5、dp和px
px是像素,屏幕横向、纵向分布px的数量叫分辨率。 1080 * 1920分辨率其实是表示屏幕横向分布了1080个px,纵向分布了1920个px。window.physicalSize,取的是px。
dp是设备无关像素,在开发中使用。MediaQuery.of(context).size和globalKey.currentContext.size取的都是dp。给Container的宽、高指定值,指定的也是dp。
像素密度:px的数量/dp的数量,double类型。
6、在windows环境打正式android包时,报flutter.bat finished with non-zero exit value 1。
把在Path环境变量中指定的flutter目录删掉,重新下一个或者升级成最新版本。
7、在打包时,用Android Studio打开项目的android目录时,报
Could not create task ':flutter_plugin_android_lifecycle:generateDebugUnitTestConfig'.
this and base files have different roots: D:\StudioProjects\flutter_learn\build\flutter_plugin_android_lifecycle and $home\AppData\Local\Pub\Cache\hosted\pub.flutter-io.cn\flutter_plugin_android_lifecycle-2.0.23\android.
Android Studio打开android目录后,先执行flutter clean,然后点击右上角的大象长鼻子按钮,Sync Project With Gradle Files,最后再执行flutter pug get,这之后Run app就应该没问题了。
8、Run app 没问题后,Build -> Generate Signed App Bundle / APK,报错
多试几次:先执行flutter clean,然后点击右上角的大象长鼻子按钮,Sync Project With Gradle Files,再执行flutter pug get,再Run app,再Genegate