当前位置: 首页 > news >正文

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

如果文章字体看得不是很清楚,大家可以下载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.

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

相关文章:

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

如果文章字体看得不是很清楚,大家可以下载pdf文档查看,文档已上传~oo~ 7、安装加密APK 需要修改文件如下: 相对Android4.2改动还是蛮大的,有些文件连路径都变了: //Android4.2 1、frameworks/native/libs…...

PostgreSQL备份恢复与复制

前言 随着国家战略层面对信息安全关注度越来越高,数据库是基础软件国产化自主可控的重要方面之一。PG是世界上最流行的开源关系型数据库之一,并且他是类BSD开源许可,开源协议非常友好,可以随意分发、闭源和开源,可以用…...

spring高级篇(八)

本篇对Spring MVC 的执行流程做一个简单总结 MVC执行流程总结 当浏览器发送一个请求,例如http://localhost:8080/hello,请求到达服务器后,一般会进行如下操作: 1、首先会经过DispatcherServlet,默认映射路径为 /&…...

UP互助 帮助UP起号做视频 支持B站和抖音

【软件名字】:UP互助 【软件版本】:1.0 【软件大小】:17.5MB 【软件平台】:安卓 【测试机型】:小米9 1.随便登个邮箱,添加自己平台的频道,然后就可以帮助别人,添加频道后在添加…...

*求问?:为何会超时(TLE)?

D - Grid and Magnet (atcoder.jp) 错误代码&#xff1a; //2024年5月5日14:53:43 #include <bits/stdc.h> #define move mmove //防止与头文件中重复 using namespace std; int h,w; string s[1000]; const int move[4][2]{{1,0},{-1,0},{0,1},{0,-1}}; bool used[100…...

cocosstudio工程文件(.ccs)维护问题

创建cocos工程.bat在多人合作的cocos项目中&#xff0c;大家公用一个ccs文件&#xff0c;存在的问题是如果大家都提交ccs文件比较容易出现冲突&#xff0c;解决冲突麻烦要耗费时间&#xff0c;不提交的话就拉不到其他人更新的csd文件。 方案一 解决冲突&#xff0c;更新提交c…...

Blender动画与云渲染:创造高质量作品的未来路径

Blender作为开源的3D图形软件&#xff0c;在多个领域广受欢迎。但随着项目复杂度提升&#xff0c;传统渲染方式受限。云渲染技术的兴起突破了这些限制&#xff0c;为创作者提供了更自由、高效的创作环境。 一、Blender动画项目的挑战 传统上&#xff0c;Blender动画渲染需要依…...

【MySQL】3.MySQL核心概念解析:数据完整性、事务处理、索引及聚簇索引与非聚簇索引

探索MySQL的内部机制&#xff0c;理解数据完整性、事务处理、索引策略以及聚簇索引与非聚簇索引的区别是至关重要的。这些概念构成了数据库设计和优化的基础&#xff0c;对于确保数据的准确性、提高查询效率、维护数据的一致性和实现复杂的数据库操作至关重要。本文将逐一剖析这…...

【netty系列-03】深入理解NIO的基本原理和底层实现(详解)

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…...

大数据Scala教程从入门到精通第二篇:Scala入门

一&#xff1a;Scala入门 1&#xff1a;为什么学习Scala Spark新一代内存级大数据计算框架&#xff0c;是大数据的重要内容 Spark就是使用Scala编写的。因此为了更好的学习Spark,需要掌握Scala这门语言 Spark的兴起&#xff0c;带动Scala语言的发展! 2&#xff1a;Scala的发展…...

Spring Data JPA数据批量插入、批量更新真的用对了吗

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 前言 在前两篇文章已经…...

数据结构-线性表-应用题-2.2-12

1&#xff09;算法的基本设计思想&#xff1a;依次扫描数组的每一个元素&#xff0c;将第一个遇到的整数num保存到c中&#xff0c;count记为1&#xff0c;若遇到的下一个整数还是等于num,count,否则count--,当计数减到0时&#xff0c;将遇到的下一个整数保存到c中&#xff0c;计…...

目录页码右对齐快速解决

选择目录–段落–制表符&#xff0c;按图中设置即可...

分红76.39亿,分红率再创新高,成长活力无限的伊利带来丰厚回报

伊利47万股东&#xff0c;又等来了一个好消息。 4月29日&#xff0c;伊利股份发布2023年报&#xff0c;实现营业总收入1261.79亿元&#xff0c;归母净利润104.29亿元&#xff0c;双创历史新高&#xff0c;实现连续31年稳健增长。 在递交亮眼成绩单的同时&#xff0c;乳业巨头伊…...

关于行进线路。

https://map.tianditu.gov.cn/ 作者&#xff1a;Chockhugh 链接&#xff1a;https://www.zhihu.com/question/20545559/answer/494685117 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 以50km&#xff0c;几乎全是…...

Unity 编辑器工具 - 资源引用查找器

目录 1.功能概述 2.完整代码 3. 实现原理 4. 使用预览 5.新增优化版本 在Unity项目开发过程中&#xff0c;管理和维护资源之间的引用关系是至关重要的。当然我们项目也是需要这个功能 毕竟项目大了之后查找资源引用还是交给 资源引用查找器 比较好。 1.功能概述 资源引用…...

MySQL中的批量更新实战

MySQL中的批量更新实战 表结构 mysql> desc dept; --------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | --------------------------------------------------------- | deptno | int(11) …...

为软件教学文档增加实践能力

为了更方便软件教学&#xff0c;我们在凌鲨(OpenLinkSaas)上增加了公共资源引用的功能。 目前可以被引用的公共资源: 微应用常用软件公共知识库Docker模板 引用公共资源 引用微应用 目前微应用包含了主流数据库&#xff0c;终端等工具&#xff0c;可以方便的进行各种相关实…...

39-2 Web应用防火墙 - WAF数据库层绕过

如果你本地没有安装mysql就先安装一下:4-2 MySQL 的下载与安装_mysql5.7.9.1下载-CSDN博客 一、数据库层绕过简介 绕过数据库层通常用于规避Web应用防火墙(WAF)的SQL注入防护规则。攻击者需要利用数据库特性,寻找规避常规安全策略的方法。这里涉及到不同数据库的特性、SQ…...

薪酬激励策略:留住企业核心人才的关键

在竞争激烈的商业环境中&#xff0c;企业为了保持竞争力和市场地位&#xff0c;必须高度重视人才的管理和发展。企业的核心人才是推动企业发展的关键因素&#xff0c;因此&#xff0c;如何有效地激励和留住这些核心人才&#xff0c;成为企业持续发展的关键之一。薪酬激励策略作…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...