备案信息如何上传的网站上,商标注册网官方网,网站流量盈利,google关键词优化排名在移植 AWTK 到 HarmonyOS NEXT 系统之前#xff0c;我们需要先完成平台适配#xff0c;比如文件、多线程#xff08;线程和同步#xff09;、时间、动态库和资源管理。
1. 文件
HarmonyOS NEXT 支持标准的 POSIX 文件操作接口#xff0c;我们可以直接使用下面的代码我们需要先完成平台适配比如文件、多线程线程和同步、时间、动态库和资源管理。
1. 文件
HarmonyOS NEXT 支持标准的 POSIX 文件操作接口我们可以直接使用下面的代码
src/platforms/pc/fs_os.c2. 多线程
HarmonyOS NEXT 支持标准的 POSIX 线程操作接口我们可以直接使用下面的代码
src/platforms/pc/thread_with_pthread.c3. 时间
HarmonyOS NEXT 支持标准的时间函数我们可以直接使用下面的代码
src/platforms/pc/platform_time.c4. 动态库
HarmonyOS NEXT 支持标准的动态库操作接口我们可以直接使用下面的代码
src/platforms/pc/dl.c5. 系统信息
AWTK 需要一些系统信息比如 屏幕大小、屏幕密度、可写文件目录、临时目录、当前语言、字体缩放比例等。我们可以使用下面的代码从 UIAbilityContext 获取然后传入到 native 层 let context getContext(this) as common.UIAbilityContext;let filesDir: string context.filesDir;let tempDir: string context.tempDir;let resourceManager context.resourceManager;let resourceDir context.resourceDir;let screenDensity: number context.config.screenDensity || 640;let fontScale:number context.config.fontSizeScale || 1;let language:string context.config.language || zh_CN;awtk_napi.init(resourceManager, filesDir, tempDir, screenDensity, fontScale, language);6. 资源管理
资源管理比较麻烦一点我们参考 AWTK-IOS 将资源打包成一个文件 assets.zip放到应用程序的包里。在 HarmonyOS NEXT 系统中我们可以把 assets.zip 放到 rawfile 目录下
entry/src/main/resources/rawfile/assets.zip然后通过资源管理器读取 filename assets.zip;RawFile *rawFile OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str());if (rawFile ! nullptr) {} long len OH_ResourceManager_GetRawFileSize(rawFile);assetsData std::make_uniqueuint8_t[](len);int res OH_ResourceManager_ReadRawFile(rawFile, assetsData.get(), len);OH_ResourceManager_CloseRawFile(rawFile);OH_ResourceManager_ReleaseNativeResourceManager(mNativeResMgr);assetsZipContent assetsData.get();assetsZipSize len;awtk_app_-Init(filesDir.c_str(), tempDir.c_str(), screenDensity, fontScale, language.c_str(), assetsZipContent, assetsZipSize);7. 编译运行 AWTK 原生窗口和输入事件处理此时已经实现不过我们下一篇文章再介绍先放一张图上来看看