RK3399 Android7.1 编译

article/2025/8/30 7:02:00

RK3399 Android7.1 编译

文章目录

      • RK3399 Android7.1 编译
        • 前言
        • 设置 Linux 编译环境
          • 安装 JDK
            • 可选- 更新默认的 Java 版本
          • 安装所需的程序包(Ubuntu 14.04)
        • 下载 Android SDK

前言

RK官网编译

Android搭建编译环境

设置 Linux 编译环境

使用的环境Linux 16.0.4

安装 JDK

如果 Ubuntu >= 15.04

请运行以下命令:

sudo apt-get update 
sudo apt-get install openjdk-8-jdk
可选- 更新默认的 Java 版本

运行以下命令来更新默认的 Java 版本:

sudo update-alternatives --config java 
sudo update-alternatives --config javac

SDK 在找不到操作系统默认 JDK 的时候会使用内部设定的 JDK 路径,因此,为了让同一台机器可以编译 Android 5.1 及之前的版本,去掉链接更方便

sudo /var/lib/dpkg/info/openjdk-8-jdk:amd64.prerm remove  
安装所需的程序包(Ubuntu 14.04)
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
libesd0-dev libwxgtk2.8-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-gplv2-dev gcc-multilib libswitch-perl \
libssl1.0.0 libssl-dev   

安装程序包问题

 Unable to locate package libwxgtk2.8-dev因为使用的Ubuntu系统是16.04 所以应该用sudo apt-get install libwxgtk3.0-dev

下载 Android SDK

  • Android SDK 源码包比较大,可以通过如下方式获取Android7.1源码包:
    • 下载链接

下载完成后先验证一下 MD5 码:

$md5sum rk3399_firefly_industry_android7.1_20190628.7z.001
92084d35f40bebea6466d39d52bf9704 rk3399_firefly_industry_android7.1_20190628.7z.001
$md5sum rk3399_firefly_industry_android7.1_20190628.7z.002
f25da955fdb9700fcf53569b27debdfe  rk3399_firefly_industry_android7.1_20190628.7z.002

确认无误后,就可以解压:

$mkdir firefly-rk3399
$cd ~/proj/
$7z x ./rk3399_firefly_industry_android7.1_20190628.7z.001 -ofirefly-rk3399
$cd ./firefly-rk3399
$git reset --hard //回退、撤销
注意:解压后务必要先更新远程仓库。 以下为从 gitlab 处更新的方法:
# 进入SDK根目录
1. cd ~/proj/firefly-rk3399   # 下载远程bundle仓库,若下载仓库失败,则可以从下方百度云下载[bundle压缩包]并解压到SDK根目录
2. git clone https://gitlab.com/TeeFirefly/rk3399-nougat-bundle.git .bundle# 更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行bundle文件下的update脚本即可
3. .bundle/update  或者  ./rk3399-nougat-bundle/update# 按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly-rk3399分支
4. git rebase FETCH_HEAD   

百度云下载bundle压缩包

下面是执行编译流程

可以参考官方文档

这边就直接执行了同时编译ubooot、kernel、android
执行./FFTools/make.sh -j8
遇到问题
1.Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
参考:https://stackoverflow.com/questions/40772003/cannot-use-config-cc-stackprotector-strong-fstack-protector-strong-not-support/40772208 这并不能效果
经同事指导, 这样sudo ./FFTools/make.sh -j8 执行,ok2.target thumb C++: libskia_static_32 <= external/skia/src/images/SkImageDecoder_libbmp.cppninja: fatal: fork: Cannot allocate memory
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed需要设置虚拟内存大小:
https://bogdancornianu.com/change-swap-size-in-ubuntu/

打包成统一固件update.img

编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:
./FFTools/mkupdate/mkupdate.sh update遇到问题
TabError: inconsistent use of tabs and spaces in indentationFile "device/rockchip/common/auto_generator.py", line 114continue
这个是tab和空格的问题
也可以这样执行 sudo ./FFTools/mkupdate/mkupdate.sh update
还有这个问题:
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa3 in position 20: invalid start byte
查找文件是在open('','r')方法中
解决方法:’r‘ 改为’rb‘

