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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/72156.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux操作系统】文件描述符fd

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ Linux之路       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1…

使用logback异步打印日志

文章目录 一、介绍二、运行环境三、演示项目1. 接口2. 日志配置文件3. 效果演示4. 异步输出验证 四、异步输出原理五、其他参数配置六、源码分析1. 同步输出2. 异步输出 七、总结 一、介绍 对于每一个开发人员来说&#xff0c;在业务代码中添加日志是至关重要的&#xff0c;尤…

docker基本使用方法

docker使用 1. Docker 介绍 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。Docker 使您能够将应用程序与基础架构分开&#xff0c;从而可以快速交付软件。通过利用 …

Oracle 开发篇+Java通过DRCP访问Oracle数据库

标签&#xff1a;DRCP、Database Resident Connection Pooling、数据库驻留连接池释义&#xff1a;DRCP&#xff08;全称Database Resident Connection Pooling&#xff09;数据库驻留连接池&#xff08;Oracle自己的数据库连接池技术&#xff09; ★ Oracle开启并配置DRCP sq…

神码ai伪原创文章生成器软件【php源码】

大家好&#xff0c;本文将围绕python二级用哪个版本的软件展开说明&#xff0c;二级python 值不值得考是一个很多人都想弄明白的事情&#xff0c;想搞清楚python二级用什么软件需要先了解以下几个事情。 火车头采集ai伪原创插件截图&#xff1a; 问题一&#xff1a;安装python…

java+springboot+mysql智能社区管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的社区住户综合管理系统&#xff0c;系统包含超级管理员、管理员、住户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;住户管理&#xff1b;房屋管理&#xff08;楼栋、房屋&#xff…

代码详解——Transformer

文章目录 整体架构Modules.pyScaledDotProductAttention SubLayers.pyMultiHeadAttentionPositionwiseFeedForward Layers.pyEncoderLayerDecoderLayer Models.pyget_pad_maskget_subsequent_maskPositionalEncodingEncoderDecoderTransformer 整体架构 源码地址&#xff08;py…

电商3D产品渲染简明教程

3D 渲染让动作电影看起来更酷&#xff0c;让建筑设计变得栩栩如生&#xff0c;现在还可以帮助营销人员推广他们的产品。 从最新的《阿凡达》电影到 Spotify 的上一次营销活动&#xff0c;3D 的应用让一切变得更加美好。 在营销领域&#xff0c;3D 产品渲染可帮助品牌创建产品的…

Docker+rancher部署SkyWalking8.5并应用在springboot服务中

1.Skywalking介绍 Skywalking是一个国产的开源框架&#xff0c;2015年有吴晟个人开源&#xff0c;2017年加入Apache孵化器&#xff0c;国人开源的产品&#xff0c;主要开发人员来自于华为&#xff0c;2019年4月17日Apache董事会批准SkyWalking成为顶级项目&#xff0c;支持Jav…

Kafka消息队列学习(一)

文章目录 概述核心概念生产者示例同步 / 异步发送消息生产者参数配置ack-确认机制retries - 重试次数compression_type - 消息压缩类型 分区机制分区策略 消费者消息有序性提交和偏移量偏移量提交方式手动提交 高可用设计 SpringBoot集成Kafka基本使用传递对象消息 概述 核心概…

2023企业微信0day漏洞复现以及处理意见

2023企业微信0day漏洞复现以及处理意见 一、 漏洞概述二、 影响版本三、 漏洞复现小龙POC检测脚本: 四、 整改意见 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#x…

Arduino+esp32学习笔记

学习目标&#xff1a; 使用Arduino配置好蓝牙或者wifi模块 学习使用python配置好蓝牙或者wifi模块 学习内容&#xff08;笔记&#xff09;&#xff1a; 一、 Arduino语法基础 Arduino语法是基于C的语法,C又是c基础上增加了面向对象思想等进阶语言。那就只记录没见过的。 单多…

Mysql in 查询的奇怪方向

Mysql in 查询的奇怪方向 关于表字段存储的数据为 num1,num2,num3时, 还要通过多个num1,num2入参针对该字段进行查询 建表语句 CREATE TABLE test (test_ids varchar(100) DEFAULT NULL COMMENT 保存ids 以逗号分隔 ) ENGINEInnoDB;数据项 查询语句 SELECT test_ids FROM t…

Android之版本号、版本别名、API等级对应关系(全)(一百六十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

数据结构:选择排序

简单选择排序 选择排序是一种简单直观的排序算法。首先在未排序序列中找到最大&#xff08;最小&#xff09;的元素&#xff0c;存放到排序学列的其实位置&#xff0c;然后在剩余的未排序的元素中寻找最小&#xff08;最大&#xff09;元素&#xff0c;存放在已排序序列的后面…

NLP文本分类

NLP文本分类 落地实战五大利器&#xff01;_kaiyuan_sjtu的博客-CSDN博客https://zhuanlan.zhihu.com/p/432619164 https://github.com/alibaba/EasyNLP/blob/master/README.cn.md

【5G 核心网】5G 多PDU会话锚点技术介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node

1. Stats in management UI are disabled on this node #进入rabbitmq容器 docker exec -it {rabbitmq容器名称或者id} /bin/bash#进入容器后&#xff0c;cd到以下路径 cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector false echo management_age…

什么是gRPC?

1. GRPC是google开源的rpc框架 2. 核心是一个.proto的服务描述文件 3. 添加依赖的grpc相关的包&#xff0c;配置IDEA的grpc插件&#xff0c;就可以很方便的生成调用代码 4. 通过在IDEA的protobuf插件上分别执行以下两个服务&#xff0c;就可以生成需要的调用代码 1&#xff…

2023深圳杯A题完整代码模型

已更新深圳杯A题全部版本&#xff0c;文末获取&#xff01; 摘要 现代社会&#xff0c;随着生活方式的变化和工作压力的增大&#xff0c;慢性非传染性疾病日益成为威胁公众健康的主要问题。心脑血管疾病、糖尿病、恶性肿瘤及慢性阻塞性肺病等慢性病的发病率呈现出上升趋势。为…