首页
社区
课程
招聘
[求助]在Android6.0的系统重新编译framework替换不生效
发表于: 2020-11-30 18:54 3609

[求助]在Android6.0的系统重新编译framework替换不生效

2020-11-30 18:54
3609

尝试一:

 

1.export export WITH_DEXPREOPT=false
2.修改framework后,使用mm在"framework/base"下编译该模块
3.在out/target/product/xxx/system/framework/下生成了framework.jar
4.adb remount
5.adb push framework.jar /system/framework
6.adb shell stop;start

 

第一种尝试发现自己在framework中添加的代码并未生效,后来发现在android6.0以上真正生效的时framework/arm/*下的.oat .art 文件,于是尝试第二种方案

 

尝试二:
1.export export WITH_DEXPREOPT=true
2.修改framework后,使用mm在"framework/base"下编译该模块
3.在out/target/product/xxx/system/framework/arm<arm64>/下都生成了boot.oat和boot.art
4.adb remount
5.将生成的文件替换系统中的文件adb push framework /system/framework/arm<arm64>
6.adb shell stop;start
第二种尝试下手机卡在Android界面,当时以为代码写的有问题,于是使用干净的源码编译了与原始系统的boot.oat boot.art文件相同,然后push后还是卡在android启动时的界面,将备份的原生系统的boot.oat,boot.art push 进去则正常启动。

 

想问一下Android在启动加载framework时有类似验证文件完整性的机制吗?
替换framework一定要重新编译system.img吗?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-12-1 13:39 被Craft_A编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是的
2020-11-30 19:07
1
雪    币: 1318
活跃值: (655)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
mb_foyotena 是的
有点难顶啊
2020-11-30 19:08
0
雪    币: 2090
活跃值: (3943)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Factory Reset即可,或者删掉虚拟机缓存、改版本号二选一。
你要知道为什么修改版本号以后,系统开机会提示优化应用,其实就是你说的原因。
既然是调试,就没必要改版本号了,删除缓存是最简单直接的方法。
2020-11-30 23:59
0
雪    币: 1318
活跃值: (655)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
lhxdiao Factory Reset即可,或者删掉虚拟机缓存、改版本号二选一。 你要知道为什么修改版本号以后,系统开机会提示优化应用,其实就是你说的原因。 既然是调试,就没必要改版本号了,删除缓存是最简单直 ...
我尝试了一下push boot.oat和boot.art后,进入recovery进行双清,但是还是卡在android界面。请大佬明示。我用make systemimage后重新刷入可以了,也能正常跑我的代码了,但太麻烦了~~。
2020-12-1 10:52
0
雪    币: 215
活跃值: (1563)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
WITH_DEXPREOPT是false的话,直接替换jar,然后重启
2020-12-1 11:21
0
雪    币: 1318
活跃值: (655)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
我第一种方式尝试了,但是修改的代码没有生效。调试的时候也不过我写的代码。
2020-12-1 13:40
0
游客
登录 | 注册 方可回帖
返回