make otapackage 失败

简介: make otapackage 失败

平台


rk3288 + android 7.1


问题


使用make otapackage 编译失败, log 如下:


Running:  e2fsck -f -n /tmp/unsparse_system-UwjZR9.img
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
system: 1923/131072 files (0.0% non-contiguous), 148861/524288 blocks
Traceback (most recent call last):
  File "./build/tools/releasetools/add_img_to_target_files", line 476, in <module>
    main(sys.argv[1:])
  File "./build/tools/releasetools/add_img_to_target_files", line 470, in main
    AddImagesToTargetFiles(args[0])
  File "./build/tools/releasetools/add_img_to_target_files", line 389, in AddImagesToTargetFiles
    boot_img=boot_image)
  File "./build/tools/releasetools/add_img_to_target_files", line 109, in AddSystem
    block_list=block_list)
  File "./build/tools/releasetools/add_img_to_target_files", line 118, in BuildSystem
    return CreateImage(input_dir, info_dict, "system", block_list=block_list)
  File "./build/tools/releasetools/add_img_to_target_files", line 214, in CreateImage
    img_out = os.path.join(os.environ["OUT"],"system.img")
  File "/usr/lib/python2.7/UserDict.py", line 40, in __getitem__
    raise KeyError(key)
KeyError: 'OUT'
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
#### make failed to build some targets (02:39 (mm:ss)) ####


分析


请同事尝试编译, 他那边的代码是正常的, 无法确认根源.

在上面的LOG中 : os.path.join(os.environ[“OUT”],“system.img”)

没写过PY脚本, 假设性地查看了下 OUT 环境变量发现,

我的环境下, OUT是空的. 而同事的OUT目录指向的却是源码编译的OUT目录.

于是找了另外一台PC验证了下, 尝试给OUT赋上正确的值, 结果编译通过了, 那么问题根源找到了.


而后, 对比编译命令发现, 我缺少了执行lunch xxx命令.

惯性所致, 习惯了旧的SDK上, source 完 envsetup.sh 后, 自动lunch了


PS: 有个小插曲, 刚开始并不会报这个错误, 因为我先编译了5.1的代码, 而其中, OUT变量已经赋了值, 虽然不正确, 但不会导致编译失败


相关文章
|
存储 API C++
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
1217 0
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
499 6
如何将python应用编译到android运行
|
前端开发 JavaScript 关系型数据库
如何开发一个ERP系统:从零开始构建
【9月更文第4天】企业资源计划(ERP)系统是现代企业管理不可或缺的一部分,它集成了公司的关键业务流程,并提供了统一的数据管理平台。本文将探讨如何从零开始构建一个简单的ERP系统,并提供一些基本的代码示例来演示关键组件的开发过程。
2062 3
|
关系型数据库 MySQL 数据库
达梦(DM)2、创建数据库实例(Windows篇)(上)
上篇文章,我们已经成功安装了达梦数据库,下面我们一起来看看怎么使用达梦数据库吧
4048 0
达梦(DM)2、创建数据库实例(Windows篇)(上)
|
前端开发 JavaScript UED
window.open()用法详解
window.open()用法详解
1106 0
|
存储 运维 NoSQL
如何撰写好的技术方案设计-真实案例干货分享
如何撰写好的技术方案设计-真实案例干货分享
2117 0
|
安全 开发工具 git
MT6735 8.1 Secure Boot 签名
MT6735 8.1 Secure Boot 签名
556 0
|
数据库连接 数据库 Java
解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure(真实有效)
数据库连接失败 在数据库连接失败,经常会有蛮多一系列的问题导致的原因,这个时候一定要多去尝试一下各种方法,并且做好自己的梳理! 一、例如我在SpringBoot项目中使用了阿里的数据库连接池Driud。
45012 0
|
C++ 容器
C++ vector 删除符合条件的元素
C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。 C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。
4508 0
|
Web App开发 Linux Android开发
常见浏览器User-Agent大全
下面是工作中需要用到的常见浏览器User-Agent字符串的收集整理,不断更新中。 OperaMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.
12677 2