基于Linux平台交叉编译 flutter arm64应用

这篇具有很好参考价值的文章主要介绍了基于Linux平台交叉编译 flutter arm64应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    操作系统ubuntu 20.04,开发工具Android Studio + Flutter,运行平台RK3566 Linux。截止现在Flutter官方尚未正式对Linux arm64进行支持,仅有flutter-elinux可用。开发环境的搭建过程遇到了很多的坑,幸运的是最终完成了。为避免后来者再次浪费时间,特撰此文以飨读者。

    本文仅记录编译环境的搭建和验证,不涉及具体的应用开发。

一、操作系统以及基础环境准备

1、操作系统准备

  本文选用ubuntu 20.04。其他版本作者没试过,如果你验证某版本可行请留言。

2、准备基础环境

  安装unzip curl clang cmake pkg-config以及g++-10-aarch64-linux-gnu

sudo apt install unzip curl clang cmake pkg-config

sudo apt install git

sudo apt-get install g++-10-aarch64-linux-gnu

3、开发工具准备与环境配置

  下载flutter-elinux,并移动到/opt/目录下

git clone https://github.com/sony/flutter-elinux.git

sudo mv flutter-elinux /opt/

 配置环境变量,修改 .bashrc 文件,增加export PATH="$PATH:/opt/flutter-elinux/bin",然后执行source .bashrc

~$ vi .bashrc

#在文件末尾增加如下内容:
export PATH="$PATH:/opt/flutter-elinux/bin"

~$ source .bashrc

  至此,系统环境就配置好了。

二、建立并编译第一个DEMO程序

1、创建第一个范例程序

flutter-elinux create demo1

cd demo1

   这样我们就创建了第一个示例程序demo1并切换到该目录下,后面的操作均在此目录下进行。

2、配置编译工具和链接库

  elinux/CMakeLists.txt打如下补丁

index 8f2a634..6a2adbe 100644
--- a/elinux/CMakeLists.txt
+++ b/elinux/CMakeLists.txt
@@ -16,6 +16,9 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
 set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

+set(TARGET_ARCHITECTURE "arm64")
+set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++-10)
+

  elinux/runder/CMakeLists.txt打上如下补丁

--- a/elinux/runner/CMakeLists.txt
+++ b/elinux/runner/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.15)
-project(runner LANGUAGES CXX)
+

 if(FLUTTER_TARGET_BACKEND_TYPE MATCHES "gbm")
   add_definitions(-DFLUTTER_TARGET_BACKEND_GBM)
@@ -17,7 +17,18 @@ add_executable(${BINARY_NAME}
   "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
 )
 apply_standard_settings(${BINARY_NAME})
+
+set(FLUTTER_LIB   ${CMAKE_CURRENT_SOURCE_DIR}/../flutter_lib/)
 target_link_libraries(${BINARY_NAME} PRIVATE flutter)
 target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libffi.so )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libwayland-cursor.so )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libxkbcommon.so.0 )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libmali-wayland.so  )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libdrm.so.2 )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libwayland-server.so.0 )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}libc.so.6 )
+target_link_libraries(${BINARY_NAME} PRIVATE ${FLUTTER_LIB}ld-linux-aarch64.so.1 )
+target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
+

注意补丁前面有一行是删除操作,不要漏掉了。  

创建elinux/flutter_lib目录,将前面用到的库文件都拷贝进去。这些库文件来自rk356x_linux源码(本例如此,根据你将要运行的平台确定,同事或者合作伙伴通常会有源码)

3、编译

  执行如下命令进行编译

flutter-elinux build elinux --target-arch=arm64

  执行完毕后会生成一个build目录,需要的文件均在build/elinux/arm64/release/bundle/下,整体拷贝到rk3566板子上就可以启动了。

~/demo1$ ls build/elinux/arm64/release/bundle/
data  demo1  lib

参考文献:

arm64平台移植flutter,搭建PC端交叉编译说明-CSDN博客文章来源地址https://www.toymoban.com/news/detail-735136.html

