-
-
Xposed插件安装更新免重启手机方案
-
发表于:
2018-7-10 18:43
6954
-
毋庸置疑的是,Xposed已经被玩坏了。
但是,
Xposed无论从哪个方面来说都是一款非常优秀的框架、方案。
但是很多开发者对于在开发插件时,安装、更新Xposed插件需要重启手机,总是有种难言之隐,抱怨之声犹如滔滔江水连绵不绝,又犹如黄河泛滥一发不可收拾。
如果看看Android源码,看看Xposed源码,了解了Android运行时系统进程和应用进程生命周期,了解了Xposed提供的功能以及注入代码的场景、时机,应该就不会抱怨那么多了。
因为安装和更新插件后如果不(软)重启手机,意味着放弃部分功能。
Xposed提供的功能接口主要有4个,具体都是干什么的,相信小伙伴们都是成竹在胸,就不啰嗦了。
- de.robv.android.xposed.IXposedHookZygoteInit
- de.robv.android.xposed.IXposedHookLoadPackage
- de.robv.android.xposed.IXposedHookInitPackageResources
- de.robv.android.xposed.IXposedHookCmdInit
但实际情况是,很多开发者只使用了Xposed的一部分功能,也就是de.robv.android.xposed.IXposedHookLoadPackage提供的功能。一般情况下,只是实现了该接口,然后在目标应用程序进程中注入执行插件代码,干一些自定义的勾当。
本文提供的免重启方案,仅仅针对de.robv.android.xposed.IXposedHookLoadPackage接口而已。如果你在开发中涉及到了更多的接口,比如de.robv.android.xposed.IXposedHookZygoteInit,那还能指望(软)不重启吗?
本文提供的免重启方案,主要对XposedBridge(源码地址:d85K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6J5L8%4k6G2z5o6W2Q4x3V1k6j5M7r3!0K6k6h3c8n7M7X3W2V1k6$3g2Q4c8f1k6Q4b7V1y4Q4z5o6W2Q4c8e0c8Q4b7U0S2Q4b7f1c8Q4c8e0N6Q4z5f1q4Q4z5o6c8V1k6g2)9J5k6i4u0G2j5Y4k6Q4x3X3g2S2L8X3c8J5L8$3W2V1i4K6u0W2P5s2m8G2M7$3g2V1i4K6u0W2h3s2m8G2M7$3g2V1d9h3&6A6N6q4!0q4y4#2!0n7x3g2!0n7b7W2!0q4z5q4!0n7c8W2)9&6b7W2!0q4z5q4!0m8x3g2)9^5b7#2!0q4y4q4!0n7b7g2)9^5y4W2!0q4y4W2!0n7b7g2)9&6x3q4!0q4y4#2!0m8x3q4)9^5x3g2!0q4y4q4!0n7c8W2!0m8c8g2!0q4y4W2)9&6y4q4!0n7z5g2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4#2)9^5y4q4!0n7y4W2!0q4y4g2)9&6x3q4)9^5c8g2!0q4z5g2)9^5y4#2)9^5c8q4!0q4y4W2)9&6y4W2!0n7x3q4!0q4z5q4!0n7c8W2)9&6b7W2!0q4z5q4!0m8x3g2)9^5b7#2!0q4y4#2!0n7b7#2)9&6y4W2!0q4z5q4!0m8c8W2)9&6x3g2!0q4x3#2)9^5x3q4)9^5x3W2!0q4y4W2)9&6y4W2)9^5y4#2!0q4y4q4!0n7b7W2!0n7y4W2!0q4y4g2!0n7y4#2!0n7x3W2!0q4y4#2!0n7b7W2)9^5c8W2!0q4y4q4!0n7z5q4)9^5b7g2!0q4y4q4!0n7b7#2!0m8x3r3N6A6N6r3S2#2j5W2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4q4!0n7z5q4)9^5b7W2!0q4z5q4!0n7c8q4!0n7c8q4!0q4y4g2)9&6b7#2!0n7x3q4!0q4y4g2)9&6c8q4)9^5x3q4!0q4c8W2!0n7b7#2)9&6b7h3S2@1N6s2m8K6i4K6y4m8i4K6u0r3i4K6u0r3k6$3W2@1K9s2g2T1i4K6u0W2j5$3!0E0i4K6u0r3k6X3!0G2M7X3g2W2i4K6u0r3k6X3!0G2h3s2m8G2M7$3g2V1i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8X3k6A6L8r3g2K6i4K6u0r3h3s2m8G2M7$3g2V1b7Y4u0A6k6r3N6W2i4K6g2X3k6X3!0G2M7X3g2W2i4K6g2X3j5$3!0E0M7r3W2D9k6g2)9J5k6h3A6S2M7W2!0q4x3#2)9^5x3q4)9^5x3R3`.`.
因为Xposed本身设计及其提供的功能比较完善(虽说不能满足部分人需求),此次更改其实是一种破坏Xposed架构和功能的行为;思来想去,满满的全是罪恶感。
为了能够免重启,最终还是下手了。
使用方法:替换手机中的/system/framework/XposedBridge.jar文件,然后重启手机(
)。务必首先备份原文件哦。
测试说明:在搭载Android 7.0系统的Nexus 5X手机上了测试,其他高度定制化的Android系统没有测试过。
使用限制:
- 只能在ART模式下(Android 4.4.4以上)有效。
- 只能对仅仅实现了de.robv.android.xposed.IXposedHookLoadPackage接口的插件生效。
- 对于不能退出的进程无效,例如system_server。
- 安装、更新插件后,需要等到XposedInstaller弹出模块更新通知,然后重启目标应用才能生效,而不是重启手机哦。

- 安装插件后在XposedInstaller中勾选才能生效,但仅仅是勾选而已;取消勾选失效。
- 小伙伴在测试、使用过程中遇到其他问题其他问题,请留言讨论。
小伙伴们,开始享受大把大把的免重启时光吧。
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2018-7-10 19:15
被fooree编辑
,原因: 图片挂了