Android4.4真机移植过程笔记(三)

news2024/12/25 12:51:21

如果文章字体看得不是很清楚,大家可以下载pdf文档查看,文档已上传~oo~

7、安装加密APK

需要修改文件如下:

在这里插入图片描述
相对Android4.2改动还是蛮大的,有些文件连路径都变了:
//Android4.2
1、frameworks/native/libs/utils/ZipFileRO.cpp
2、dalvik/libdex/ZipArchive.cpp
3、libcore/luni/src/main/java/java/util/zip/ZipFile.java
4、libcore/luni/src/main/java/java/util/zip/ZipEntry.java
5、libcore/luni/src/main/java/java/util/zip/ZipInputStream.java

//Android4.4
1、frameworks/base/libs/androidfw/ZipFileRO.cpp
2、dalvik/libdex/ZipArchive.cpp
3、libcore/luni/src/main/java/java/util/zip/ZipFile.java
4、libcore/luni/src/main/java/java/util/zip/ZipEntry.java
5、libcore/luni/src/main/java/java/util/zip/ZipInputStream.java
5、libcore/luni/src/main/java/java/util/zip/ZipInputStream.java

修改完后安装加密的APK,运行异常如下:
在这里插入图片描述
经过打印调试发现ZipFile.java文件没有完全改对

再次运行如下异常:
在这里插入图片描述

把安装签名校验去掉就OK了,因为我们的加密APK是不要校验的,这里改为所有APK都不要签名校验了,后面再优化下,只把自己的APK去掉校验,而第三方的还是要签名校验的!
在这里插入图片描述

再次运行:
在这里插入图片描述
打开运行,不容易啊!
在这里插入图片描述

8、APK加密

1、加密工具代码在Android源码目录的external/apkencryptor下:
在这里插入图片描述

2、修改相关的makefile,把apkencryptor加入到PRODUCT_PACKAGES中,如修改build/target/product/base.mk(H10,OK1000没有修改也是没有问题的),
make之后会在out/host/linux-x86/bin/目录下生成apkencryptor可执行程序:
在这里插入图片描述

3、在打包system.img时先调用一下这个可执行程序对各目录下的apk进行加密,如修改build/core/Makefile:
在这里插入图片描述

4、ENCRYPTAPK_TOOL定义在build\core\config.mk中:
ENCRYPTAPK_TOOL := $(HOST_OUT_EXECUTABLES)/apkencryptor
在这里插入图片描述

5、TARGET_OUT_APPS和TARGET_OUT_PREINSTALL_DEL都定义在build\core\envsetup.mk中:
TARGET_OUT_PREINSTALL := $(TARGET_OUT)/preinstall
TARGET_OUT_PREINSTALL_DEL := $(TARGET_OUT)/preinstall_del
在这里插入图片描述

6、编译搞定…

9、新增路径接口

运行测试程序出现异常:
在这里插入图片描述

同步4.2源码:
rk3188_android4.4.1/frameworks/base/core/java/android/os/Environment.java

编译:make -j32
编译出现异常:
在这里插入图片描述

还能找到这样一些提示,很人性化啊!
在这里插入图片描述

由于我们提供的API是给开发者使用,要对我开放,所以我们用第二种方式:
make update-api

再次编译通过,烧录img,再次运行测试程序:
在这里插入图片描述
顺利完成!!!

10、屏蔽HOME键

把之前OK1000移植过来就OK了,涉及到这三个文件:
frameworks/base/services/java/com/android/server/wm/WindowManagerService.java
frameworks/base/core/java/android/view/WindowManager.java
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

不过先对于Android4.2变化还是蛮大的:
WindowManager.java真加了很多标志位,之前变量名没有提供出来,所以现在的值固定了,和原生的有冲突了!后面看看怎么改。
PhoneWindowManager.java 函数的逻辑有了改变,目前的逻辑更好,更清晰。

具体改动参考:
Android中间件轨迹_1.

觉得本文对你有用,麻烦点赞或关注或收藏,你的肯定是我创作的无限动力,谢谢!!!

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

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

相关文章

如何运用结构化思维来规划个人发展

结构化思维不仅在工作中非常有用,在日常生活中同样可以发挥巨大作用。无论是解决家庭琐事、规划个人发展,还是做出重要决策,结构化思维都能帮助我们更有条理地思考和行动。 一、解决生活中的问题 生活中总会遇到各种各样的问题&#xff0…

Unity+Shader入门精要-1. 入门shader

今天开始正式整合学习的shader内容。 Simple Shader 主要介绍了大概的shader格式。 Shader "Unity Sgaders Book/Chapter 5/Simple Shader" //shader名 {Properties{//声明color类型的属性_Color("Color Tint", Color) (1.0,1.0,1.0,1.0)}SubShader{Pa…

【SpringBoot】数据脱敏

文章目录 什么是数据脱敏JsonSerialize自定义Jackson注解定制脱敏策略定制JSON序列化实现脱敏工具类 定义Person类,对其数据脱敏模拟接口测试总结 什么是数据脱敏 数据脱敏,也称为数据的去隐私化或数据变形,是一种技术手段,用于对…

