当前位置: 首页 > news >正文

Filament for Android 编译搭建(基于Ubuntu20.04系统)

一、Filament 源代码下载

github下载地址: 

2、安装clang

我是直接安装clang-10

Ubuntu 20.04 ,sudo apt install clang 命令默认就是clang-10

$sudo apt-get install clang-10

# 安装 AST.h 等头文件

$sudo apt-get install libclang-10-dev

$sudo apt-get install libglu1-mesa-dev

$sudo apt-get install libc++-10-dev

$sudo apt-get install libc++abi-10-dev

$sudo apt-get install libxi-dev

配置为默认的clang、clang++、cc、c++

$sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100

$sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-10 100

$sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100

$sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100

$sudo apt-get install libxxf86vm-dev

$sudo apt-get install x11proto-xf86vidmode-dev

3、安装ninja

sudo apt-get install ninja-build

4、安装Android Studio

google android developers官网下载最新的:https://developer.android.com/studio,

下载最新Android Studio的后(当前最新版本为:android-studio-2021.3.1.17-linux.tar.gz)

直接解压即可

我本地是:

mkdir ~/Android

cp android-studio-2021.3.1.17-linux.tar.gz ~/Android

cd  ~/Android

tar -zxf android-studio-2021.3.1.17-linux.tar.gz

运行直接到android-studio/bin目录,执行./studio.sh

注意:如果之前有安装过老的版本Android Studio,在导入filament/android时可能会提示版本或插件不兼容问题

我本地就遇到了这个问题

The project is using an incompatible version (AGP 7.3.0-alpha07) of the Android Gradle plugin. Latest supported version is AGP 7.2.1

解决方案就是更新Android Studio版本和插件

5、Android Studio安装cmake和NDK

打开Android studio -> Tools -> SDK Manager

首先建议安装最新的SDK ,注意选择自己的安装路径,记录号安装路径,后面配置环境变量需要用到

 

 到SDK目录看一下安装的版本:如我本地安装目录是/home/liuzhengliang/Android/Sdk/

6、配置环境变量

vim ~/.bashrc

添加, 路径换成自己的sdk目录

export PATH=$PATH:/home/liuzhengliang/Android/Sdk/cmake/3.22.1/bin

export ANDROID_NDK="/home/liuzhengliang/Android/ndk/25.1.8937393"

export ANDROID_SDK="/home/liuzhengliang/Android/Sdk"

export PATH=$PATH:$ANDROID_NDK

export ANDROID_HOME=$ANDROID_SDK

重启机器,或者在编译filament的终端执行source ~/.bashrc

三、Filament 在Ubuntu系统上编译

./build.sh -p android release

编译成功后会在out生成如下所示目录

进入到 out/cmake-release 目录下: 

ninja install

四、Android studio运行 filament samples

Android studio 直接open filament下的android目录

方法:打开Android studio -> File -> Open

需要debug的手机链接到PC电脑(记得开启adb debug)

  1. 选择需要运行的samples
  2. 链接到手机adb
  3. 点击Run编译并运行

如samples:sample-gltf-viewer的效果:

5、其他问题记录

1. 我本地编译报遇到过:'X11/extensions/xf86vmode.h' file not found

/home/liuzhengliang/22-code/filament/filament/third_party/libsdl2/src/video/x11/SDL_x11video.h:56:10: fatal error: 'X11/extensions/xf86vmode.h' file not found
#include <X11/extensions/xf86vmode.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方法:

sudo apt-get install libxxf86vm-dev
sudo apt-get install x11proto-xf86vidmode-dev

2. ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

解决方法:

安装openjdk

sudo apt-get install openjdk-11-jdk

3. ccache: error: SLOPPINESS: unknown sloppiness: "locale"

ccache: error: SLOPPINESS: unknown sloppiness: "locale"

解决方法:

编译时遇到ccache报错:

解决方案:卸载本地的ccache 或者更新到最新ccache版本

4. fatal error: 'type_traits' file not found #include <type_traits>

报错:/home/liqinyan/data/source_code/3d_filament_code/google-filament/filament/libs/math/include/math/compiler.h:20:10: fatal error: 'type_traits' file not found #include <type_traits> ^~~~~~~~~~~~~ 1 error generated. ninja: build stopped: subcommand failed.

解决方法:

缺少c++相关库,重新执行下面的命令
$sudo apt-get install libglu1-mesa-dev
$sudo apt-get install libc++-10-dev
$sudo apt-get install libc++abi-10-dev
$sudo apt-get install libxi-dev

http://www.lryc.cn/news/121704.html

相关文章:

  • 【MySQL--->数据库操作】
  • PhotoShop2023 Beta AI版安装教程
  • 并发冲突导致流量放大的线上问题解决
  • Spring Cloud Gateway过滤器GlobalFilter详解
  • 【LeetCode】1281.整数的各位积和之差
  • 22、springboot的Profile(通过yml配置文件配置 profile,快速切换项目的开发环境)
  • 2023-08-12力扣每日一题-暴力hard
  • Mac安装nvm教程及使用
  • 左值引用和右值引用
  • JavaWeb 中对 HTTP 协议的学习
  • 06-hadoop集群搭建(root用户)
  • MySQL 窗口函数是什么,有这么好用
  • 用户数据报协议UDP
  • STM32F429IGT6使用CubeMX配置外部中断按键
  • 时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)
  • [开发|前端] 路由守卫笔记
  • 网络基础——网络的由来与发展史
  • 八数码(bfs)
  • CCLINK IE FIELD BASIC转MODBUS-TCP网关cclink与以太网的区别
  • 【Rust】Rust学习 第十一章编写自动化测试
  • 关于使用pycharm遇到只能使用unittest方式运行,无法直接选择Run
  • Docker+rancher部署SkyWalking8.5并应用在springboot服务中
  • 代码随想录第45天 | 322. 零钱兑换、279. 完全平方数
  • 怎么加入Microsoft Cloud Partner Program?
  • LNMP简易搭建
  • CClink IE转Modbus TCP网关连接三菱FX5U PLC
  • PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置
  • GO学习之 微框架(Gin)
  • C语言 字符指针
  • Springboot所有的依赖