参考:(result, consumed) = self._buffer_decode(data, self.errors, final)

结果如图:映像文件已生成

在这里插入图片描述

参考:

RK3399编译Android固件

ubuntu 18.04编译Android 7.1源码

RK3399编译

AOSP 安卓源码7.1-ubuntu17.04编译问题

ubuntu中swap(虚拟内存)设置


http://chatgpt.dhexx.cn/article/JkXXJDQZ.shtml

相关文章

基于RK3399+5G的医用视频终端设计

当前在各种先进的信息通信技术的驱动下&#xff0c;医疗行业已呈现出信息化、移动化、智能化的发展趋势。特别是 5G 通信技术的落地应用推动了智慧医疗行业的 蓬勃发展&#xff0c;涌现出大量基于 5G 技术的医疗健康应用与服务&#xff0c;进一步融合了 5G 、 物联网与大数据…

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

RK3399快速上手 | 02-rockchip rk3399 linux sdk的使用(编译内核、编译uboot)

更新时间更新内容2022-09-15增加内核编译方法2022-10-21增加uboot编译方法和sdk开发版配置链路分析一、sdk区别 瑞芯微提供了两套sdk,一套是通过官方git仓库释放,适合于项目使用,另一套是通过github释放,适合于爱好者。 本文中使用从瑞芯微官方释放的正式linux sdk 2.7版…

RK3399平台开发系列讲解(中断篇)中断控制器驱动初始化

🚀返回专栏总目录 文章目录 一、设备树源文件1.1、gic控制器节点1.2、timer节点二、中断控制器匹配表三、中断控制器初始化3.1、函数of_irq_init3.2、函数gicv3_of_init3.3、函数gic_init_bases沉淀、分享、成长,让自己和他人都能有所收获!😄 一、设备树源文件 ARM64架构…

RK3399平台开发系列讲解(内存篇)15.34、 Linux 进程内存布局

🚀返回专栏总目录 文章目录 一、抽象内存布局二、32位机器 Linux 进程内存布局三、64位机器 Linux 进程内存布局沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 我们一起来看下进程内部的虚拟内存布局,或者说单一进程是如何安排自己的各种数据的。 一、抽象内存布…

RK3399平台开发系列讲解(内核调试篇)2.50、嵌入式产品启动速度优化

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢启动速度是嵌入式产品一个重要的性能指标,更快的启动速度会让客户有更好的使用体验,在某些方面还会节省能耗,因为可以直接关机而不需要休眠。 启动速…

钉钉F1 RK3399 咸鱼80元板子使用记录

1.简单介绍 12V电源&#xff0c;建议2A&#xff0c; 默认插电不开机&#xff0c;有大佬找到金属罩下的焊盘&#xff0c;短接可上电开机。 在usb旁边的旁边有个端子接口&#xff0c;短接就可以开机&#xff0c;建议找个一样大的接口接个开关&#xff0c;到目前为止还未测试需要…

RK3399平台开发系列讲解(网络篇)7.38、网卡驱动程序数据结构

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、套接字缓冲区结构:sk_buff二、网络接口结构:net_device沉淀、分享、成长,让自己和他人都能有所收获!😄 📢处理网卡设备时需要使用两种数据结构。 struct sk_buff结构在include/linux/skb…

RK3399平台开发系列讲解(中断篇)中断控制器(Generic Interrupt Controller)

🚀返回专栏总目录 文章目录 一、GIC硬件的实现形态二、主要的功能块三、中断类型四、中断状态沉淀、分享、成长,让自己和他人都能有所收获!😄 📢外围设备不是把中断请求直接发给处理器,而是发给中断控制器,由中断控制器转发给处理器。ARM公司提供了一种标准的中断控制…

RK3399平台开发系列讲解(DMA篇)深刻理解DMA

🚀返回专栏总目录 文章目录 一、什么是DMA二、DMA的产生:背景三、理解 DMA:协处理器沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将带领大家深刻理解DMA。 一、什么是DMA DMA (Direct Memory Access) is used to copy data directly between devices and R…