到了这里,关于基于Linux平台交叉编译 flutter arm64应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288

    Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288

    文章目录 一、需要准备的材料 二、操作步骤 1.更新软件源 2.安装环境依赖 3.搭建交叉编译环境 4.编译QT 5.安装Qt creator 6.配置Qt kit 三.测试 前言 本文使用VMware虚拟机作为Ubuntu系统载体,采用Ubuntu18.04-64位镜像作为QT编译环境,采用RK3288搭载Ubuntu18.04-arm-32作为QT执行环境。 ① 交

    2024年02月17日
    浏览(12)
  • x86架构ubuntu 搭建arm64交叉编译环境及QT编译arm64架构工程

    x86架构ubuntu 搭建arm64交叉编译环境及QT编译arm64架构工程

    背景:由于最近项目需要做国产系统适配,很多软件需要重新编译以适配不同架构CPU。 环境: 1、主机win10 64bit   vmware虚拟主机ubuntu1804 64bit 2、vmware虚拟主机已经安装了qt5.14.2及qt_create4.11.1 一、C/C++程序交叉编译 1、交叉编译环境搭建 ①选定编译工具aarch64-linux-gnu ②安装交叉

    2024年02月09日
    浏览(12)
  • 在Linux、Ubuntu中跨平台编译ARM(AARCH64)平台的binutils

    Binutils 是GNU(https://www.gnu.org/)提供的一组二进制工具的集合。通常,在已经安装了Linux操作系统的个人电脑上,系统就已经自带了这个工具集。但在进行嵌入式开发的时候,可能会用到支持ARM64平台的Binutils,这时就需要用到交叉编译。 此前,在【1】我们已经介绍过Ubuntu中交

    2024年02月05日
    浏览(59)
  • QT5交叉编译保姆级教程(arm64、mips64)

    QT5交叉编译保姆级教程(arm64、mips64)

    什么是交叉编译? 简单说,就是在当前系统平台上,开发编译运行于其它平台的程序。 比如本文硬件环境是x86平台,但是编译出来的程序是在arm64架构、mips64等架构上运行 本文使用的操作系统:统信UOS家庭版22.0 一、安装QT5: 二、安装编译所需的组件 #安装python环境(QT中的

    2024年02月05日
    浏览(15)
  • Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程

    Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程

    苦辣酸甜时光八载,春夏秋冬志此一生 Qt简介: Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 Qt 支持的操作系统有很多,例如通用

    2024年01月23日
    浏览(27)
  • X86架构下交叉编译arm64源代码

    glibc在/lib(/lib32 /lib64)目录下的.so文件为libc.so.6 glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有

    2023年04月21日
    浏览(14)
  • Qt交叉编译到arm平台

    Qt交叉编译到arm平台

    从网上下载对应版本的Qt源码 https://download.qt.io/archive/qt/5.9/5.9.3/single/,我下载的是5.9.3的版本。 解压到ubuntu上 下载使用gcc 4.9.4编译器,并配置环境变量。(尽量选择高版本编译器) 配置Qt相关的编译器,使用linux-arm-gnueabi前缀, cd qtbase/mkspecs 修改qmake.conf文件,更改编译器为

    2024年02月11日
    浏览(9)
  • live555交叉编译(ubuntu+arm平台)

    1.下载源码 ​​​​​​http://live555.com/liveMedia/public/live555-latest.tar.gz 2.解压 tar -zxvf live555-latest.tar.gz 3.修改配置文件 1)进入live文件夹 2)复制一份配置文件 cp config.armlinux config.myarmlinux chmod 777 config.myarmlinux 3) vim config.myarmlinux 命令行-删除全部配置 4) 修改为 5.编译执行

    2024年02月05日
    浏览(11)
  • ubuntu 20.04 aarch64 平台交叉编译 opencv

    ubuntu 20.04 aarch64 平台交叉编译 opencv

    win10 64 位 VMware Workstation Pro 16 虚拟机 虚拟机安装 ubuntu 20.04 opencv 版本: 来自 github 当前最新 4.7 交叉编译 opencv,用于 嵌入式 aarch64 平台 可以直接从 github 下载 release 版本或者 使用 git clone 最新的 opencv 仓库 github opencv https://github.com/opencv/opencv git clone https://github.com/opencv/openc

    2024年02月09日
    浏览(21)
  • 【一、搭建通用Arm平台的QT交叉编译环境】

    【一、搭建通用Arm平台的QT交叉编译环境】

    为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署QT运行环境。 Ubuntu系统,本文使用的是20.04版本 arm平台通用交叉编译工具链 QT源码 1.下载工具链 点击链接https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/,选择下图中标识的文件进行下载。

    2023年04月16日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包