Android 12/13 artifact_path_requirements错误 预制apk/预制bootanimation相关framework实战课程答疑

AOSP10 替换系统launcher aosp10 替换launcher 阅读详情
AI摘要

本文探讨了解决Android 12/13中预制APK遇到的artifact_path_requirements错误,提供了两种方法:一是全局禁用检查,二是白名单指定允许的APK;同时介绍了bootanimation的新预制方式。

粉丝朋友在学习我的课程内置应用时候,和bootanimation时候,发现如果在Android 12/13 上预制apk时候发现有编译不过情况,报artifact_path_requirements相关错误
具体错误显示如下:

build/make/core/artifact_path_requirements.mk:26: warning:  build/make/target/product/sdk_phone_x86_64.mk produces files inside build/make/target/product/generic_system.mks artifact path requirement. 
Offending entries:
system/app/MyApp/MyApp.apk
In file included from build/make/core/main.mk:1383:
build/make/core/artifact_path_requirements.mk:26: error: Build failed.
00:42:13 ckati failed with: exit status 1

这里乍一看估计99%的人都不知道怎么回事,这里其实可以从提示是可以看出来:
大概是因为新版本artifact_path_requirements有对预装相关东西进行了规则检测,发现system/app/MyApp/MyApp.apk这种预制到system/app的情况属于违规了。
那么具体怎么解决呢?

方法一

通过在github寻找到了一些第三方rom维护者也有遇到类似问题,参考他们解决方案,自己这边再消化后,我的修改如下:

diff --git a/envsetup.sh b/envsetup.sh
index 16873095aa..8c4a8c62e6 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -211,7 +211,7 @@ function setpaths()
     local targetgccversion=$(get_build_var TARGET_GCC_VERSION)
     local targetgccversion2=$(get_build_var 2ND_TARGET_GCC_VERSION)
     export TARGET_GCC_VERSION=$targetgccversion
-
+    export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"
     # The gcc toolchain does not exists for windows/cygwin. In this case, do not reference it.
     export ANDROID_TOOLCHAIN=
     export ANDROID_TOOLCHAIN_2ND_ARCH=

即build/envsetup.sh 加上export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"就可以顺利编译通过不再报artifact_path_requirements错误,这里其实就相当于把新版本编译系统中artifact_path_requirements检测关闭就可以

附一下成功图片:
在这里插入图片描述
成功apk路径:
在这里插入图片描述

方法二:

上面修改方式相对有点暴力,没有细粒度的细分,而是一股气把所有的开放了,也有一种细粒度的方法如下:

diff --git a/target/product/telephony_product.mk b/target/product/telephony_product.mk
index 18374d4b23..7e88206193 100644
--- a/target/product/telephony_product.mk
+++ b/target/product/telephony_product.mk
@@ -20,4 +20,10 @@
 # /product packages
 PRODUCT_PACKAGES += \
     Dialer \
+    MyApp \
     ImsServiceEntitlement \
+
+
+PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST +=\
+       system/app/MyApp/MyApp.apk \

里面最重要的一个就是

PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST +=\
       system/app/MyApp/MyApp.apk \

在这个PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST加上相关的白名单既可以

bootanimation预制新方法:

原来8.1使用的Android.mk中进行shell直接拷贝到system/media路径下已经不生效
1、bootanimation下面已经没有了相关的Android.mk了
2、哪怕找到可以执行的Android.mk,编译也会提示没有media路径不存在

这里也针对新版本的预制bootanimation.zip进行讲解

修改patch如下

test@test:~/aosp/build/make$ git status
HEAD detached at d0d363fbc2
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   envsetup.sh
	modified:   target/product/handheld_system_ext.mk
	modified:   target/product/telephony_product.mk

no changes added to commit (use "git add" and/or "git commit -a")
test@test:~/aosp/build/make$ git diff 
diff --git a/envsetup.sh b/envsetup.sh
index be6061d67d..069a9d7d22 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -211,7 +211,7 @@ function setpaths()
     local targetgccversion=$(get_build_var TARGET_GCC_VERSION)
     local targetgccversion2=$(get_build_var 2ND_TARGET_GCC_VERSION)
     export TARGET_GCC_VERSION=$targetgccversion
