RK3399:WSL-Ubuntu16.04编译Android7.1 Industry

2023-10-29

RK3399:WSL-Ubuntu16.04编译Android7.1 Industry



ok,利用零碎的时间,前前后后花了几天时间终于将rk3399-Android7.1 Industry编译完成了,这里总结记录一下,避免踩重复的坑(注意你是需要的Android7.1还是Android7.1 Industry,这两个的固件使用的场景并不同,Industry在工业和平板和盒子等领域的使用上范围更加广泛,目前芯片环境更多适合这些场景,简单来说就是这些制程的芯片国内目前可以生产)。

一、搭建WSL-Ubuntu16.04

官方建议使用Ubuntu16.04或18.04进行编译。(个人建议使用16.04进行编译,18.04我试过出了很多问题还没有解决,目前使用的wsl-Ubuntu16.04编译成功,不清楚的可以看这里非系统盘安装WSL-Ubuntu16.04:https://blog.csdn.net/weixin_39510813/article/details/118704027?spm=1001.2014.3001.5501,安装好之后记得再更换一下软件源:https://blog.csdn.net/weixin_39510813/article/details/82497416)

之后我们通过添加网络驱动器添加(映射网络驱动器->\wsl$\Ubuntu-16.04,名字由你打开后的wsl的名称为准,我这里是Ubuntu-16.04):

在这里插入图片描述

二、编译过程

1. 准备编译环境及相关文件

https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/compile_android7.1_industry_firmware.html#

基本上是按照官方给的步骤来的:

安装并配置jdk:

sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac

安装软件包:

sudo apt-get update

sudo apt-get install git gnupg flex bison gperf libsdl1.2-dev \
libesd-java libwxgtk3.0-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \
lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip zip

下载SDK,这个地方耗时比较长,可以放到晚上下载:http://www.t-firefly.com/doc/download/page/id/3.html#other_369

之后进行校验MD5:

$ md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.001

afb279a7d2966908bcf53ce2c2c05edc  rk3399-firefly-industry-71-20190926.7z.001

$md5sum /path/to/rk3399-firefly-industry-71-20190926.7z.002

2bc5a41fd1056f1d1ab1f7e84f666bee  rk3399-firefly-industry-71-20190926.7z.002

解压(解压001即可,002和001关联的):

mkdir -p ~/proj/firefly-rk3399-Industry
cd ~/proj/firefly-rk3399-Industry
7z x /path/to/rk3399-firefly-industry-71-20190926.7z.001 -r -o.
git reset --hard

处理bundle仓库:百度云下载[bundle压缩包]

1. 进入SDK根目录
cd ~/proj/firefly-rk3399-Industry

2. 下载远程bundle仓库
git clone https://gitlab.com/TeeFirefly/rk3399-industry-nougat-bundle.git .bundle

3. 若下载仓库失败,目前bundle仓库大约1.4G左右,所以同步的时候可能会出现卡住或失败的问题,可以从下方百度云链接下载并解压到SDK根目录,解压指令如下:

7z x rk3399-industry-nougat-bundle.7z  -r -o. && mv rk3399-industry-nougat-bundle/ .bundle/

4. 更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可

.bundle/update

5. 按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支
git rebase FETCH_HEAD

2. HDMI+DP 显示编译

整体编译:
./FFTools/make.sh -j8 -d rk3399-firefly -l rk3399_firefly-userdebug
打包固件:
./FFTools/mkupdate/mkupdate.sh -l rk3399_firefly-userdebug

打包完成会在 rockdev/Image-rk3399_firefly/ 生成打包好的固件

解决完问题后编译还是比较快的:

在这里插入图片描述

3. 烧写

烧写之前已经总结过,还不太清楚的可以看这里:https://blog.csdn.net/weixin_39510813/article/details/117261824?spm=1001.2014.3001.5501

三、相关问题

1. No jack server running问题

Jack server failed to (re)start, try ‘jack-diagnose’ or see Jack server log
No Jack server running. Try ‘jack-admin start-server’
No Jack server running. Try ‘jack-admin start-server’

根据这里添加环境变量即可:

https://stackoverflow.com/questions/43996563/jack-admin-command-not-found

jack 服务器可以在 Android 源代码中的prebuilts/sdk/tools位置找到,并且可以从那里运行。

prebuilts/sdk/tools$ ./jack-admin stop-server
prebuilts/sdk/tools$ ./jack-admin start-server

或者,可以通过运行以下命令将此文件夹添加到 PATH:

export PATH=$PATH:~/myandroid/prebuilts/sdk/tools

2. Jack server SSL error问题

Communication error with Jack server (35), try ‘jack-diagnose’ or see Jack server log
SSL error when connecting to the Jack server. Try ‘jack-diagnose’

通过这里发现jdk的问题,取消TLSv1, TLSv1.1 禁用:/etc/java-8-openjdk/security/java.security

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

vim打开后搜索TLSv1后取消即可。

编辑 h o m e / . j a c k ∗ ∗ , ∗ ∗ home/.jack**,** home/.jackhome/.jack-settings$home/.jack-server/config.properties,修改SERVER_PORT_SERVICESERVER_PORT_ADMIN的端口号,然后保存。

SERVER_PORT_SERVICE=8078
SERVER_PORT_ADMIN=8079

3.Caused by: java.io.IOException: ‘.’ is not owned by ‘root’ but by ‘user’

根据这里:https://blog.csdn.net/babytiger/article/details/111050099

原因是 /home/user/.jack-server应该是owner ,和group 都 应是 root ,root,但不知为啥变成了 user,user

要改回去

chown -R root .jack-server/

chgrp -R root .jack-server/

全路径命令行

chown -R root /home/user/.jack-server

chgrp -R root /home/user/.jack-server

4. Out of memory error

FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
[  4% 730/16889] Building with Jack: out/target/common/obj/APPS/PhotoTable_intermediates/with-local/classes.dex
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed

根据这里解决,修改Java虚拟机虚拟内存大大小:https://blog.csdn.net/liangtianmeng/article/details/89522092

修改Jack的配置文件prebuilts/sdk/tools/jack-admin

这是一个管理Jack的shell脚本,找到start-server函数,直接修改其启动参数,由原来的

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=TMPDIR JACK_SERVER_VM_ARGUMENTS -cp LAUNCHER_JAR LAUNCHER_NAME"

更改为

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=TMPDIR JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp LAUNCHER_JAR LAUNCHER_NAME"

此时Jack服务器仍然在后台执行,所以我们需要将其停止,然后重启启动(make会自动启动Jack服务器)才能使得修改后的参数生效。

我们执行下面的命令此时Jack服务器仍然在后台执行,所以我们需要将其停止,然后重启启动(make会自动启动Jack服务器)才能使得修改后的参数生效。

我们执行下面的命令:

先停止服务
./prebuilts/sdk/tools/jack-admin stop-server

重新开始服务
./prebuilts/sdk/tools/jack-admin start-server

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RK3399:WSL-Ubuntu16.04编译Android7.1 Industry 的相关文章

随机推荐

  • 根文件系统构建(BusyBox方式)

    目录 根文件系统简介 BusyBox构建根文件系统 BusyBox简介 编译BusyBox构建根文件系统 生成bin sbin usr linuxrc 向根文件系统添加lib库 创建其他文件夹 根文件系统初步测试 完善根文件系统 创建 et
  • win10系统docker创建ubuntu容器解决开发环境问题

    一 win10系统使用docker的原因 最近啊 在学习人工智能 深度学习 用的win10系统进行开发 老是出现一些莫名其妙的问题 无法解决 每天都在为环境问题搞得伤透了脑筋 说到底还是要使用Linux系统进行开发比较合适 那么最好的选择就
  • maven依赖jar包时版本冲突的解决

    1 第一声明优先原则 在pom xml配置文件中 如果有两个名称相同版本不同的依赖声明 那么先写的会生效 所以 先声明自己要用的版本的jar包即可 所以 添加新依赖时要放在最后边 以防止新依赖替换原有依赖造成版本冲突 2 路径近者优先 直接
  • 静态分析工具PMD使用说明

    静态分析工具PMD使用说明 目录 静态分析工具PMD使用说明 1 目录 2 1 编写目的 3 2 PMD简介 4 3 PMD的安装和运行 4 3 1安装并从命令行运行PMD 4 3 2在Eclipse中安装PMD插件运行方式 6 3 3 使
  • 2018-2019-2 20189215 《网络攻防技术》第五周作业

    Python 黑帽子 第四章 代码托管 https github com jsjliyang python3 Black Hat tree master chapter4 教材 网络攻防技术 第十一 十二章学习 十一章 web应用程序安全攻
  • java持久化类为什么要实现序列化

    之前听老师讲过在Java里面 类有时候要实现序列化 也就是和Serializable接口相关的东西 但感觉当时好抽象忘了 上网上找了好久 看到了一篇博文 分割线 简单来说序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的 内容进行
  • [1086]Windows10下安装TortoiseSVN并配置idea

    文章目录 安装TortoiseSVN 安装简体中文语言包 IDEA 配置svn及使用 安装TortoiseSVN 下载TortoiseSVN 安装包 TortoiseSVN 1 10 0 28176 x64 svn 1 10 0 msi 中
  • 未能加载文件或程序集 Microsoft.ReportViewer.Common, Version=11.0.0.0

    WinForm客户端软件开发时 使用rdlc做报表 并且使用ReportViewer呈现报表时 开发者的机器运行正常 但是部署到第三方机器上运行时报错 大致有以下几种错误 1 未能加载文件或程序集 Microsoft ReportViewe
  • Windows系统上安装和使用CLion教程

    我相信 微软的Visual Studio应该是很多人心中 永远的神了 但用过JetBrains工具系列的朋友肯定忘不了其中的丝滑操作 所以今天就将JetBrains系列工具CLion带给大家 但CLion是收费的 刚开始会有30天的试用期
  • 企业数据安全重要?私有化部署IM,保障信息安全无忧虑!

    随着企业对数据安全和隐私保护的要求日益提高 私有化部署的办公IM成为保护企业数据安全的重要选择 WorkPlus作为领先品牌 以其强大的私有化部署能力 成为公司换办公IM的首选 本文将重点介绍WorkPlus如何守护企业数据安全 并为企业打
  • pycharm无法连接上mysql解决方法

    1 安装database navigator 社区版的pycharm Tool Windows里没有Database 所以要手动安装Database Navigator File Settings Plugins 搜索框中输入Databas
  • scratch优秀案例-中国风-西游记故事系列之孙悟空大战白骨精

    大家如果需要这个游戏案例 点赞文章 然后在会话框回复 孙悟空大战白骨精 即可获得源码 如果遇到问题 我的微信 15570666506 游戏失败的画面 我们在来看一下视频号展示的效果 少儿编程课堂 赞 6 源码系列部分 孙悟空 白骨精 白骨武
  • 创建electron+vue项目(vue 一)

    1 安装Vue CLI 已安装跳过 npm install g vue cli 2 创建vue项目 vue create my project 3 添加electron builder vue add electron builder 4
  • 大数据是什么,大数据的特点主要有哪些,应该怎么运用?

    大数据 或称巨量资料 指的是所涉及的资料量规模巨大到无法透过目前主流软件工具 在合理时间内达到撷取 管理 处理并整理成为帮助企业经营决策更积极目的的资讯 而大数据技术 说简单一点就是 从各种各样类型的数据中 快速获得有价值信息的能力 大数据
  • json.stringify()的妙用

    一 JSON stringify 与JSON parse 的区别 JSON stringify 使用场景真的挺多 我们都知道JSON stringify 的作用是将 JavaScript 对象转换为 JSON 字符串 而JSON parse
  • 【DALSA Coreco - Sapera LT】开发步骤

    Sapera初级开发步骤 一 Sapera 介绍 Sapera 是Sapera LT为用户提供的API Sapera 包含两大类 基础应用类 Basic Classes 和GUI类 GUI Classes 1 基础应用类 提供了用户进行图像
  • 使用pytorch训练自己的数据集

    一 introduction 不得不说pytorch的功能十分强大 其中torchvision datasets已经内置了常用的数据集 我们也可以使用datasets ImageFolder来加载我们自己的数据集 如果你觉得这两个方法都不能
  • c函数之gettimeofday()函数获取系统时间

    gettimeofday 使用C语言编写程序需要获得当前精确时间 1970年1月1日到现在的时间 或者为执行计时 可以使用gettimeofday 函数 函数原型 int gettimeofday struct timeval tv str
  • 将一个项目拉到自己电脑上运行

    目录 1 登录自己的git仓库 找到项目的链接 复制 2 在idea中 复制链接 克隆 3 为项目添加成maven项目 右键pom xml内容 maven下可选择add as maven 4 配置好maven
  • RK3399:WSL-Ubuntu16.04编译Android7.1 Industry

    RK3399 WSL Ubuntu16 04编译Android7 1 Industry 文章目录 RK3399 WSL Ubuntu16 04编译Android7 1 Industry 一 搭建WSL Ubuntu16 04 二 编译过程