Android13预装APP到data分区

修改步骤与Android11是差不多的,只是有部分代码所在位置不一样。
Android 11®内置APP到data/app
Android 8(O)预置APP到data/app

默认内置应用到data会出错

1970-01-01 08:03:54.499 1177-1177/system_process I/PackageManager: /data/app/xx changed; collecting certs
1970-01-01 08:03:54.547 1177-1177/system_process W/PackageManager: Failed to scan /data/app/xx: Application package com.benew.ntt.cloud not found; ignoring.
1970-01-01 08:03:54.547 1177-1177/system_process W/PackageManager: Deleting invalid package at /data/app/xx

userdata.img只有几十k的问题

往data中加了几百M大小的app,在out/xx/data/app中也看到编译出来了,
但是编译后却发现userdata.img只有90k,是空的分区,
在.mk中修改userdata分区大小,.mk里面默认是64M, 改成512M解决了。

diff --git a/device/sprd/mpool/module/generic/partition/main.mk b/device/sprd/mpool/module/generic/partition/main.mk
index 37b0b79d0e9..d2f2322d6b3 100755
--- a/device/sprd/mpool/module/generic/partition/main.mk
+++ b/device/sprd/mpool/module/generic/partition/main.mk
@@ -25,8 +25,8 @@ endif$(call md-set, BOARD_BOOTIMAGE_PARTITION_SIZE, 67108864)$(call md-set, BOARD_CACHEIMAGE_PARTITION_SIZE, 67108864)-# default value is 64M, using resize to adapter real size
-BOARD_USERDATAIMAGE_PARTITION_SIZE ?= 67108864
+# default value is 512M, using resize to adapter real size
+BOARD_USERDATAIMAGE_PARTITION_SIZE ?= 536870912

实现

Android11中修改的是
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

Android 13不同,需要修改
frameworks/base/services/core/java/com/android/server/pm/InstallPackageHelper.java
注释掉

else {throw new PackageManagerException(INSTALL_FAILED_INVALID_INSTALL_LOCATION,"Application package " + pkg.getPackageName()+ " not found; ignoring.");}

完整代码如下

            if ((scanFlags & SCAN_REQUIRE_KNOWN) != 0) {if (mPm.isExpectingBetter(pkg.getPackageName())) {Slog.w(TAG, "Relax SCAN_REQUIRE_KNOWN requirement for package "+ pkg.getPackageName());} else {PackageSetting known = mPm.mSettings.getPackageLPr(pkg.getPackageName());if (known != null) {if (DEBUG_PACKAGE_SCANNING) {Log.d(TAG, "Examining " + pkg.getPath()+ " and requiring known path " + known.getPathString());}if (!pkg.getPath().equals(known.getPathString())) {throw new PackageManagerException(INSTALL_FAILED_PACKAGE_CHANGED,"Application package " + pkg.getPackageName()+ " found at " + pkg.getPath()+ " but expected at " + known.getPathString()+ "; ignoring.");}} /*else {throw new PackageManagerException(INSTALL_FAILED_INVALID_INSTALL_LOCATION,"Application package " + pkg.getPackageName()+ " not found; ignoring.");}*/}}