-
+    export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"//这里上面有介绍
     # The gcc toolchain does not exists for windows/cygwin. In this case, do not reference it.
     export ANDROID_TOOLCHAIN=
     export ANDROID_TOOLCHAIN_2ND_ARCH=
diff --git a/target/product/handheld_system_ext.mk b/target/product/handheld_system_ext.mk
index d935fbfddf..9c19ab14cd 100644
--- a/target/product/handheld_system_ext.mk
+++ b/target/product/handheld_system_ext.mk
@@ -19,6 +19,8 @@
 # it definitely doesn't belong on other types of devices (if it
 # does, use base_system_ext.mk).
 $(call inherit-product, $(SRC_TARGET_DIR)/product/media_system_ext.mk)
+PRODUCT_COPY_FILES += \
+    packages/services/Car/car_product/car_ui_portrait/bootanimation/bootanimation.zip:system/media/bootanimation.zip

这里核心就是如下这句

PRODUCT_COPY_FILES += \
   packages/services/Car/car_product/car_ui_portrait/bootanimation/bootanimation.zip:system/media/bootanimation.zip

采用这个PRODUCT_COPY_FILES宏,这个方式相对比较标准

更多干货framework课程列表

https://blog.youkuaiyun.com/learnframework/article/details/132739059
需要更多资料可以+v(androidframework007)也可以下面公众号

在这里插入图片描述

Android 12.0 内置app编译报错编不过的解决方案 在12.0的系统产品开发中,对于内置第三方app到system的app下也是很重要的功能,在11.0以前直接内置在system/app下就可以了,但是在12.0增加了artifact_path_requirements的产品分区权限检测机制,导致内置app的时候编译出错。 阅读详情

相关推荐

加法器设计—— 原理图与VHDL设计初步

1、在DE2-115开发板上,完成4位全加器系统的设计、下载和功能演示,并在FPGA上实现1位全加器;2、完成3-8译码器的设计、下载和功能演示(利用板上的8段数码管)本次实验在组合逻辑电路的基础上,运用Verilog编程实现了四位全加器和3-8译码器的设计,同时实现了在DE2-115开发板上的下载和功能演示。整个过程加深了我对电路设计和Verilog编程的理解,同时也锻炼了解决问题的能力。

m0_74749526的博客 1237

Android12 artifact_path_requirements.mk编译报错

网上的解决方案:build/envsetup.sh 加上export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"就可以顺利编译通过不再报artifact_path_requirements错误,这里其实就相当于把新版本编译系统中artifact_path_requirements检测关闭。我没有尝试这种方法。原因是如果程序要要编译到system/下面要做白名单的声明。如果没有声明,那就会报这个错。

Rainman博的专栏 1076

二、基于C语言的JPEG解码代码详解

// JPEG解码 // 输入JPEG后输出Bitmap #include <stdio.h> #include <stdlib.h> #pragma warning(disable : 4996) unsigned int BuffIndex; // JPEG数据的位置 unsigned int BuffSize; // JPEG数据的大小 unsigned int BuffX; // 图像的横向尺寸 unsigned int BuffY; //

m0_37633745的博客 4455

androidQ集成非SDK方案

关于android 10 集成非SDK方案如下 主要是把customapi以java_sdk_library的方式集成到系统里面 然后在把需要集成调用customapi架包的第三方非系统签名应用设置相应的白名单 第三方开发引用架包 第三方非系统签名需要以这种方式加入架包,在build.gradle添加 compileOnly files(‘libs/customapi.jar’) —此架包由客户提供,不是android原生系统编译生成出来的架包。 还需要在AndroidManifest.xml 的appl

jsm1010的博客 980

TCGA数据下载保姆级教程:用GDC-client从零搞定,附配置文件避坑指南