RK3399——裸机大全

CSDN仅用于增加百度收录权重&#xff0c;排版未优化&#xff0c;日常不维护。请访问&#xff1a;www.hceng.cn 查看、评论。 本博文对应地址: https://hceng.cn/2018/08/16/RK3399——裸机大全/#more 以64位的RK3399为例&#xff0c;实现裸机的启动、中断、串口(printf移植)、…

RK3399平台开发系列讲解(CPU篇)CPUFreq 中央处理器频率调节技术

🚀返回专栏总目录 文章目录 一、CPUFreq组成二、设备树配置三、原理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中央处理器频率调节(Central Processing Unit frequency,CPUFreq)技术可以降低ARM芯片的功耗,例如在系统对任务压力较小时,通过调整处理器工作频…

RK3399中文简介

1.概述 RK3399是一种低功耗、高性能的处理器&#xff0c;可用于计算、个人移动互联网设备和其他智能设备应用程序。基于大。小架构&#xff0c;它集成了双核心Cortex-A72和四核Cortex-A53与单独的NEON协处理器。 许多嵌入式功能强大的硬件引擎为高端应用程序提供了优化的性能。…

RK3399平台入门到精通系列讲解 - 总目录

总目录 欢迎大家来到内核笔记的《RK3399平台开发入门到精通系列讲解》&#xff0c;开始前博主先列出RK3399平台学习的大纲&#xff0c;同时这也可以作为大家学习RK3399内核与安卓框架的参考。下面蓝字都是传送门&#xff0c;点击进入即可&#xff1a; 更新说明 此系列已更新…

网络渗透测试实验四 CTF实践

实验目的&#xff1a;通过对目标靶机的渗透过程&#xff0c;了解CTF竞赛模式&#xff0c;理解CTF涵盖的知识范围&#xff0c;如MISC、PPC、WEB等&#xff0c;通过实践&#xff0c;加强团队协作能力&#xff0c;掌握初步CTF实战能力及信息收集能力。熟悉网络扫描、探测HTTP web服…

20159302《网络攻击与防范》第五周学习总结

教材内容学习总结 1.基础知识回顾 通过教材内容的学习了解&#xff0c;掌握了基本的网站运行模式&#xff0c;并了解其结构方式。如下图&#xff1a; 运行过程为&#xff1a;首先客户在浏览器端发送请求&#xff0c;将相关的表单、数据交付给服务器&#xff1b;然后服务器根据所…

Kali Linux 2019-4解决安装中文乱码

1、安装KALI2019.4版本后会出现乱码问题 2、更新国内源&#xff0c;使用vim编辑器修改&#xff1a;vim /etc/apt/sources.list添加 #清华大学 [更新源] deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-freedeb-src https://mirrors.tuna.tsing…

计算机网络面试总结

前言 本人准研三&#xff0c;面临秋招压力&#xff0c;遂总结部分计算基础知识&#xff0c;以备不时之需&#xff0c;有些是从大佬博文摘抄的&#xff0c;都附有相应博文链接&#xff0c;如有遗漏&#xff0c;烦请联系本人更改&#xff0c;如有侵权&#xff0c;我会修改矫正。…

网络安全防护

网络基础知识 TCPIIP协议 1、传输控制协议/因特网互联协议&#xff08;Transmission Control Protocol InternetProtocol&#xff0c;TCP/IP&#xff09;是目前因特网中使用最广泛的协议。 2、目前因特网使用的是Pv4。IPv6是由互联网工程任务组&#xff08;Internet Engineer…

语音识别 卷积神经网络,卷积神经网络字符识别

如何利用Python做简单的验证码识别 1 摘要验证码是目前互联网上非常常见也是非常重要的一个事物&#xff0c;充当着很多系统的 防火墙 功能&#xff0c;但是随时OCR技术的发展&#xff0c;验证码暴露出来的安全问题也越来越严峻。 本文介绍了一套字符验证码识别的完整流程&…