真正的整合包: 在原版安装包里面加插件!

本贴直播做一个整合一个插件到原版。
作用是当爆炸发生时,在聊天栏输出"爆炸是不允许的",并且阻止爆炸发生。
原料准备:
MT管理器2;
MCPE安装包;
一份插件的so;
libsubstrate.so或者libmcpelauncher_tinysubstrate.so;

楼主 ModelPart  发布于 2017-02-15 19:27:00 +0800 CST  
2l自占

楼主 ModelPart  发布于 2017-02-15 19:28:00 +0800 CST  
第一步,解压mcpe安装包。


楼主 ModelPart  发布于 2017-02-15 19:30:00 +0800 CST  
吐槽一句
解压真慢.......


楼主 ModelPart  发布于 2017-02-15 19:39:00 +0800 CST  
下一步,进入
www.cydiasubstrate.com


楼主 ModelPart  发布于 2017-02-15 19:42:00 +0800 CST  
找到左下角的
Browse documentation
按下去


楼主 ModelPart  发布于 2017-02-15 19:44:00 +0800 CST  
找到右上角的for android部分


楼主 ModelPart  发布于 2017-02-15 19:55:00 +0800 CST  
点击read about android sdk


楼主 ModelPart  发布于 2017-02-15 19:55:00 +0800 CST  
点击下载。


楼主 ModelPart  发布于 2017-02-15 19:56:00 +0800 CST  



楼主 ModelPart  发布于 2017-02-15 20:04:00 +0800 CST  
解压完成后,复制进安装包内libs/armeabi-v7a/文件夹
如果您是x86架构,那么复制到libs/x86/文件夹。

楼主 ModelPart  发布于 2017-02-15 20:05:00 +0800 CST  
下一步 写好原生插件代码后编译
这是源代码
#include "Substrate.h"
#include <jni.h>
#include <string>

void* mcClient;

void (*_minecraftclient_init_)(void*);
void _minecraftclient_init(void*thiz)
{
_minecraftclient_init_(mcClient=thiz);
}

void* (*getGuiData)(void*);
void (*displayClientMessage)(void*,std::string const&);

void explode_replace(void*)
{
void* guiData=getGuiData(mcClient);
displayClientMessage(guiData,"爆炸是禁止的哦!");
}

JNIEXPORT jint JNI_OnLoad(JavaVM*,void*)
{
void * image = dlopen("libminecraftpe.so",RTLD_LAZY);
MSHookFunction(dlsym(image,"_ZN9Explosion7explodeEv"),(void*)&explode_replace);

MSHookFunction(dlsym(image,"_ZN15MinecraftClient4initEv"),(void*)&_minecraftclient_init,(void**)&_minecraftclient_init_);

getGuiData=(void*(*)(void*)) dlsym(image,"_ZN15MinecraftClient10getGuiDataEv");

displayClientMessage= (void(*)(void*,std::string const&)) dlsym(image,"_ZN7GuiData20displayClientMessageERKSs");

return JNI_VERSION_1_6;
}


楼主 ModelPart  发布于 2017-02-15 20:20:00 +0800 CST  
把插件的so复制到刚才的文件夹里面
记住这个文件(libdemo.so)的名字 一会儿要用到的。


楼主 ModelPart  发布于 2017-02-15 20:22:00 +0800 CST  
打开mcpe的classes.dex


楼主 ModelPart  发布于 2017-02-15 20:24:00 +0800 CST  
选择第一个dex编辑器
进入类列表。



楼主 ModelPart  发布于 2017-02-15 20:26:00 +0800 CST  
找到com.mojang.minecraftpe包
进入MainActivity类。



楼主 ModelPart  发布于 2017-02-15 20:26:00 +0800 CST  
选择方法列表
打开<clinit>方法



楼主 ModelPart  发布于 2017-02-15 20:28:00 +0800 CST  
打开后我们进入这一个界面。


楼主 ModelPart  发布于 2017-02-15 20:29:00 +0800 CST  
找到图上选择的代码
选择复制


楼主 ModelPart  发布于 2017-02-15 20:36:00 +0800 CST  
然后在如图所示位置粘贴两次 。
如果同时整合两个插件就粘贴三次
同时整合四个就粘贴五次
注意,一定是如图所示的位置!!!
一定在const-string v1 "minecraftpe"
invoke-static {v1} Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
的后面!
位置一定不可以错!


楼主 ModelPart  发布于 2017-02-15 20:38:00 +0800 CST  

楼主:ModelPart

字数:2201

发表时间:2017-02-16 03:27:00 +0800 CST

更新时间:2018-10-16 16:41:54 +0800 CST

评论数:272条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看