flutter第五篇:常见问题

1、新建一个项目后,在连接andorid模拟器的时候,报jdk和gradle的版本不兼容

解决办法:

第一步:修改android->app->build.gradle文件,把JavaVersion.VERSION_1_8都改为JavaVersion.VERSION_21。有三处。

第二步:修改android->gradle->wrapper->gradle-wrapper.properties文件,适当升级gradle的版本,如升级到8.13,最新版见https://services.gradle.org/distributions

或者直接修改为https://mirrors.cloud.tencent.com/gradle/gradle-8.13-all.zip

爹三步:修改android->settings.gradle文件,适当升级com.android.application插件的版本,如升级到8.9.0,https://developer.android.google.cn/build/releases/gradle-plugin?hl=zh-cn

Android studio与gradle的兼容性:

https://developer.android.com/studio/releases?hl=zh-cn#android_gradle_plugin_and_android_studio_compatibility

升级org.jetbrains.kotlin.android插件的版本,如升级到2.1.10,最新版见https://kotlinlang.org/docs/releases.html#release-details

E/BLASTBufferQueue(19546): [SurfaceView[com.kou.xmshop/com.kou.xmshop.MainActivity]#1](f:1,a:6) acquireNextBufferLocked: Can't acquire next buffer. Already acquired max frames 6 max:4 + 2

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就应该没问题了。Run之后,会在build/app/outputs/flutter-apk目录中生成app-debug.apk文件。

8、Run app 没问题后,Build -> Generate Signed App Bundle / APK,报错

多试几次:先执行flutter clean,然后点击右上角的大象长鼻子按钮,Sync Project With Gradle Files,再执行flutter pug get,再Run app,再Genegate。

如果点击Build->Build App Bundle(s) / APK(s)->Build APK(s),则会在build/app/outputs/apk/debug目录中生成app-debug.apk文件。

如果要打debug包,则可以执行命令flutter build apk --debug,执行完后,会在build/app/outputs/flutter-apk目录和build/app/outputs/apk/debug目录中生成app-debug.apk文件,这两个目录中的apk文件一模一样。

如果要打release包,则可以执行命令flutter build apk,执行完后,会在build/app/outputs/flutter-apk目录和build/app/outputs/apk/release目录中生成app-release.apk文件,这两个目录中的apk文件也是一模一样。release包要比debug包小得多。

打android包步骤:

①flutter clean

②点大象鼻子

③flutter pub get

④flutter build apk

posted on   koushr  阅读(236)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示