怎么更改网站首页图片尺寸,学seo,wordpress导航栏下拉菜单,个人网站可以做论坛吗?ARM64平台Flutter环境搭建 Flutter简介问题背景搭建步骤1. 安装ARM64 Android Studio2. 安装Oracle的JDK3. 安装 Dart和 Flutter 开发插件4. 安装 Android SDK5. 安装 Flutter SDK6. 同意 Android 条款7. 运行 Flutter 示例项目8. 修正 aapt2 报错9. 修正 CMake 报错10. 修正 N… ARM64平台Flutter环境搭建 Flutter简介问题背景搭建步骤1. 安装ARM64 Android Studio2. 安装Oracle的JDK3. 安装 Dart和 Flutter 开发插件4. 安装 Android SDK5. 安装 Flutter SDK6. 同意 Android 条款7. 运行 Flutter 示例项目8. 修正 aapt2 报错9. 修正 CMake 报错10. 修正 NDK 工具链报错总结 Flutter简介
Flutter 是跨平台的UI开发框架基于 Google 的 Dart 语言开发底层依赖交叉编译工具链将编写好的dart代码转换成 JavascriptWEB端、Java/KotlinAnndroid端、Object-C/SwiftIOS端, 这样 Flutter 框架站在巨人的肩膀上就完成了一次编写多端适配的华丽转身。为了突出自身的优势相比现有的基于 Chromium 浏览器内核的多端UI框架 React Native 和 Electron在移动端 Flutter 底层基于 Dart 编译型语言直接调用 skia 渲染引擎没有 JavaScript 语言解释的性能开销在数据量大的 UI 交互表现上会更为出色同时打包后的体积相比前面两者也会小一些。
问题背景
Flutter 程序交叉编译成 Android 程序除了本身依赖 Flutter SDK 外还依赖 Android Studio集成开发环境及其相关依赖但是Google官方并没有推出 ARM64平台版本的 Android Studio 我们只能借助网上的资源自力更生不断填坑。
搭建步骤
1. 安装ARM64 Android Studio
Android Studio 本身是基于Java开发的集成开发环境(IDE), 没有ARM64版本的我们就下载官方的 Linux X64版本的链接如下选择 Linux(64位 当前版本是 2024.2.2.13 2. 安装Oracle的JDK
2024.2.2.13 版本的 Android Studio 依赖 Oracle 的 JDK国产系统自带的JDK一般都比较旧使用 OpenJDK 理论上也可行但交叉编译 Android 程序的时候会有其他错误为此下载一个较新版本的 Oracle JDK很有必要。这里推荐下载 21.0.5, 我安装在 /usr/local/jdk-21.0.5 这个目录下, 同时配置环境变量如下配置完成后记得 source /etc/profile, 让环境变量生效。
# 文件路径 /etc/profile.d/jdk.sh
export JAVA_HOME/usr/local/jdk-21.0.5
export PATH$JAVA_HOME/bin:$PATH3. 安装 Dart和 Flutter 开发插件
Oracle JDK 安装好后解压 Android Studio 压缩包后进入目录执行命令 ./bin/studio.sh 从命令行启动 Android Studio, 依次单击 File Settings Plulgins, 在Marketplace 分别搜索 Dart 和 Flutter 并单击安装按钮进行安装下载过程需要访问Google 网站如果下载无法成功建议科学上网后重试。 4. 安装 Android SDK
既然 Flutter 框架开发的程序最终需要打包成APK程序安装到 Android 手机上自然编译打包过程中离不开 Android SDK请结合自己手上的 Android 真机的 Android 版本下载对应版本的 Android SDK 到指定路径 (比如我的保存位置为 /home/greatwall/android_sdk)请确保上述路径的访问和写入权限Android Studio 对应的下载位置在 File Settings Languages Frameworks, 文件比较大请不要中途断开网络。 下载完成后请配置环境变量
# 文件路径 /etc/profile.d/android.sh, 路径请根据自身情况调整命令行输入 source /etc/profile 让其立即生效
export ANDROID_STUDIO_HOME/home/greatwall/work/flutter/android_studio/
export ANDROID_HOME/home/greatwall/android_sdk
export PATH$PATH:$ANDROID_STUDIO_HOME/bin5. 安装 Flutter SDK
Flutter 官方也没有推出ARM64版本的 SDK 不过GitHub已经有牛人完成适配并开源下载链接如下: https://github.com/zhzhzhy/Flutter-SDK-ARM64/tags 请根据自己需要下载一个较新的版本即可下载完成后将压缩包解压到 /usr/local/flutter, 并配置环境变量并让其生效:
# 文件路径 /etc/profile.d/flutter.sh命令行输入 source /etc/profile 让其立即生效
export FLUTTER_HOME/usr/local/flutter
export PATH$PATH:$FLUTTER_HOME/bin6. 同意 Android 条款
运行命令 flutter doctor --android-licenses 按照提示一路输入 y同意所有 Android 使用条款否则后续 Flutter 项目编译会报错。
7. 运行 Flutter 示例项目
使用命令 flutter run -v, 并观察输出日志检查是否有错误
8. 修正 aapt2 报错
aapt2 是 Android SDK自带的资源编译和打包工具Andio Studio 安装的默认是 X86_64 平台的 aapt2Flutter 项目编译打包的时候会报错通过命令 file aapt2 和 file aapt 可以发现 aapt2 和 aapt 的架构平台都是 X86_64网上有人已经遇到相同的问题解决方法是将编译后的 ARM64 版本替换 Android SDK安装路径下的对应版本 aapt2 和 aapt如果项目已经编译过gradle 缓存中的 aapt2 也要一并替换否则编译依旧会报错。通过命令 sudo find / -name aapt2 找到所有的 aapt2, 确保他们都是合法的 ARM64 可执行文件。
9. 修正 CMake 报错
CMake 也是 Android SDK自带的编译工具但只有 X86_64 版本方式也是找到同版本的 ARM64 版本 CMAKE 替换 Android SDK 中的 X86_64 版本GitHub 上 CMake 二进制包下载链接如下: https://github.com/Kitware/CMake/releases, 下载成功后 请将 CMake 中 bin 子目录的所有文件和 share/cmake-3.22 子目录中的文件一并替换大家可以自行根据 Flutter 编译错误提示找到缺失的文件进行替换。 比如在我电脑上出现如下报错可以手动执行一遍命令查看 CMake 的具体输出的错误信息 复制一遍以上CMake相关错误提示手动执行一遍命令如下:
/home/greatwall/android_sdk/cmake/3.22.1/bin/cmake -H/usr/local/flutter/packages/flutter_tools/gradle/src/main/groovy \
-DCMAKE_SYSTEM_NAMEAndroid \
-DCMAKE_EXPORT_COMPILE_COMMANDSON \
-DCMAKE_SYSTEM_VERSION21 \
-DANDROID_PLATFORMandroid-21 \
-DANDROID_ABIarm64-v8a \
-DCMAKE_ANDROID_ARCH_ABIarm64-v8a \
-DANDROID_NDK/home/greatwall/android_sdk/ndk/26.3.11579264 \
-DCMAKE_ANDROID_NDK/home/greatwall/android_sdk/ndk/26.3.11579264 \
-DCMAKE_TOOLCHAIN_FILE/home/greatwall/android_sdk/ndk/android-ndk-r27b/build/cmake/android.toolchain.cmake \
-DCMAKE_MAKE_PROGRAM/home/greatwall/android_sdk/cmake/3.22.1/bin/ninja \
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY/home/greatwall/work/flutter/irich/build/app/intermediates/cxx/Debug/3w6x2q1f/obj/arm64-v8a \
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY/home/greatwall/work/flutter/irich/build/app/intermediates/cxx/Debug/3w6x2q1f/obj/arm64-v8a \
-DCMAKE_BUILD_TYPEDebug \
-B/home/greatwall/work/flutter/irich/android/app/.cxx/Debug/3w6x2q1f/arm64-v8a -GNinja -Wno-dev --no-warn-unused-cli10. 修正 NDK 工具链报错
修正 CMake 错误后你会发现还是编译不过那是因为 Android Studio 自带的 NDK 也只支持 X86_64 版本需要重新编译ARM64 版本的 NDK 才行 而且 NDK 的版本要和 Flutter 项目中指定的保持一致。Github 上相关移植 NDK 的链接可供参考: https://github.com/lzhiyong/termux-ndk/releases/tag/android-ndk 总结
通过以上配置和排错过程我们发现主要影响 Flutter 工程在 ARM64 环境的编译因素是 Android 相关环境的依赖不支持 ARM64 平台因此替换所有报错的组件为相同 ARM64 版本问题即可解决。编译 Flutter IOS版本不存在这些问题因为 IOS 版本的Flutter 项目编译必须在 IOS 系统下进行还需要 IOS 开发者账号才能开发调试。