alpha-7 七云鸟
线、弦,坍缩
关注数: 25 粉丝数: 168 发帖数: 3,276 关注贴吧数: 969
NA、BL、ModdedPE全面深度解剖 在阅读本文章时您可能需要以下【前置知识】以获得最佳的阅读体验。 * NativeAddon是什么? NativeAddon是指本地化插件/原生插件。"原生"一词和android原生开发中的原生同义,即使用C/C++进行编写,通过编译器编译成(linux下的)动态链接库(.so),Addon意为插件,这个无需过多解释。 * NativeAddon只存在于MinecraftPE吗? 并不,每一个程序都可以(以一定手段在一定程度上)编写出针对它的NativeAddon,甚至还有针对插件的插件,如ModdedPE的功能拓展库Gridge,实际上它还有一个附加插件用于封装&集成基函数。 * BlockLauncher插件是什么? BlockLauncher插件是NativeAddon的一个具体化。它针对和作用于MinecraftPE,BlockLauncher使用代理MinecraftPE原dex文件的方式在BlockLauncher程序内部手动加载MinecraftPE所使用的音效引擎fmod(libfmod.so)与MinecraftPE的核心代码libminecraftpe.so,以便于使用libsubstrate.so(一个native层的hook库)对libminecraftpe.so进行hook。 * BlockLauncher插件真的是"BlockLauncher的插件"吗? 严格来说并不是,这只是习惯用这个名字(所以也被人们叫做NativeAddon,注意这里的NativeAddon不是指一开头的广义NativeAddon,是个体上的MinecraftPE NativeAddon),前面说到BlockLauncher插件是NativeAddon的一个具体化,实际上BlockLauncher插件还是第一个MinecraftPE NativeAddon的具体化。在BlockLauncher广泛传播之后,越来越多的同类型产品也开始出现,如ModdedPE。 * BlockLauncher插件只工作在BlockLauncher上吗? 可以说是,也可以说不是,这个问题的理解方向很多。BlockLauncher插件拥有一些特殊的标记使得它与常规app区分开来,也指明它的目标只有BlockLauncher,但是其本质工作的so文件能够被任何软件加载(java: System.load,BlockLauncher与ModdedPE使用的都是这条方法进行加载,这是最常规的方式)。 * BlockLauncher插件、ModPEScript和PTPmod(.mod)有何关系? ModPEScript由javascript引擎Mozilla Rhino执行,由BlockLauncher内置的api(相当于一个内置的BlockLauncher插件,具体文件为libmcpelauncher.so)实现对MinecraftPE的操作具体化,基本上ModPE的函数都由这个api提供,再到java层封装成对外的ModPE-api。PTPmod(对应的加载器为PatchTool,其作者为joshuahuelsman)是最早出现的MinecraftPE类型,在BlockLauncher出现之前,PTPmod一直在扮演着Minecraft Addon领域的重要角色,PTPmod工作的原理和BlockLauncher插件相似却又不同,不同之处主要体现在PTPmod的开发流程,通过16进制重写libminecraftpe.so得到一个新的so文件,并使用diff库生成一份差异文件,即.mod文件,因此PTPmod开发要求的水准更高,难度更高,局限性也更大,但它却是MinecraftPE最早的插件类型。事实上ModPE这一概念也是在卓伟版的BlockLauncher出现之前就已经提出了,卓伟相当于是一个续作者,但卓伟版的BlockLauncher成功的将ModPE扩散开来,使其函数库更为充足,编写更为简易。这里顺带一提,BlockLauncher除以上三种类型外,还支持另外一种冷门的插件(.coffee),即CoffeeScript,工作原理利用的是CoffeeScript能直接翻译成javascript这一Coffee特点。 * ModdedPE的Nmod是NativeAddon吗? Nmod即NativeMod,这个问题的答案也很显然,Nmod和BlockLauncher插件都是NativeAddon的具体化,实际上这一类插件几乎没有什么不同,Nmod只需稍作改动就能变成BlockLauncher插件,BlockLauncher插件亦然。
1 下一页