本文提供TCGA数据下载的完整教程,详细讲解如何使用GDC-client工具从零开始配置到高效获取基因组数据。涵盖环境准备、认证配置、数据检索、高效下载及故障处理等关键步骤,并附配置文件避坑指南,帮助生物医学研究者快速掌握TCGA数据下载技巧。

weixin_30892037的博客 261

历史预测+LLM双杀!DriveGPT4-V2闭环驾驶配置避坑指南

本文深入探讨了DriveGPT4-V2在工程化部署中的核心挑战与解决方案。通过融合历史轨迹预测与大语言模型,该模型旨在实现更可靠的端到端自动驾驶。文章详细解析了从环境配置、多模态Token对齐、轻量控制头设计到训练优化与闭环仿真验证的全流程,为开发者提供了一份详实的避坑指南。

transformer2023的博客 384

Android10添加自定义模块编译报错:artifact path requirement. Offending entries: xxx

在构建product的mk文件中添加,如模拟器的。

qq_39510661的博客 265

AG16K MCU ARM Cortex M3

其中,Input文件为Keil生成的mcu程序文件,输出为合成后的存储格式Bin文件,Program address 为上方表格中“程序运行 RAM 地址(4bytes)”,即 Keil 中设置的程序运行地址。其中 MCU 程序的地址,根据 mcu.ip 中设置的 FLASH_BIAS 进行设置。AG16K MCU 的 FPGA 工程中,需调用 alta_mcu_m3 的硬核 IP,包含在 alta_sim.v 的库文。Quartus II。//MCU 程序在 FLASH 中存放的首地址。

Embeded_FPGA的博客 1806

编译源码报build/make/core/artifact_path_requirements.mk:26: error: Build failed.解决方法

【代码】编译源码报build/make/core/artifact_path_requirements.mk:26: error: Build failed.解决方法。

程序课代表的博客 1070

2025华为OD面试手撕代码真题目录、八股文真题目录以及面试技巧

1. **华为OD面试技术面准备指南** 2. **华为OD面试技术面常见问题解答** 3. **华为OD面试技术面经验分享** 4. **华为OD面试技术面注意事项** 5. **华为OD面试技术面攻略** 6. **华为OD面试技术面模拟题目与解析** 7. **华为OD面试技术面知识点梳理** 8. **华为OD面试技术面常考**

算法大师! 3万+

在线考试题库抓取:Python 爬虫抓取各类在线考试平台题库和试题

通过这些技术,您可以抓取各类在线考试平台上的题库数据,进行数据分析、生成练习题集,甚至用于考试准备。为了演示抓取过程,本篇博客选择了两个常见的在线考试平台进行数据抓取:一个是教育考试平台(如“中小学题库”),另一个是职业考试平台(如“华图教育”)。对于这些网站,我们需要找到包含题库信息的页面,并分析每一页的 HTML 结构,从而定位到题目、选项、答案等数据。大多数在线考试平台的题库是分页显示的,因此我们需要遍历多个页面,抓取所有的题库数据。因此,我们需要设置合适的请求头来模拟真实的浏览器请求。

2201_76125261的博客 3438

artifact path requirement. Offending entries:

在代码中搜索PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST这个标签, 将报错的模块加到list里面。

hool_wei的博客 795

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1723

Android 12 S artifact_path_requirements Offending entries Build failed ckati failed with/ aosp预制apk

粉丝朋友在学习我的课程内置应用时候,发现如果在Android 12 S上预制apk时候发现有编译不过情况,报artifact_path_requirements相关错误 入门课,实战课,跨进程专题 ps需要学习深入framework课程和课程优惠 (可以加我qq:2102309716 优惠购买) 具体错误显示如下: build/make/core/artifact_path_requirements.mk:26: warning: build/make/target/product/sdk_phone_

liaosongmao1的专栏 2268

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android源码中添加自己的Product

BoardConfig.mk 包含了硬件芯片架构配置,分区大小配置等信息这里我们直接使用 aosp_x86_64 的BoardConfig.mk 就行。BoardConfig.mk 拷贝自 build/target/board/generic_x86_64/BoardConfig.mk。这里假设我们的公司名叫果冻(Jelly),我们准备开发一款对标苹果 14 的手机,取名叫 大米14(Rice14)。rice14.mk 拷贝自 build/target/product/aosp_x86_64.mk。

