安卓15预置第三方apk时签名报错问题解决

有同事反馈集成apk时安装失败

PackageManager: Failed to scan /product/app/test: No APK Signature Scheme v2 signature in package /product/app/test/test.apk

查看编译后的apk签名信息

DOES NOT VERIFY

ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.SF indicates the APK is signed using APK Signature Scheme v2 but no such signature was found. Signature stripped?

但是用命令查看我的apk是正常的apksigner verify -v test.apk | grep Verified

Verified using v1 scheme (JAR signing): true

Verified using v2 scheme (APK Signature Scheme v2): true

Verified using v3 scheme (APK Signature Scheme v3): false

Verified using v3.1 scheme (APK Signature Scheme v3.1): false

Verified using v4 scheme (APK Signature Scheme v4): false

Verified for SourceStamp: false

那么应该是编译过程做了某些变动。

解决办法

通过预编译的方法

android_app_import {name: "test",apk: "test.apk",// 保留apk自己的签名presigned: true,preprocessed: true,// 打开将放到对应分区目录的priv-app文件夹下// privileged: true,// 打开将放到system_ext分区// system_ext_specific: true,// 打开将放到product分区// product_specific: true,// 打开将放到vendor分区// proprietary: true,// odm分区// device_specific: true// apk优化,内置三方apk时建议关闭dex_preopt: {enabled: false,},
}

在安卓15上新增了app_import.go - OpenGrok cross reference for /build/soong/java/app_import.go

validatePresignedApk检测

如果加了presigned,但不加preprocessed,同时targetSdk大于等于30就会编译报错,更加方便开发者定位问题:

[100% 5/5 0s remaining] Check presigned apkFAILED: out/soong/.intermediates/packages/test/test/android_common/validated-prebuilt/check.stampbuild/soong/scripts/check_prebuilt_presigned_apk.py --aapt2 out/host/linux-x86/bin/aapt2 --zipalign out/host/linux-x86/bin/zipalign packages/test/test.apk out/soong/.intermediates/packages/test/test/android_common/validated-prebuilt/check.stamppackages/test/test.apk: Prebuilt, presigned apks with targetSdkVersion >= 30 (or a codename targetSdkVersion) must set preprocessed: true in the Android.bp definition (because they must be signed with signature v2, and the build system would wreck that signature otherwise)

另外apk里面的so不能压缩,否则会报错

FAILED: out/soong/.intermediates/packages/test/test/android_common/validated-prebuilt/check.stamp

build/soong/scripts/check_prebuilt_presigned_apk.py --aapt2 out/host/linux-x86/bin/aapt2 --zipalign out/host/linux-x86/bin/zipalign --preprocessed packages/test/test.apk out/soong/.intermediates/packages/test/test/android_common/validated-prebuilt/check.stamp

packages/test/test.apk: Contains compressed JNI libraries

因为安卓6开始支持直接加载apk里面的so,如果压缩的话,预编译会在apk内部进行解压,那么就会破坏apk签名。

img

其实,如果apk的minSdkVersion >= 23 并且 Android Gradle plugin >= 3.6.0情况下,打包时android:extractNativeLibs=false,apk的so默认是不压缩的。

在minSdkVersion < 23 或 Android Gradle plugin < 3.6.0情况下,打包时 android:extractNativeLibs=true,apk的so默认是压缩的。

参考:https://juejin.cn/post/6943920550125420558

Android13解决android_app_import内置第三方APK安装失败问题_but no such signature was found. signature strippe-CSDN博客

浅谈extractNativeLibs

通过直接拷贝的方法

参考:https://blog.csdn.net/wangwei6227/article/details/123727372

同样要注意apk so的压缩问题,如果是压缩过的,必须提取出来,并拷贝到apk机器目录。

可能遇到的selinux权限问题

01-01 12:00:39.520000 5326 5326 W om.skype.raider: type=1400 audit(0.0:64): avc: denied { read } for name=“libSkypeAndroid.so” dev=“mmcblk0p22” ino=770074 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0

#====================== untrusted_app.te ======================

allow untrusted_app system_data_file:file r_file_perms;

参考:采用Signature Scheme v2签名方式的APK预置失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SWIFT基本使用

安装 # 全量能力 pip install ms-swift[all] -U # 仅使用LLM pip install ms-swift[llm] -U # 仅使用AIGC pip install ms-swift[aigc] -U # 仅使用Adapters pip install ms-swift -U or git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e …

YOLOV8涨点技巧(源码)

YOLOV8涨点技巧之替换骨干网络(需要源码请私信或评论) 模型架构 YOLOv8模型架构包含 输入端、骨干网络(Backbone)、颈部(Neck)和预测头(Prediction) 。其中: 输入端负责处理图像并调整尺寸 Backbone提取多层次特征 Neck整合这些特征 Prediction模块进行最终预测。 这种设计…

【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数

【C语言】函数指针与指针函数 文章目录 [TOC](文章目录) 前言一、指针数组二、数组指针三、函数指针四、指针函数五、函数指针数组六、回调函数七、参考资料总结 前言 使用工具&#xff1a; 1.DEVC 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、…

【04-数据库面试】

如何创建一个新的数据库 数据库是现代信息技术中不可或缺的一部分&#xff0c;它为存储、检索和管理数据提供了强大的工具。无论是企业还是个人&#xff0c;都可能需要创建自己的数据库以满足特定的需求。本文将详细介绍创建一个新数据库的步骤&#xff0c;包括规划、选择数据…

