主题
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 链接静态库
找到工程的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 链接静态库
将静态库下载下来解压到工程的某个目录(不要是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
)点我快速对接



›
‹