本文主要是介绍Android11快速编译并替换framework.jar,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android11快速编译并替换framework.jar
在Android11之前修改了framework相关代码,只需make framework就可以编译出framework.jar。在Android11,这个编译命令不起作用了,根据framework/base/目录下Android.bp中的提示:
java_library {name: "framework-minus-apex",defaults: ["framework-defaults"],srcs: [":framework-non-updatable-sources"],installable: true,......// For backwards compatibility.stem: "framework",apex_available: ["//apex_available:platform"],visibility: ["//frameworks/base",// TODO(b/147128803) remove the below lines"//frameworks/base/apex/blobstore/framework","//frameworks/base/apex/jobscheduler/framework","//frameworks/base/packages/Tethering/tests/unit",],
}// This "framework" module is NOT installed to the device. It's
// "framework-minus-apex" that gets installed to the device. Note that
// the filename is still framework.jar (via the stem property) for
// compatibility reason. The purpose of this module is to provide
// framework APIs (both public and private) for bundled apps.
// "framework-minus-apex" can't be used for the purpose because 1)
// many apps have already hardcoded the name "framework" and
// 2) it lacks API symbols from updatable modules - as it's clear from
// its suffix "-minus-apex".
可以看到framework变为了framework-minus-apex,通过stem属性使编译出来的模块还叫framework.jar,这样修改的目的一个是为了向后兼容以前的jar名称,一个也是为了表示现在framework是减去了apex的模块,所以带个minus-apex的后缀。
那么编译的时候就要换成下面的命令:
make framework-minus-apex
编译出framework.jar后,先用下面的命令remount:
adb root;adb disable-verity;adb reboot;adb wait-for-device;adb root;adb remount
然后把framework.jar push到system/framework/下面,同时还要删除这个目录下面的oat,arm,arm64三个目录(不删除会一直卡在开机动画),最后再运行下面的命令重启zygote,这样新替换的framework.jar就生效了。
adb shell stop;adb shell start;
这篇关于Android11快速编译并替换framework.jar的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!