【Leetcode】1705. 吃苹果的最大数目

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 有一棵特殊的苹果树&#xff0c;一连 n n n 天&#xff0c;每天都可以长出若干个苹果。在第 i i i 天&#xff0c;树上会长出 a p p l e s [ i ] apples[i] apples[i] 个苹果&a…

leetcode hot100 轮转数组

189. 轮转数组 已解答 中等 相关标签 相关企业 提示 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮…

使用 HTML 和 CSS 实现绚丽的节日烟花效果

文章目录 1. 效果预览2. 核心技术栈3. 核心代码解读3.1 HTML结构3.2 霓虹文字的CSS样式3.2.1 核心样式代码3.2.2 动画效果 3.3 JavaScript 的烟花效果实现3.3.1 烟花上升3.3.2 粒子爆炸 4. 用户交互5. 运行步骤总结 1. 效果预览 打开后输入文本的展示内容 用户点击页面后播放…

基于openEuler22.09部署OpenStack Yoga云平台(一)

OpenStack Yoga部署 安装OpenStack 一、基础准备 基于OpenStack经典的三节点环境进行部署&#xff0c;三个节点分别是控制节点&#xff08;controller&#xff09;、计算节点&#xff08;compute&#xff09;、存储节点&#xff08;storage&#xff09;&#xff0c;其中存储…

国自然面上项目分享|基于人工智能和病理组学的早癌筛查算法研究|基金申请·24-12-24

小罗碎碎念 今天分享的项目为【常规面上项目】&#xff0c;执行年限为2018年1月至2021年12月&#xff0c;直接费用为55万元。 今天分享的这个项目很有意思&#xff0c;因为这个项目的成果是团队2020年申报基金委优青的材料&#xff0c;并且还有临床验证和商业转化&#xff0c;值…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…

41 stack类与queue类

目录 一、简介 &#xff08;一&#xff09;stack类 &#xff08;二&#xff09;queue类 二、使用与模拟实现 &#xff08;一&#xff09;stack类 1、使用 2、OJ题 &#xff08;1&#xff09;最小栈 &#xff08;2&#xff09;栈的弹出压入序列 &#xff08;3&#xf…

webgis入门实战案例——智慧校园

本文通过利用高德地图的JS API做一个关于智慧校园的小案例&#xff0c;主要内容有地图展示、地图控件的添加、标注点添加、地点打卡、驾车路径规划动画展示&#xff0c;文章末尾附有完整代码。后续将继续跟进其他学习案例。 目录 前置工作地图展示地图控件的添加实现点击某个地…

只谈C++11新特性 - 显式虚函数重写

显式虚函数重写 背景说明 在 C++11 之前,C++ 的虚函数机制虽然非常强大,但也带来了一些潜在问题。特别是对于大型代码库,当派生类需要重写基类的虚函数时,可能会因为疏忽而引入错误: 拼写错误:如果派生类的函数签名不完全匹配基类的虚函数签名,那么派生类的函数并不会…

MyBatisSQL优化

MyBatis 是一款流行的 Java 持久层框架&#xff0c;它简化了数据库操作&#xff0c;并且能够灵活地映射 Java 对象与数据库表之间的关系。在使用 MyBatis 进行数据库操作时&#xff0c;SQL 性能优化是至关重要的&#xff0c;特别是在面对复杂查询、大规模数据处理或高并发场景时…

【笔记】深度学习模型评估指标

推荐链接&#xff1a; &#xff08;0&#xff09;多分类器的评价指标 &#xff08;1&#xff09;泛化误差的评价方法&#xff1a;【机器学习】模型评估与选择&#xff08;留出法、交叉验证法、查全率、查准率、偏差、方差&#xff09; &#xff08;2&#xff09;机器学习&…

Linux运维常见命令

vi/vim快捷键使用 1)拷贝当前行 yy ,拷贝当前行向下的5行 5yy&#xff0c;并粘贴&#xff08;输入p&#xff09;。 2)删除当前行 dd ,删除当前行向下的5行5dd 3)在文件中查找某个单词 [命令行下 /关键字&#xff0c;回车查找 ,输入n就是查找下一个 ] 4)设置文件的行号&…

评估大语言模型在药物基因组学问答任务中的表现:PGxQA

​这篇文献主要介绍了一个名为PGxQA的资源&#xff0c;用于评估大语言模型&#xff08;LLM&#xff09;在药物基因组学问答任务中的表现。 研究背景 药物基因组学&#xff08;Pharmacogenomics, PGx&#xff09;是精准医学中最有前景的领域之一&#xff0c;通过基因指导的治疗…

AI芯片常见概念

文章目录 AI芯片常见概念前言常见概念AI芯片分类按照芯片的技术架构分GPU半定制化的 FPGA全定制化 ASIC神经拟态芯片 按应用场景分训练卡推理卡 按部署位置分国产AI卡资料汇总 AI芯片算力和能效比AI芯片算力AI芯片能效比 封装相关Chiplet技术3DIC三星多芯片集成联盟&#xff08…

SpringBoot中使用AOP切面编程实现登录拦截

使用AOP切面编程实现登录拦截 1. 首先实现一个登录注册功能 以下代码仅供参考 控制层 RestController RequestMapping("/user") public class UserController {Autowiredprivate UserService userService;PostMapping("/register")public Result regis…

【js】URL处理

背景 有这样子一个url&#xff0c;search部分的value可能包含空格&#xff0c;也可能是一个对象&#xff0c;如何正确解析这样子的url呢&#xff1f; search如下&#xff0c;?accountId144115188076933939&accountNamemock name&xxx {"accountId": "…