马腾蛟的博客 910

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android12 generic_system.mks artifact path requirement.

1 添加白名单:PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += system/app/RawDataTest/RawDataTest.apk。3 置空检测宏:override PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS :=2 关闭检测宏:export DISABLE_ARTIFACT_PATH_REQUIREMENTS="true"(推荐方式,不影响GSI)Android.bp 写法。

u014702108的博客 863

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Android源码】AOSP:在rom中打入一个脚本

编译成功后,可以在out中找到mysh,路径:out/target/product/redfin/system/bin/mysh。shell进去,运行mysh,可以在/data/local/tmp中生成gn.log文件,里面是打印当前时间。测试:将一个shell脚本,打入到rom中,最终刷机,并能在手机中使用。最终在手机中,可以在/system/bin中找到mysh运行脚本。最后编译打包,最好先清理掉所有的out,否则容易影响成包。当然不要忘记设置ANDROID_PRODUCT_OUT。

程序猿的玻璃心的专栏 845

make编译过程-Android10.0编译系统(三)

摘要:本节主要来进行Android10.0 编译系统的make过程 阅读本文大约需要花费29分钟。 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! [Android取经之路] 的源码都基于Android-Q(10.0) 进行分析 [Android取经之路] 系列文章: 《系统启动篇》 Android系统架构 Android是怎么启动的 Android 10.0系统启动之init进程 Android10.0系统启动

IngresGe 的专栏 1万+

Android Build System

<br /> Android Build System<br />Status:Draft   (as of May 18, 2006)<br />Contents<br />Objective<br />The primary goals of reworking the build system are (1) to make dependencies work more reliably, so that when files need to rebuilt, they are, a

sunrock的专栏 1766

Android预置apk的几种方式

预置apk

qq_46044468的博客 3499

android12 rockchip预置APK流程

方法一: 根据RK文档, 预制APK很简单, 首先source 环境之后执行命令:get _build_var TARGET_DEVICE_DIR 查看目标文件夹, 例如: device/rockchip/rk3568s/LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) 后缀是APK。修改device.mk(目录在get _build_var TARGET_DEVICE_DIR 目录的倒数第二层)然后把要编译的apk加入到编译环境中.

wqhjfree的专栏 1758

Android编译系统详解(三)

前面两节讲解了自定义Android编译项和创建Product产品配置文件,除了编译和定义产品相关环境变量外,还需要定义Board相关环境变量。 1. build/core/config.mk 109 # --------------------------------------------------------------- 110 # Define most of the global variables. These are the ones that 111 # are specific t

Venus 的博客 835

maven打包报错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-install) on project com.isoftstone.hyec.frt.carriageoffer: Failed to install metadata com.isoftstone.h...

渣男的博客 836

Artifact path pattern

artifact: [orgPath]/ [module]/ [baseRev](-[folderItegRev])/ [module]-[baseRev](-[fileItegRev])(-[classifier]).[ext] org/eclipse/jetty/ jetty-ajp/ 7.0.2/ jetty-ajp-7.0.2.jar org/eclipse/jetty/ jetty-ajp/ 7.0.2-SNAPSHOT/ jetty-ajp-7.0.2-20201211.

lingqiao023的博客 360

Maven的Missing artifact问题解决

今天在创建一个新的Maven项目时,在其中添加了很多依赖。刚开始为了避免错误就每添加一次,保存一下,Eclipse就会下载相应的包。最后为了加快速度就把剩下的包全部添加了,再次保存就出现了Missing artifact错误,就连以前正常的包也出现了这个问题。       于是一个个删除新添加的依赖,当删除了一个叫做quartz-all的依赖后,一切都正常了。然后把其他依赖都添加上,也是正常的。

沉底的石头 5万+
上一篇: android framework 系统native c/c++源码查看跳转工具-Ubuntu+VScode搭建
下一篇: 千里马Android Framework-input系统专题blog目录集合
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值