Android/AOSP源码编译错误:TEMPORARY_DISABLE_PATH_RESTRICTIONS
正常流程编译Android源码,遇到如下错误:
Restriction Checker not present, skipping..
03:48:45 TEMPORARY_DISABLE_PATH_RESTRICTIONS was a temporary migration method, and is now obsolete.
编译环境多次编译过源码,工具链等都是正确配置,不存在问题。
查找环境变量,可以找到对应的环境变量,已设置为true。
$ env | grep -i temporary
TEMPORARY_DISABLE_PATH_RESTRICTIONS=true
取消次环境变量设置,再次编译源码,可正常编译。
$ unset TEMPORARY_DISABLE_PATH_RESTRICTIONS
分析操作流程,在同一个编译环境中,连续编译不同版本的Android源码(Android 11和Android 12),由于不同版本源码编译时设置不同的环境变量,并且不同版本源码对环境变量的检查条件不兼容导致的。
具体到遇到的这个问题,在Android11上编译是,配置脚本设置TEMPORARY_DISABLE_PATH_RESTRICTIONS=true
,在Android12编译时,不兼容这个变量的设置,并且编译脚本不会取消这个变量,导致编译报错。
建议:
- 一个编译环境(一个PC或者docker)只编译一个版本的Android源码,不要多个版本同时编译。实际开发中大多只用一个版本就可以。
- 如果在一个编译环境中编译不同版本源码,为每个源码打开不同的命令行终端,分别设置编译环境变量,不要在同一个命令行终端中多次执行不同源码的编译脚本。