From f438ea648536ffcedc5a2d81196b0c0e52daa6b7 Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Tue, 11 Mar 2025 17:59:21 +0300 Subject: [PATCH] Add vmkind option to arkts har bundle Signed-off-by: Anton Tarasov --- .../har/arkoala-har-bundle/bundle.mjs | 3 ++- .../har/arkoala-har-bundle/loader.js | 10 ++++++--- .../har/arkoala-har-bundle/rollup.config.mjs | 3 ++- arkoala-arkts/har/package.json | 6 +++--- .../scripts/build-arkoala-har-universal.mjs | 21 ++++++++++++------- .../har/scripts/build-arkoala-har.mjs | 21 ++++++++++++------- 6 files changed, 40 insertions(+), 24 deletions(-) diff --git a/arkoala-arkts/har/arkoala-har-bundle/bundle.mjs b/arkoala-arkts/har/arkoala-har-bundle/bundle.mjs index 3e2beec86c..ffdb6617e8 100644 --- a/arkoala-arkts/har/arkoala-har-bundle/bundle.mjs +++ b/arkoala-arkts/har/arkoala-har-bundle/bundle.mjs @@ -21,6 +21,7 @@ import { checkLoader } from "./loader.js" let moduleInfo; +let vmkind = "__VMKIND__" export function startArkoala(startPage, info) { moduleInfo = { ...info } @@ -54,7 +55,7 @@ export function wrapOnWindowStageCreate(receiver) { console.log(">>>>>", appName) // startArkoala(url, { bundleName, moduleName }); - checkLoader("panda", appName) + checkLoader(`panda-${vmkind}`, appName) }); return cb?.(err, data, ...rest); }; diff --git a/arkoala-arkts/har/arkoala-har-bundle/loader.js b/arkoala-arkts/har/arkoala-har-bundle/loader.js index bdb5952f98..4c0d73280a 100644 --- a/arkoala-arkts/har/arkoala-har-bundle/loader.js +++ b/arkoala-arkts/har/arkoala-har-bundle/loader.js @@ -98,15 +98,19 @@ export async function runEventLoop() { console.log("EXIT_APP"); process?.exit(0) } -export function checkLoader(variant, appName) { +export function checkLoader(vmkind, appName) { let vm = -1; let classPath = `/data/storage/el1/bundle/libs/__ARCH__`; let nativePath = classPath; - switch (variant) { - case 'panda': { + switch (vmkind) { + case 'panda-ets': { vm = 2; break; } + case 'panda-ani': { + vm = 4; + break; + } } let result = nativeModule()._LoadVirtualMachine(vm, classPath, nativePath); if (result == 0) { diff --git a/arkoala-arkts/har/arkoala-har-bundle/rollup.config.mjs b/arkoala-arkts/har/arkoala-har-bundle/rollup.config.mjs index 0c3d311519..27449d0b7e 100644 --- a/arkoala-arkts/har/arkoala-har-bundle/rollup.config.mjs +++ b/arkoala-arkts/har/arkoala-har-bundle/rollup.config.mjs @@ -59,7 +59,8 @@ export default cliOptions => [{ preventAssignment: true, values: { __ARKOALA_HAR__: 'true', - __ARCH__: cliOptions.arch + __ARCH__: cliOptions.arch, + __VMKIND__: cliOptions.vmkind } }), inject({ diff --git a/arkoala-arkts/har/package.json b/arkoala-arkts/har/package.json index b0e7d7f6c0..53397babff 100644 --- a/arkoala-arkts/har/package.json +++ b/arkoala-arkts/har/package.json @@ -19,9 +19,9 @@ "scripts": { "clean": "rimraf app/arkoala/build app/arkoala/libs app/arkoala/bundle.js arkoala-har-bundle/dist", "pack": "npm run cli-tools:download && cd app && DEVECO_SDK_HOME=../../../arkoala/ohos-sdk/ohos-sdk ../../command-line-tools/hvigor/bin/hvigorw --no-daemon --mode module -p product=default -p module=arkoala@default assembleHar", - "har-arm32": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har.mjs --arch arm32 && npm run pack", - "har-arm64": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har.mjs --arch arm64 && npm run pack", - "har-universal": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har-universal.mjs && npm run pack", + "har-arm32": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har.mjs --arch arm32 --vmkind ani && npm run pack", + "har-arm64": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har.mjs --arch arm64 --vmkind ani && npm run pack", + "har-universal": "npm run --prefix ../../arkoala/ohos-sdk download && node scripts/build-arkoala-har-universal.mjs --vmkind ani && npm run pack", "cli-tools:download": "node ../../arkoala/ohos-sdk/scripts/oh-sdk-cli.mjs cli-tools -d ../" } } diff --git a/arkoala-arkts/har/scripts/build-arkoala-har-universal.mjs b/arkoala-arkts/har/scripts/build-arkoala-har-universal.mjs index 48331bfb93..0966ad13bf 100644 --- a/arkoala-arkts/har/scripts/build-arkoala-har-universal.mjs +++ b/arkoala-arkts/har/scripts/build-arkoala-har-universal.mjs @@ -42,9 +42,9 @@ function execCmdSync(cmd, options) { return execSync(cmd, options).toString().trim().replace("\n", " ") } -function rollupLaunch() { +function rollupLaunch(vmkind) { console.log(`> Run rollup`) - execCmdSync(`npx rollup -c`) + execCmdSync(`npx rollup -c --vmkind ${vmkind}`) } function copyFile(from, to) { @@ -56,11 +56,11 @@ function copyFile(from, to) { fs.cpSync(from, to, { recursive: true, force: true }) } -function main() { +function main(vmkind) { process.chdir(BUNDLE_PATH) - rollupLaunch() + rollupLaunch(vmkind) const { machine, arch } = getHostMachine() @@ -68,22 +68,27 @@ function main() { copyFile(path.join(_dirname, `../../../arkoala/framework/build/libc++.so`), path.join(HAR_PATH, `libs/armeabi-v7a/libc++.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-hzvm-ohos-arm32-vmloader/libArkoalaLoader.so`), path.join(HAR_PATH, `libs/armeabi-v7a/libArkoalaLoader.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-hzvm-ohos-arm32-vmloader/libvmloader.so`), path.join(HAR_PATH, `libs/armeabi-v7a/libvmloader.so`)) - copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-ohos-arm32/libArkoalaNative_ani.so`), path.join(HAR_PATH, `libs/armeabi-v7a/libArkoalaNative_ark.so`)) + copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-ohos-arm32/libArkoalaNative_${vmkind}.so`), path.join(HAR_PATH, `libs/armeabi-v7a/libArkoalaNative_${vmkind}.so`)) copyFile(path.join(_dirname, `../../build/arkoala.abc`), path.join(HAR_PATH, `libs/armeabi-v7a/arkoala.abc.so`)) // arm64 copyFile(path.join(_dirname, `../../../arkoala/framework/build/libc++.so`), path.join(HAR_PATH, `libs/arm64-v8a/libc++.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-hzvm-ohos-arm64-vmloader/libArkoalaLoader.so`), path.join(HAR_PATH, `libs/arm64-v8a/libArkoalaLoader.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-hzvm-ohos-arm64-vmloader/libvmloader.so`), path.join(HAR_PATH, `libs/arm64-v8a/libvmloader.so`)) - copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-ohos-arm64/libArkoalaNative_ani.so`), path.join(HAR_PATH, `libs/arm64-v8a/libArkoalaNative_ark.so`)) + copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-ohos-arm64/libArkoalaNative_${vmkind}.so`), path.join(HAR_PATH, `libs/arm64-v8a/libArkoalaNative_${vmkind}.so`)) copyFile(path.join(_dirname, `../../build/arkoala.abc`), path.join(HAR_PATH, `libs/arm64-v8a/arkoala.abc.so`)) // x64 copyFile(path.join(_dirname, `../../../arkoala/framework/build/libc++.so`), path.join(HAR_PATH, `libs/x86-64/libc++.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/build/ArkoalaLoader.node`), path.join(HAR_PATH, `libs/x86-64/libarkoalaloader.so`)) copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-node-host-vmloader/libvmloader.so`), path.join(HAR_PATH, `libs/x86-64/libvmloader.so`)) - copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-host/libArkoalaNative_${machine}_${arch}_ani.so`), path.join(HAR_PATH, `libs/x86-64/libArkoalaNative_ark.so`)) + copyFile(path.join(_dirname, `../../../arkoala/framework/native/build-panda-host/libArkoalaNative_${machine}_${arch}_${vmkind}.so`), path.join(HAR_PATH, `libs/x86-64/libArkoalaNative_${vmkind}.so`)) copyFile(path.join(_dirname, `../../build/arkoala.abc`), path.join(HAR_PATH, `libs/x86-64/arkoala.abc.so`)) } -main() +const vmkind = args["vmkind"] +if (vmkind !== "ani" && vmkind !== "ets") { + console.log("Unsupported vmkind: ", vmkind) + process.exit(1) +} +main(vmkind) diff --git a/arkoala-arkts/har/scripts/build-arkoala-har.mjs b/arkoala-arkts/har/scripts/build-arkoala-har.mjs index 615399c792..b455788a77 100644 --- a/arkoala-arkts/har/scripts/build-arkoala-har.mjs +++ b/arkoala-arkts/har/scripts/build-arkoala-har.mjs @@ -19,9 +19,9 @@ function execCmdSync(cmd, options) { return execSync(cmd, options).toString().trim().replace("\n", " ") } -function rollupLaunch(loaderArch) { +function rollupLaunch(loaderArch, vmkind) { console.log(`> Run rollup`) - execCmdSync(`npx rollup -c --arch ${loaderArch}`) + execCmdSync(`npx rollup -c --arch ${loaderArch} --vmkind ${vmkind}`) } function copyFileToHar(from, to) { @@ -42,25 +42,30 @@ function copySoLibs(from, to) { }) } -function main(targetLibDir, loaderArch) { +function main(targetLibDir, loaderArch, vmkind) { process.chdir(BUNDLE_PATH) - rollupLaunch(loaderArch) + rollupLaunch(loaderArch, vmkind) /* we don't yet know which files should be in har */ copyFileToHar(path.join(_dirname, `../../../arkoala/framework/build/libc++.so`), path.join(HAR_PATH, `libs/${targetLibDir}/libc++.so`)) copyFileToHar(path.join(_dirname, `../../../arkoala/framework/build/libArkoalaLoader.so`), path.join(HAR_PATH, `libs/${targetLibDir}/libArkoalaLoader.so`)) copyFileToHar(path.join(_dirname, `../../../arkoala/framework/build/libvmloader.so`), path.join(HAR_PATH, `libs/${targetLibDir}/libvmloader.so`)) - copyFileToHar(path.join(_dirname, `../../../arkoala/framework/build/libArkoalaNative_ani.so`), path.join(HAR_PATH, `libs/${targetLibDir}/libArkoalaNative_ani.so`)) + copyFileToHar(path.join(_dirname, `../../../arkoala/framework/build/libArkoalaNative_${vmkind}.so`), path.join(HAR_PATH, `libs/${targetLibDir}/libArkoalaNative_${vmkind}.so`)) copyFileToHar(path.join(_dirname, `../../build/arkoala.abc`), path.join(HAR_PATH, `libs/${targetLibDir}/arkoala.abc.so`)) } +const vmkind = args["vmkind"] +if (vmkind !== "ani" && vmkind !== "ets") { + console.log("Unsupported vmkind: ", vmkind) + process.exit(1) +} const arch = args["arch"] if (arch == "arm32") { - main("armeabi-v7a", "arm") + main("armeabi-v7a", "arm", vmkind) } else if (arch == "arm64") { - main("arm64-v8a", arch) + main("arm64-v8a", arch, vmkind) } else { console.log("Unsupported architecture: ", arch) - exit(1) + process.exit(1) } -- Gitee