Flutter 完整项目 WanAndroid 开发总结

时间:2020-06-30 22:46:52   收藏:0   阅读:14

Flutter 系列文章

从19年初到现在,断断续续更新了一些 Flutter相关的文章,所有文章都在下方的专栏地址中可查。

专栏地址:

从刚开始研究学习Flutter-go项目,到后面慢慢学一些widget的使用,最后利用所学的所有知识点串联起来实现了FlutterWanAndroid项目。这个项目UI借鉴了Flutter-go项目的UI以及网上一些优秀源码或者博文实现的效果。

项目地址:

FlutterWanAndroid 项目

FlutterWanAndroid 项目 UI 主要参考 flutter-go 的 UI,而 API 接口使用了 鸿洋大佬的 玩Android 站点 api
大佬的站点: wanandroid

完成这个项目项目学到了下面的一些知识点

开发中遇到的问题

WebView 中不显示 Snakebar

查看 flutter - go 中也没有显示 snakebar

查阅资料了解到目前 WebView 插件还没有解决在 WebView 上显示弹窗这个问题
可查看 WebView 库的 issue

或者这篇文章https://www.cnblogs.com/pjl43/p/9866753.html

传递参数到 WebView 需要转义

传递参数到webview需要使用Uri.encodeComponent转义:

 Application.router.navigateTo(context,
                ‘${Routes.webViewPage}?id=${Uri.encodeComponent(collection.id)}&title=${Uri.encodeComponent(collection.title)}&link=${Uri.encodeComponent(collection.link)}‘);

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: setState() called after dispose(): _CateCardState#24c6b(lifecycle state: defunct, not mounted)

加个判断处理:

if(monded){
  	setState{
	
	}
}

flutter 版本升级(或者导入新的项目出现版本冲突解决办法 )

在 flutter 目录(从 git 下拉的目录)下执行以下语句:

    git clean -xfd
    git stash save --keep-index
    git stash drop
    git pull
    flutter doctor(命令行执行可能会失败)

可在 AndroidStudio 中打开 pubspec.yml 右上角找到 Flutter upgrade

报错:Process ‘command ‘C:\Users\Aller\flutter\bin\flutter.bat‘‘ finished with non-zero exit value 1 at o

解决办法:https://www.jianshu.com/p/60f9e3f8dcb6

GradleException() 更新为android/app/build_gradle下的FileNotFoundException()

打包问题

Bugly 打包命令: flutter build apk --release --target-platform android-arm64

  Could not determine the dependencies of task ‘:app:processReleaseResources‘.
  > Could not resolve all task dependencies for configuration ‘:app:releaseRuntimeClasspath‘.
     > Could not resolve project :path_provider_macos.
       Required by:
           project :app > project :path_provider
        > Unable to find a matching configuration of project :path_provider_macos:
            - None of the consumable configurations have attributes.

参考:

 classpath ‘com.android.tools.build:gradle:3.5.0‘ 改为
 classpath ‘com.android.tools.build:gradle:3.4.1‘

Gradle build failed to produce an .apk file.

  Gradle build failed to produce an .apk file. 
  It‘s likely that this file was generated under C:\Users\xxx\flutter\flutter_wanandroid\build, but the tool couldn‘t find it.

参考:

自定义输出apk路径导致的问题,删了AndroidStudio 中配置的自定义 apk 输出路径

verifyReleaseResources 问题

  * What went wrong:
  Execution failed for task ‘:url_launcher:verifyReleaseResources‘.
  > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
     > Android resource linking failed
       C:\Users\xxxr\.gradle\caches\transforms-2\files-2.1\37ff3f935527542507bf8998c1ff5fdc\core-1.1.0\res\values\values.xml:142:5-173:25: AAPT: error: resource android:attr/fontVariationSettings not found.

       C:\Users\xxx\.gradle\caches\transforms-2\files-2.1\37ff3f935527542507bf8998c1ff5fdc\core-1.1.0\res\values\values.xml:142:5-173:25: AAPT: error: resource android:attr/ttcIndex not found.

解决方案:

couldn‘t find "libflutter.so"

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.flutterwanandroid-shOFAQG9jJBjCIAwDUA6Xw==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.flutterwanandroid-shOFAQG9jJBjCIAwDUA6Xw==/lib/arm, /data/app/com.example.flutterwanandroid-shOFAQG9jJBjCIAwDUA6Xw==/base.apk!/lib/armeabi-v7a, /system/lib]]] couldn‘t find "libflutter.so"

原因是手机为64位cpu架构;需要添加如下配置:

ndk {
    //设置支持的SO库架构
    abiFilters ‘armeabi-v7a‘, ‘arm64-v8a‘, ‘x86‘, ‘x86_64‘
}

切换 flutter 版本

不同的 flutter 版本可能会有不一样的问题,在打包的时候我这边就一直打包不成功,故切换版本尝试,遂成功。

参考:

通过 git reset 不同的 commit 码即可
git reset --hard fabeb2a16f1d008ab8230f450c49141d35669798(release commit 码)

flutter 学习资料

上车

佛系原创号主
技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!