diff --git a/system/core/init/util.cpp b/system/core/init/util.cpp
index d1e518b5795..bee7a8bb70d 100644
--- a/system/core/init/util.cpp
+++ b/system/core/init/util.cpp
@@ -485,7 +485,7 @@ static FscryptAction FscryptInferAction(const std::string& dir) {std::vector<std::string> directories_to_exclude = {"lost+found", "system_ce", "system_de", "misc_ce",     "misc_de","vendor_ce",  "vendor_de", "media",     "data",        "user",
-            "user_de",    "apex",      "preloads",  "app-staging", "gsi",
+            "user_de",    "apex",      "preloads",  "app-staging", "gsi", "app",};for (const auto& d : directories_to_exclude) {if ((prefix + d) == dir) {
diff --git a/system/core/rootdir/init.rc b/system/core/rootdir/init.rc
index 405667cf8df..1a8bc1215eb 100644
--- a/system/core/rootdir/init.rc
+++ b/system/core/rootdir/init.rc
@@ -853,7 +853,7 @@ on post-fs-datamkdir /data/app-ephemeral 0771 system system encryption=Requiremkdir /data/app-asec 0700 root root encryption=Requiremkdir /data/app-lib 0771 system system encryption=Require
-    mkdir /data/app 0771 system system encryption=Require
+    mkdir /data/app 0771 system system encryption=Nonemkdir /data/property 0700 root root encryption=Require# create directory for updated font files.

作者:帅得不敢出门 原创文件谢绝转载收录

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

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

相关文章

Springboot日志框架logback与log4j2

目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot日志使用 Springboot底层是使用slf4jlogback的方式进行日志记录 Logback日志 trace&#xff1a;级别最低 debug&#xff1a;调试级别的&#xff0c…

Windows平台反调试技术学习

前言 前俩天的学习记录Windows上面的反调试学习&#xff0c;主要是参考《恶意代码实战分析》和《加密与解密》里面的&#xff0c;给每个小技术都写了程序示例&#xff0c;自己编译反调试了一遍。对于加解密一书是还有很多不理解的地方的&#xff0c;目前只能记录到这了&#x…

Nodejs 问题排查

前言 用于记录在使用 node 过程中遇到的问题&#xff0c;并尝试寻求解决方案。 问题 问题1 问题描述 访问前端页面时&#xff0c;页面返回 502/504。查看日志后发现&#xff0c;在一些出现问题的时间节点&#xff0c;会出现以下日志&#xff1a; epoll_wait() reported t…

自己动手写数据库系统:解释执行 update 和 delete 对应的 sql 语句

在上一节我们完成了 select 语句的解释执行&#xff0c;本节我们看看 Update 和 Delete 对应的语句如何解释执行&#xff0c;当然他们的实现原理跟我们前面实现的 select 语句执行大同小异。无论是 update还是 delete 都是对数据表的修改&#xff0c;因此他们的实现方法基本相同…

建筑类中级工程师职称证明业绩材料有哪些?

三、建筑类中级工程师职称造价类工程业绩材料 1.合同&#xff1a;证明项目合作关系的凭证。 2.预&#xff08;结&#xff09;算报告等(重点是体现封面有你的名字和执业印章等) 3.单位证明或任命书(本人在项目中的职务聘书) 4.工程获奖证明&#xff1a;项目获得市优的证书、省优…

Ubuntu 22.04.1 LTS VirtualBox7.0 解决虚拟机窗口失去焦点一段时间后,虚拟机显示不刷新问题

故障描述&#xff1a; virtualbox安装在ubuntu系统上&#xff0c;虚拟机内安装了windows操作系统。使用中发现&#xff0c;当linux系统窗口被激活&#xff0c;如firefox浏览器&#xff0c;虚拟机的显示一段时间后会暂停刷新&#xff0c;鼠标划入虚拟机窗口后&#xff0c;才会立…

分布式概念

文章目录 一、CAP定理和BASE定理1.1 CAP定理1.2 CAP取舍1.3 BASE定理 二、分布式事务2.1 柔性事务2.2 两阶段提交协议2.3 三阶段提交协议 三、分布式ID3.1 数据库自增ID3.2 数据库多主模式3.3 号段模式3.4 雪花算法3.5 Leaf3.6 使用Redis生成ID 四、限流算法4.1 固定窗口计数器…

插入排序-insertSort

1、基本思路 与冒泡排序和插入排序一样&#xff0c;也是两个元素比较&#xff1b;不过不同的是&#xff0c;在插入排序中&#xff0c;数组的左边会维护一个有序数组&#xff0c;这个数组刚开始时只有一个元素&#xff0c;即数组第一个元素&#xff0c;后续将拿有序数组后的第一…

TypeScript实现一个贪吃蛇小游戏

游戏效果 文件目录 准备1&#xff1a;新建index.html&#xff0c;编写游戏静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

小程序开发实战案例五 | 小程序如何嵌入H5页面

在接入小程序过程中会遇到需要将 H5 页面集成到小程序中情况&#xff0c;今天我们就来聊一聊怎么把 H5 页面塞到小程序中。 本篇文章将会从下面这几个方面来介绍&#xff1a; 小程序承载页面的前期准备小程序如何承载 H5小程序和 H5 页面如何通讯小程序和 H5 页面的相互跳转 小…

安全加速SCDN是什么

安全加速SCDN&#xff08;Secure Content Delivery Network&#xff0c;SCDN&#xff09; 是集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案。已使用内容分发网络&#xff08;CDN&#xff09;或全站加速网络&#xff08;ECDN&#xff09;的用户&…

【JavaEE】_网络通信原理

目录 1. 网络发展史 2. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 协议 1.3.1 概念 1.3.2 五元组 1.4 协议分层 1.4.1 协议分层的优点 1.4.2 协议分层的分类 1.4.3网络设备所在分层 1.4.4 两台主机通过TCP/IP协议通讯过程 1.5 封装与分用 1.5.1 封装 1.5.2 分用…

Docker 容器连接

Docker 容器连接 前面我们实现了通过网络端口来访问运行在 docker 容器内的服务。 容器中可以运行一些网络应用&#xff0c;要让外部也可以访问这些应用&#xff0c;可以通过 -P 或 -p 参数来指定端口映射。 下面我们来实现通过端口连接到一个 docker 容器。 网络端口映射 …

OpenCV-Python(46):基于KNN的手写数字OCR识别

目标 根据掌握的kNN 知识创建一个基本的OCR 程序使用OpenCV自带的手写数字和字母数据测试我们的程序 手写数字的OCR 我们的目的是创建一个可以对手写数字进行识别的程序。为了达到这个目的我们需要训练数据和测试数据。OpenCV安装包中有一副图片(/samples/ python2/data/digi…

使用java模拟兰顿蚂蚁

兰顿蚂蚁是一个经典的计算机科学问题&#xff0c;它模拟了一只蚂蚁在一个无限大的网格上移动的行为。下面是一个使用Java模拟兰顿蚂蚁的示例代码&#xff1a; public class LangtonAnt {private int[][] grid;private int antX;private int antY;private int antDirection; //…

用一条命令导出 uiautomator dump 内容

# TLNR adb shell -t uiautomator dump --compressed /dev/tty # 说明 解决了一般先导出&#xff0c;再pull的问题。内容直接输出到本地shell。 --compressed 可有可无&#xff0c;压缩能减少一些信息

算法练习-A+B/财务管理/实现四舍五入/牛牛的菱形字符(题目链接+题解打卡)

难度参考 难度&#xff1a;简单 分类&#xff1a;熟悉OJ与IDE的操作 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 A B1. A B - AcWing题库财务管理1004:财…

openlayers [六] 地图交互 interaction 详解

文章目录 interaction 是什么interaction 简介interaction defaults- 默认添加的功能举例结论 interaction 是什么 地图的交互功能包含很多&#xff0c;如地图双击放大&#xff0c;鼠标滚轮缩放&#xff0c;矢量要素点选&#xff0c;地图上绘制图形等等。只要是涉及到与地图的…

VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

这个是B站Up主&#xff1a;程序员程子青的视频 C封装Mysql增删改查操作_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1m24y1a79o/?p6&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3安装mysql:mysql 下载和安装和修改MYSQL8.0 数据库存储…

7、Python使用外部库

导入、运算符重载以及冒险进入外部库世界的生存技巧! 在本教程中,您将了解 Python 中的Imports,获得一些使用不熟悉的库(以及它们返回的对象)的技巧,并深入研究运算符重载。 文章目录 1.导入(Imports)其他导入语法子模块哦,你将去的地方,哦,你将看到的对象了解奇怪对象…