tcp inflight 守恒算法的自动收敛

inflight 守恒算法看起来只描述理想情况,现实很难满足,是这样吗? 从 reno 到 bbr,无论哪个算法都在描述理想情况,以 reno 和 bbr 两个极端为例,它们分别描述两种理想管道,reno 将 buffer 从恰好…

【C++庖丁解牛】C++11---新的类的功能 | 可变参数模板

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.新的类功能1.1 默认成员…

浏览器预加载器如何使页面加载速度更快

预加载器(也称为推测或前瞻预解析器)可能是浏览器性能有史以来最大的改进。 那么什么是预加载器以及它如何提高性能呢? 浏览器如何加载网页 网页充满了依赖关系——在下载相关的CSS之前页面无法开始渲染,然后当遇到脚本时HTML解…

零基础该如何自学linux运维?

零基础该如何自学linux运维?以下是建议帮助你入门Linux运维的一些建议。 一、自学建议: 理解基础概念:首先,你需要对Linux操作系统的基本概念有所了解,包括文件系统、用户权限、进程管理等。安装Linux系统&#xff1…

若依前后端部署系统--详细附图

一、后端部署 1、在ruoyi项目的Maven中的生命周期下双击package.bat打包Web工程,生成jar包文件。 提示打包成功 2、多模块版本会生成在ruoyi/ruoyi-admin模块下target文件夹,我们打开目录ruoyi-admin/taget,打开cmd,运行java -jar jar包名称…

【C语言进阶】程序编译中的预处理操作

📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL.. 📚以后会将数据结构收录为一个系列,敬请期待 ● 本期内容讲解C语言中程序预处理要做的事情 目录 1.1 预处理符号 1.2 #define 1.2.1 #define定义标识…

【Docker学习】docker stats

命令: docker container stats 描述: 显示容器资源使用的状态(实时) 用法: docker container stats [OPTIONS] [CONTAINER...] 别名: docker stats(docker的一些命令可以简写,docker stats就等同…

Odoo17开发环境搭建

1.先下载godoo17_20240227_02.zip压缩包,里面包含了项目用到的所有的插件了,直接使用这个包即可。 下载地址:https://download.csdn.net/download/java173842219/89242257 2.解压该压缩包,目录如下: 3.下载pycharm并…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存,再更新数据 该方案数据不一致的原因 2. 先更新数据库,再更新缓存 3. 先删除缓存,再更新数据库 延时双删 4. 先更新数据库,再删除缓存 该方案数据不一致的…

声明式事务(@Transactional)使用时需要注意的坑

前言 上两篇文章已经详细分析了申明式事务的实现原理,知道了底层原理之后,现在就可以开始使用申明式事务去简化我们的代码了。但是在使用Transactional注解的时候也会经常遇到一些问题,有些问题不仔细测试观察的话还不容易发现,比…

Windows vbs脚本定时给焦点窗口发送消息

直接上脚本代码,你们可以自己看着改 MsgInputbox("message1") Msg1Inputbox("message2") numInputbox("number")a1 bnumset wshshellCreateObject("wscript.shell") 创建Windows的shell对象打开shell窗口 wscript.sleep 5000for ia t…

vue本地调试devtools

一、谷歌浏览器加载扩展程序 二、把解压的压缩包添加即可,重启浏览器 三、启动前端本地项目,即可看到Vue小图标

Linux|awk 特殊模式“BEGIN 和 END”

引言 在本文[1],我们将介绍Awk的更多特性,特别是两个特殊的模式:BEGIN和END。 这些独特的功能在我们努力扩展和深入探索构建复杂Awk操作的多种方法时,将大有裨益。 实例 让我们从Awk系列的开篇回顾开始,回想一下&#…

SSL证书一般是怎么收费的?

SSL证书的费用通常按照以下几个因素决定: 1. 证书类型: - 域名验证(DV)证书:这是最基本的类型,仅验证域名所有权,费用一般在几十到几百之间. - 组织验证(OV)证书&#xf…

【触摸案例-手势解锁案例-九宫格 Objective-C语言】

一、手势解锁案例,九宫格,我们先来分析一下怎么实现: 首先呢,我们先来运行一下, 这一块儿,上面的这九个东西,肯定是要有一个九宫格的一个算法的问题,然后呢,上边的这九个小圆圈儿,这是什么东西,Button,为什么是Button,因为可以点,是吗,就因为这个?实际上,你用…

LeetCode55:跳跃游戏

题目描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 解题思想 每次…

软考-信息系统项目管理师-论文技术架构模板(60天备考第26天)

分享一段信息系统项目管理师论文项目技术架构描述的万能模板,供大家参考。距离考试还有二十八天,如果论文写不好的可以加微进论文指导群学习论文写作。 该系统前端基于Vue开发,后端基于java开发,前后端分离部署。整体采用B/S架构&…