主题
Skip to content
代理加密混淆方案多引擎通用(代理)
背景:之前的解密方案由于对于各引擎代码有直接依赖,导致编译出的静态库在各引擎不通用,因此重构混淆代码,理论上可以各引擎通用。
新的静态库分别可以在安卓、鸿蒙和 iOS 所有的引擎版本中使用,代码对接区分 2.x.x 和 3.x.x。
加密方法对接分三步:
1.修改引擎
2.链接静态库
3.对接加密代码
静态库:
iOS
安卓
鸿蒙
修改引擎:
WARNING
目前只有鸿蒙需要修改引擎
找到cocos/platform/openharmony/napi/NapiInit.cpp文件
增加__setModuleInit 桥接

C++
static bool (*_moduleInit)(napi_env mainEnv, napi_value moduleObj);
void __setModuleInit(bool (*moduleInit)(napi_env mainEnv, napi_value moduleObj)) {
_moduleInit = moduleInit;
}
if (_moduleInit) {
_moduleInit(env,exports);
}对接加密代码:
安卓、鸿蒙和 iOS 代码加密的对接是一样的
找到导出的安卓或 iOS 工程,找到工程里面的 Game.cpp 文件(2.x.x 引擎的是 AppDelegate.cpp 文件,一般都是在 Classes 目录)。
在文件头部导入
C++
extern void setJS(const std::string &js_file);
extern void init_fileutils();3.x.x 调用如下:

C++
void runScript(const std::string &filePath) override; 要在 Game.h 声明
2.x.x 调用如下

链接静态库:
iOS 只需将上述静态库文件都导入 Xcode,然后设置 Library Search Paths 的 libCocosDecode.a 搜索路径。
如果引擎版本是2.x.x,需要添加一个宏定义 COCOS2D_JAVASCRIPT

安卓 2.x.x 和 3.x.x 分别使用 mk 和 CMake 编译,所以编译方式有区别。
编译 so 优先使用 NDK 24.0.8215888
3.x.x 使用 CMake 编译
找到工程的 CMakeLists.txt 文件,一般在主模块目录下(可以去主模块下的 build.gradle 查看 externalNativeBuild 设置的 CMakeLists.txt 路径)。

C++
list(APPEND CC_COMMON_SOURCES
静态库中的目录/EngineAdapter.h
静态库中的目录/ExFileUtilsv5.h
静态库中的目录/ExFileUtilsv5.cpp
)
add_library(clientcocos STATIC IMPORTED GLOBAL)
set_target_properties(clientcocos PROPERTIES
IMPORTED_LOCATION 静态库的目录/${ANDROID_ABI}/libclientcocos.a
)
target_link_libraries(${CC_LIB_NAME} clientcocos)2.x.x 使用 mk 编译
将静态库下载下来解压到工程的某个目录(不要是 libs 目录),找到导出的安卓工程中的 CocosAndroid.mk 文件(一般在工程根目录下的 jni 目录里面)。

C++
LOCAL_CFLAGS += -DCOCOS2D_JAVASCRIPT
LOCAL_SRC_FILES += 静态库目录/ExFileUtilsv5.cpp
LOCAL_C_INCLUDES += 静态库文件目录
LOCAL_LDLIBS := -L静态库目录/$(TARGET_ARCH_ABI) -lclientcocos鸿蒙目前只支持 3.x.x,所以链接方式只有 CMake,并且与安卓链接方式基本一致,鸿蒙链接静态库查看安卓 CMake 链接方式。
注:鸿蒙 CMake 中没有 ANDROID_ABI 变量,取而代之的是 OHOS_ARCH,所以链接时使用 OHOS_ARCH 区分架构,并且目前鸿蒙只支持 arm64-v8a。
C++
set_target_properties(clientcocos PROPERTIES
IMPORTED_LOCATION 静态库目录/${OHOS_ARCH}/libclientcocos.a
)点我快速对接



›
‹