From 9d8137bf966a82256a2c7f20f3e4b365c15e9e3c Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Fri, 22 Nov 2024 14:28:56 +0300 Subject: [PATCH 01/16] User app config created Signed-off-by: Kirill Kirichenko --- arkoala-arkts/arkui/src/Application.ts | 15 +++- .../arkui/src/generated/arkts/NativeModule.ts | 1 + .../src/generated/peers/ArkUINodeType.ts | 71 ++++++++++++++++++- .../har/arkoala-har-bundle/loader.js | 9 ++- arkoala-arkts/package.json | 2 +- arkoala-arkts/user/.gitignore | 9 +++ arkoala-arkts/user/app/.gitignore | 11 +++ arkoala-arkts/user/app/AppScope/app.json5 | 10 +++ arkoala-arkts/user/app/build-profile.json5 | 28 ++++++++ .../user/app/hvigor/hvigor-config.json5 | 22 ++++++ arkoala-arkts/user/app/hvigorfile.ts | 6 ++ arkoala-arkts/user/app/oh-package-lock.json5 | 18 +++++ arkoala-arkts/user/app/oh-package.json5 | 13 ++++ arkoala-arkts/user/app/user/BuildProfile.ets | 17 +++++ .../user/app/user/build-profile.json5 | 28 ++++++++ .../user/app/user/consumer-rules.txt | 0 arkoala-arkts/user/app/user/hvigorfile.ts | 6 ++ .../user/app/user/obfuscation-rules.txt | 18 +++++ arkoala-arkts/user/app/user/oh-package.json5 | 10 +++ .../user/app/user/src/main/module.json5 | 11 +++ arkoala-arkts/user/package.json | 16 ++++- arkoala-arkts/user/scripts/build-user-har.mjs | 46 ++++++++++++ arkoala-arkts/user/src/Page.ts | 44 ++++++------ arkoala-arkts/user/src/ets/hello.ets | 2 +- incremental/tools/panda/package.json | 3 + interop/src/cpp/common-interop.cc | 8 +++ interop/src/cpp/vmloader.cc | 9 +++ 27 files changed, 396 insertions(+), 37 deletions(-) create mode 100644 arkoala-arkts/user/.gitignore create mode 100644 arkoala-arkts/user/app/.gitignore create mode 100644 arkoala-arkts/user/app/AppScope/app.json5 create mode 100644 arkoala-arkts/user/app/build-profile.json5 create mode 100644 arkoala-arkts/user/app/hvigor/hvigor-config.json5 create mode 100644 arkoala-arkts/user/app/hvigorfile.ts create mode 100644 arkoala-arkts/user/app/oh-package-lock.json5 create mode 100644 arkoala-arkts/user/app/oh-package.json5 create mode 100644 arkoala-arkts/user/app/user/BuildProfile.ets create mode 100644 arkoala-arkts/user/app/user/build-profile.json5 create mode 100644 arkoala-arkts/user/app/user/consumer-rules.txt create mode 100644 arkoala-arkts/user/app/user/hvigorfile.ts create mode 100644 arkoala-arkts/user/app/user/obfuscation-rules.txt create mode 100644 arkoala-arkts/user/app/user/oh-package.json5 create mode 100644 arkoala-arkts/user/app/user/src/main/module.json5 create mode 100644 arkoala-arkts/user/scripts/build-user-har.mjs diff --git a/arkoala-arkts/arkui/src/Application.ts b/arkoala-arkts/arkui/src/Application.ts index fb7cf040c..3bb6fd7c7 100644 --- a/arkoala-arkts/arkui/src/Application.ts +++ b/arkoala-arkts/arkui/src/Application.ts @@ -80,6 +80,10 @@ function createMemoRoot(manager: StateManager, ): ComputableState { const peer = new PeerNode(ArkUINodeType.Root, 0, "Root") rootPointer = peer.peer.ptr + + const log = "#### create Root node: " + rootPointer + NativeModule._NativeLog(log) + const node = manager.updatableNode(peer, (context: StateContext) => { const frozen = manager.frozen manager.frozen = true @@ -168,6 +172,9 @@ export class Application { } start(): pointer { + const msg = "##### Application.start" + NativeModule._NativeLog(msg) + try { this.manager = GlobalStateManager.instance this.timer = createAnimationTimer(this.manager!) @@ -177,9 +184,11 @@ export class Application { this.root = createMemoRoot(this.manager!, builder) } catch (e) { if (e instanceof Error) { - if (e.stack) { - console.log(e.stack) - return nullptr + const stack = e.stack + if (stack) { + const msg1 = "#### Stack trace: " + stack + NativeModule._NativeLog(msg1); + return nullptr; } } } diff --git a/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts b/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts index 8a52d12e0..6bf88f6b7 100644 --- a/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts +++ b/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts @@ -1231,6 +1231,7 @@ export class NativeModule { native static _LoadVirtualMachine(arg0: KInt, arg1: KStringPtr, arg2: KStringPtr): KInt native static _RunApplication(arg0: KInt, arg1: KInt): boolean native static _StartApplication(appUrl: KStringPtr, appParams: KStringPtr): KPointer + native static _GetErrorCode(): KInt // node native static _CreateNode(node_t: KInt, arg0: KInt, arg1: KInt): KPointer native static _GetNodeByViewStack(): KPointer diff --git a/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts b/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts index 6d088054d..88a17006e 100644 --- a/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts +++ b/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts @@ -2,53 +2,118 @@ export enum ArkUINodeType { Root, ComponentRoot, CustomNode, + AbilityComponent, + AlphabetIndexer, + Animator, + Badge, BaseSpan, Blank, Button, + Calendar, CalendarPicker, Canvas, + Checkbox, + CheckboxGroup, Circle, Column, + ColumnSplit, Common, CommonMethod, CommonShapeMethod, + Component3D, + ContainerSpan, Counter, + DataPanel, + DatePicker, Divider, + EffectComponent, Ellipse, EmbeddedComponent, Flex, + FlowItem, + FolderStack, FormComponent, + FormLink, + Gauge, Grid, + GridCol, GridContainer, GridItem, + GridRow, + Hyperlink, Image, - IndicatorComponent, + ImageAnimator, + ImageSpan, + Line, + LinearIndicator, List, ListItem, + ListItemGroup, + LoadingProgress, + LocationButton, + Marquee, + MediaCachedImage, + Menu, + MenuItem, + MenuItemGroup, NavDestination, + NavRouter, Navigation, Navigator, + NodeContainer, + Panel, + PasteButton, Path, + PatternLock, + PluginComponent, + Polygon, + Polyline, + Progress, + QRCode, + Radio, + Rating, Rect, + Refresh, + RelativeContainer, + RemoteWindow, RichEditor, + RichText, + RootScene, Row, + RowSplit, + SaveButton, + Screen, Scroll, + ScrollBar, ScrollableCommonMethod, Search, + SecurityComponentMethod, Select, Shape, SideBarContainer, + Slider, Span, Stack, + Stepper, + StepperItem, Swiper, SymbolGlyph, + SymbolSpan, TabContent, Tabs, - Test, Text, + TextArea, + TextClock, TextInput, TextPicker, + TextTimer, + TimePicker, Toggle, - Vector, + UIExtensionComponent, + Video, + WaterFlow, Web, + WindowScene, + XComponent, + Vector } \ No newline at end of file diff --git a/arkoala-arkts/har/arkoala-har-bundle/loader.js b/arkoala-arkts/har/arkoala-har-bundle/loader.js index 8dcfb9da9..c9f1b0fc1 100644 --- a/arkoala-arkts/har/arkoala-har-bundle/loader.js +++ b/arkoala-arkts/har/arkoala-har-bundle/loader.js @@ -117,9 +117,12 @@ export function checkLoader(variant) { } let result = nativeModule()._LoadVirtualMachine(vm, classPath, nativePath); if (result == 0) { - rootPointer = nativeModule()._StartApplication(); - setTimeout(async () => runEventLoop(), 0); - } + console.log("##### Pre start application error: ", nativeModule()._GetErrorCode()) + rootPointer = nativeModule()._StartApplication("LoaderApp", "ArkTSLoaderParam"); + console.log("##### Post start application rootPointer = ", rootPointer, " error: ", nativeModule()._GetErrorCode()) + if (rootPointer != 0) { + setTimeout(async () => runEventLoop(), 0); + } } else { throw new Error(`Cannot start VM: ${result}`); } diff --git a/arkoala-arkts/package.json b/arkoala-arkts/package.json index f8205f146..0c748bc4b 100644 --- a/arkoala-arkts/package.json +++ b/arkoala-arkts/package.json @@ -47,7 +47,7 @@ "run:node:ci": "ACE_LIBRARY_PATH=build PANDA_HOME=../incremental/tools/panda/node_modules/@panda/sdk node build/index.js panda 10", "trivial:all:node": "npm run compile:native:node-host && npm run build:arkoala:components && npm run link:arkoala && npm run link:user && npm run build:loader:node && npm run run:node", "trivial:all:node:ci": "npm run compile:native:node-host && npm run build:arkoala:components && npm run link:arkoala && npm run link:user && npm run build:loader:node && npm run run:node:ci", - "trivial:all:har-arm32": "npm run compile:native:hzvm-ohos-arm32 && npm run build:arkoala:components && npm run link:arkoala && npm run link:user && npm run arkoala:har-arm32 --prefix har", + "trivial:all:har-arm32": "npm run compile:native:hzvm-ohos-arm32 && npm run build:arkoala:components && npm run link:arkoala && npm run arkoala:har-arm32 --prefix har", "clean": "rimraf build user/build && npm run clean -ws --if-present", "clean:all": "npm run clean && npm run clean --prefix ../arkoala/framework && npm run all:clean --prefix ../incremental" } diff --git a/arkoala-arkts/user/.gitignore b/arkoala-arkts/user/.gitignore new file mode 100644 index 000000000..d09915193 --- /dev/null +++ b/arkoala-arkts/user/.gitignore @@ -0,0 +1,9 @@ +generated +js_output +node_modules +oh_modules +.preview +build +.cxx +.test +command-line-tools diff --git a/arkoala-arkts/user/app/.gitignore b/arkoala-arkts/user/app/.gitignore new file mode 100644 index 000000000..ad2fbb06e --- /dev/null +++ b/arkoala-arkts/user/app/.gitignore @@ -0,0 +1,11 @@ +.hvigor +node_modules +oh_modules +rawfile +libs +generated +test.log +test-images +build* +!build-profile.json5 +ohpm diff --git a/arkoala-arkts/user/app/AppScope/app.json5 b/arkoala-arkts/user/app/AppScope/app.json5 new file mode 100644 index 000000000..941642c55 --- /dev/null +++ b/arkoala-arkts/user/app/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.example.user", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name" + } +} diff --git a/arkoala-arkts/user/app/build-profile.json5 b/arkoala-arkts/user/app/build-profile.json5 new file mode 100644 index 000000000..2ee625f46 --- /dev/null +++ b/arkoala-arkts/user/app/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compileSdkVersion": "5.0.0(12)", + "compatibleSdkVersion": "5.0.0(12)", + "runtimeOS": "HarmonyOS", + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "user", + "srcPath": "./user" + } + ] +} \ No newline at end of file diff --git a/arkoala-arkts/user/app/hvigor/hvigor-config.json5 b/arkoala-arkts/user/app/hvigor/hvigor-config.json5 new file mode 100644 index 000000000..792dd2374 --- /dev/null +++ b/arkoala-arkts/user/app/hvigor/hvigor-config.json5 @@ -0,0 +1,22 @@ +{ + "modelVersion": "5.0.0", + "dependencies": { + }, + "execution": { + // "analyze": "default", /* Define the build analyze mode. Value: [ "default" | "verbose" | false ]. Default: "default" */ + // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ + // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ + // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ + // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ + }, + "logging": { + // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ + }, + "debugging": { + // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ + }, + "nodeOptions": { + // "maxOldSpaceSize": 4096 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process */ + } +} + diff --git a/arkoala-arkts/user/app/hvigorfile.ts b/arkoala-arkts/user/app/hvigorfile.ts new file mode 100644 index 000000000..f3cb9f1a8 --- /dev/null +++ b/arkoala-arkts/user/app/hvigorfile.ts @@ -0,0 +1,6 @@ +import { appTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/user/app/oh-package-lock.json5 b/arkoala-arkts/user/app/oh-package-lock.json5 new file mode 100644 index 000000000..eb49e7037 --- /dev/null +++ b/arkoala-arkts/user/app/oh-package-lock.json5 @@ -0,0 +1,18 @@ +{ + "lockfileVersion": 1, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@ohos/hamock@1.0.0-rc": "@ohos/hamock@1.0.0-rc", + "@ohos/hypium@1.0.15": "@ohos/hypium@1.0.15" + }, + "packages": { + "@ohos/hamock@1.0.0-rc": { + "resolved": "https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm/@ohos/hamock/-/@ohos/hamock-1.0.0-rc.tgz", + "integrity": "sha512-98k5LGfWtJ98fjYT9ERBNZSBXFCPNBFf98AjAqhrQ2vtAQuB5MZaf890/Yz+HbBVELtFaSU8H+SyEnb+3MYQwg==" + }, + "@ohos/hypium@1.0.15": { + "resolved": "https://cmc.centralrepo.rnd.huawei.com/artifactory/api/npm/product_npm/@ohos/hypium/-/@ohos/hypium-1.0.15.tgz", + "integrity": "sha512-iUXzaa6ygUe208FxKQvv07ef9NxWSiqYnw8ApFGJVLMWzo4qpevweclWINvumQYRDaQzdAgzzWHzYoFm5vGFEA==" + } + } +} \ No newline at end of file diff --git a/arkoala-arkts/user/app/oh-package.json5 b/arkoala-arkts/user/app/oh-package.json5 new file mode 100644 index 000000000..332c838bb --- /dev/null +++ b/arkoala-arkts/user/app/oh-package.json5 @@ -0,0 +1,13 @@ +{ + "modelVersion": "5.0.0", + "name": "@koalaui/user", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": { + }, + "devDependencies": { + } +} diff --git a/arkoala-arkts/user/app/user/BuildProfile.ets b/arkoala-arkts/user/app/user/BuildProfile.ets new file mode 100644 index 000000000..3a501e5dd --- /dev/null +++ b/arkoala-arkts/user/app/user/BuildProfile.ets @@ -0,0 +1,17 @@ +/** + * Use these variables when you tailor your ArkTS code. They must be of the const type. + */ +export const HAR_VERSION = '1.0.0'; +export const BUILD_MODE_NAME = 'debug'; +export const DEBUG = true; +export const TARGET_NAME = 'default'; + +/** + * BuildProfile Class is used only for compatibility purposes. + */ +export default class BuildProfile { + static readonly HAR_VERSION = HAR_VERSION; + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; + static readonly DEBUG = DEBUG; + static readonly TARGET_NAME = TARGET_NAME; +} \ No newline at end of file diff --git a/arkoala-arkts/user/app/user/build-profile.json5 b/arkoala-arkts/user/app/user/build-profile.json5 new file mode 100644 index 000000000..312d38eb0 --- /dev/null +++ b/arkoala-arkts/user/app/user/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": true, + "files": [ + "./obfuscation-rules.txt" + ] + }, + "consumerFiles": [ + "./consumer-rules.txt" + ] + } + }, + }, + ], + "targets": [ + { + "name": "default" + } + ] +} diff --git a/arkoala-arkts/user/app/user/consumer-rules.txt b/arkoala-arkts/user/app/user/consumer-rules.txt new file mode 100644 index 000000000..e69de29bb diff --git a/arkoala-arkts/user/app/user/hvigorfile.ts b/arkoala-arkts/user/app/user/hvigorfile.ts new file mode 100644 index 000000000..421870714 --- /dev/null +++ b/arkoala-arkts/user/app/user/hvigorfile.ts @@ -0,0 +1,6 @@ +import { harTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/arkoala-arkts/user/app/user/obfuscation-rules.txt b/arkoala-arkts/user/app/user/obfuscation-rules.txt new file mode 100644 index 000000000..985b2aeb7 --- /dev/null +++ b/arkoala-arkts/user/app/user/obfuscation-rules.txt @@ -0,0 +1,18 @@ +# Define project specific obfuscation rules here. +# You can include the obfuscation configuration files in the current module's build-profile.json5. +# +# For more details, see +# https://gitee.com/openharmony/arkcompiler_ets_frontend/blob/master/arkguard/README.md + +# Obfuscation options: +# -disable-obfuscation: disable all obfuscations +# -enable-property-obfuscation: obfuscate the property names +# -enable-toplevel-obfuscation: obfuscate the names in the global scope +# -compact: remove unnecessary blank spaces and all line feeds +# -remove-log: remove all console.* statements +# -print-namecache: print the name cache that contains the mapping from the old names to new names +# -apply-namecache: reuse the given cache file + +# Keep options: +# -keep-property-name: specifies property names that you want to keep +# -keep-global-name: specifies names that you want to keep in the global scope \ No newline at end of file diff --git a/arkoala-arkts/user/app/user/oh-package.json5 b/arkoala-arkts/user/app/user/oh-package.json5 new file mode 100644 index 000000000..d2aec4670 --- /dev/null +++ b/arkoala-arkts/user/app/user/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "name": "@koalaui/user", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "types": "", + "author": "", + "license": "Apache-2.0", + "dependencies": {} +} diff --git a/arkoala-arkts/user/app/user/src/main/module.json5 b/arkoala-arkts/user/app/user/src/main/module.json5 new file mode 100644 index 000000000..6b0ad6685 --- /dev/null +++ b/arkoala-arkts/user/app/user/src/main/module.json5 @@ -0,0 +1,11 @@ +{ + "module": { + "name": "user", + "type": "har", + "deviceTypes": [ + "default", + "tablet", + "2in1" + ] + } +} diff --git a/arkoala-arkts/user/package.json b/arkoala-arkts/user/package.json index c6f0cb55a..5431c500e 100644 --- a/arkoala-arkts/user/package.json +++ b/arkoala-arkts/user/package.json @@ -3,7 +3,7 @@ "version": "1.4.1", "description": "", "scripts": { - "clean": "rimraf build generated unmemoized js_output abc lib", + "clean": "rimraf build generated unmemoized js_output abc lib ", "compile:plugin": "cd ../../arkoala/ets-plugin && npm run compile", "compile:ets": "npm run compile:plugin && cd src/ets && ets-tsc -p ./etsconfig.json", "unmemoize": "npm run compile:ets && memo-tsc -b tsconfig-unmemoize.json", @@ -11,6 +11,18 @@ "compile:arkts:unmemoized": "npm run unmemoize && npm run unmemoize --prefix ../arkui && npm run compile:unmemoize --prefix ../../incremental/runtime && bash -x ../../incremental/tools/panda/arkts/arktsc --arktsconfig ./arktsconfig-run-unmemoized.json --ets-module", "compile:ts": "memo-tsc -b ./tsconfig.json", "compile:user": "npm run compile:arkts:unmemoized", - "link:user": "npm run compile:user && bash ../../incremental/tools/panda/arkts/arklink --output build/user.abc -- $(find build/abc -name '*.abc' ! -name 'index.abc')" + "link:user": "npm run compile:user && bash ../../incremental/tools/panda/arkts/arklink --output build/user.abc -- $(find build/abc -name '*.abc' ! -name 'index.abc')", + + "bundle": "node scripts/build-user-har.mjs --arch arm", + "build": "npm run cli-tools:check && 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=user@default assembleHar", + "user:har": "npm run link:user && npm run --prefix ../../arkoala/ohos-sdk download && npm run bundle && npm run build", + "user:har-arm32": "npm run user:har", + + "cli-tools:chmod:bz": "node ../../arkoala/ohos-sdk/scripts/openlab-cli.mjs chmod -p ./command-line-tools/ohpm/bin -b 755 && node ../../arkoala/ohos-sdk/scripts/openlab-cli.mjs chmod -p ./command-line-tools/hvigor/bin -b 755", + "cli-tools:chmod:yz": "node ../../../sdk/scripts/gitlab/gitlab-cli.mjs chmod -p ./command-line-tools/ohpm/bin -b 755 && node ../../../sdk/scripts/gitlab/gitlab-cli.mjs chmod -p ./command-line-tools/hvigor/bin -b 755", + "cli-tools:download:bz": "node ../../arkoala/ohos-sdk/scripts/openlab-cli.mjs download -p command-line-tools -v 5.0.3502 -f command-line-tools.5.0.3502.zip -d command-line-tools && npm run cli-tools:chmod:bz", + "cli-tools:download:yz": "node ../../../sdk/scripts/gitlab/gitlab-cli.mjs download -p deveco-tools -v 5.0.1300 -f deveco-tools.5.0.1300.zip -d command-line-tools && npm run cli-tools:chmod:yz", + "cli-tools:download": "test \"$KOALA_BZ\" = \"0\" && npm run cli-tools:download:yz || npm run cli-tools:download:bz", + "cli-tools:check": "test -d ./command-line-tools || npm run cli-tools:download" } } diff --git a/arkoala-arkts/user/scripts/build-user-har.mjs b/arkoala-arkts/user/scripts/build-user-har.mjs new file mode 100644 index 000000000..54d293afb --- /dev/null +++ b/arkoala-arkts/user/scripts/build-user-har.mjs @@ -0,0 +1,46 @@ +import { execSync } from "child_process" +import { dirname } from "path" +import { fileURLToPath } from "url" + +import fs from "fs" +import path from "path" +import process from "process" +import minimist from "minimist" + +var args = minimist(process.argv.slice(2)) + +const _dirname = dirname(fileURLToPath(import.meta.url)) + +const CWD = process.cwd() +// const BUNDLE_PATH = path.join(CWD, "arkoala-har-bundle") +const HAR_PATH = path.join(CWD, "app/user") + +function rollupLaunch() { + console.log(`> Run rollup`) + execCmdSync("npx rollup -c") +} + +function copyFilesToHar(from, to) { + if (!fs.existsSync(from)) { + throw new Error(`file ${from} does not exist`) + } + + console.log(`> Copy from: ${from} to ${to}`) + fs.cpSync(from, to, { recursive: true, force: true }) +} + + +function main() { + + // process.chdir(BUNDLE_PATH) + + // rollupLaunch() + /* we don't yet know which files should be in har */ + copyFilesToHar(path.join(_dirname, `../build/user.abc`), path.join(HAR_PATH, `libs/armeabi-v7a/user.abc.so`)) +} + +main() + +function execCmdSync(cmd, options) { + return execSync(cmd, options).toString().trim().replace("\n", " ") +} diff --git a/arkoala-arkts/user/src/Page.ts b/arkoala-arkts/user/src/Page.ts index 72f36be04..98426c834 100644 --- a/arkoala-arkts/user/src/Page.ts +++ b/arkoala-arkts/user/src/Page.ts @@ -5,40 +5,36 @@ import { int32 } from "@koalaui/common" import { Hello } from "../generated/hello" -/** @memo */ +// /** @memo */ export function Page(p1: StateContext, p2: int32, root: PeerNode) { - UserView.startNativeLog(1) + // UserView.startNativeLog(1) - const rPeer = root.peer - const rPtr = root.peer.ptr + // const componentRoot = new PeerNode(ArkUINodeType.ComponentRoot, 0, "ComponentRoot") + // const column = ArkColumnPeer.create(ArkUINodeType.Column) - const componentRoot = new PeerNode(ArkUINodeType.ComponentRoot, 0, "ComponentRoot") - const column = ArkColumnPeer.create(ArkUINodeType.Column) + // // column.widthAttribute(300) + // // column.heightAttribute(300) - column.widthAttribute(300) - // column.heightAttribute(300) + // const button = ArkButtonPeer.create(ArkUINodeType.Button) - const button = ArkButtonPeer.create(ArkUINodeType.Button) + // // button.widthAttribute("250px") + // // button.heightAttribute("250px") - button.widthAttribute("250px") - // button.heightAttribute("250px") + // root.peer.insertChildAfter(componentRoot.peer, undefined) + // componentRoot.peer.insertChildAfter(column.peer, undefined) + // column.peer.insertChildAfter(button.peer, undefined) - root.peer.addChild(componentRoot.peer) - componentRoot.peer.addChild(column.peer) - column.peer.addChild(button.peer) + // // root.peer.dumpTree() - root.peer.dumpTree() + // nativeModule()._MeasureLayoutAndDraw(root.peer.ptr) - nativeModule()._MeasureLayoutAndDraw(root.peer.ptr) + // nativeModule()._ApplyModifierFinish(root.peer.ptr) + // nativeModule()._ApplyModifierFinish(componentRoot.peer.ptr) + // nativeModule()._ApplyModifierFinish(column.peer.ptr) + // nativeModule()._ApplyModifierFinish(button.peer.ptr) - //nativeModule()._ApplyModifierFinish(root.peer.prt) - nativeModule()._ApplyModifierFinish(rPtr) - nativeModule()._ApplyModifierFinish(componentRoot.peer.ptr) - nativeModule()._ApplyModifierFinish(column.peer.ptr) - nativeModule()._ApplyModifierFinish(button.peer.ptr) - - UserView.stopNativeLog(1) - console.log(UserView.getNativeLog(1)) + // UserView.stopNativeLog(1) + // console.log(UserView.getNativeLog(1)) } export class App extends UserView { diff --git a/arkoala-arkts/user/src/ets/hello.ets b/arkoala-arkts/user/src/ets/hello.ets index 881ad5e85..63c50159a 100644 --- a/arkoala-arkts/user/src/ets/hello.ets +++ b/arkoala-arkts/user/src/ets/hello.ets @@ -4,7 +4,7 @@ struct Hello { build() { Column() { Button() - .width(50) + //.width(50) console.log("Yay!") } } diff --git a/incremental/tools/panda/package.json b/incremental/tools/panda/package.json index 8994900d2..6790a996a 100644 --- a/incremental/tools/panda/package.json +++ b/incremental/tools/panda/package.json @@ -5,5 +5,8 @@ "panda:sdk:install": "npm install --prefix . --no-save @panda/sdk@${PANDA_SDK_VERSION:-next}", "panda:sdk:clean": "rimraf ./node_modules", "panda:sdk:build": "node ./build_panda_sdk.mjs --panda-sdk-dir=./node_modules/@panda/sdk/ --arkcompiler-build-dir=$HOME/arkcompiler --runtime-git-rev=a6704b6a --frontend-git-rev=c2166bf1 --frontend-git-patches=./fix_es2panda_1.patch:./fix_normalizing_source_paths.patch" + }, + "dependencies": { + "@panda/sdk": "^1.5.0-dev.5226" } } diff --git a/interop/src/cpp/common-interop.cc b/interop/src/cpp/common-interop.cc index 4be9fe5eb..ee23b1f04 100644 --- a/interop/src/cpp/common-interop.cc +++ b/interop/src/cpp/common-interop.cc @@ -224,6 +224,7 @@ KOALA_INTEROP_V2(AppendGroupedLog, KInt, KStringPtr) typedef KInt (*LoadVirtualMachine_t)(KInt vmKind, const char* appClassPath, const char* appLibPath); typedef KNativePointer (*StartApplication_t)(const char* appUrl, const char* appParams); typedef KBoolean (*RunApplication_t)(const KInt arg0, const KInt arg1); +typedef KInt (*GetErrorCode_t)(); void* getImpl(const char* path, const char* name) { static void* lib = nullptr; @@ -262,6 +263,13 @@ KBoolean impl_RunApplication(const KInt arg0, const KInt arg1) { } KOALA_INTEROP_2(RunApplication, KBoolean, KInt, KInt) +KInt impl_GetErrorCode() { + static GetErrorCode_t impl = nullptr; + if (!impl) impl = reinterpret_cast(getImpl(nullptr, "GetErrorCode")); + return impl(); +} +KOALA_INTEROP_0(GetErrorCode, KInt) + static Callback_Caller_t g_callbackCaller = nullptr; void setCallbackCaller(Callback_Caller_t callbackCaller) { g_callbackCaller = callbackCaller; diff --git a/interop/src/cpp/vmloader.cc b/interop/src/cpp/vmloader.cc index 2224b378d..35152efe5 100644 --- a/interop/src/cpp/vmloader.cc +++ b/interop/src/cpp/vmloader.cc @@ -272,7 +272,13 @@ const AppInfo pandaAppInfo = { }; #endif +static int error = 0; +extern "C" DLL_EXPORT KInt GetErrorCode() { + return error; +} + extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const char* appParams) { + error = 0; const AppInfo* appInfo = #ifdef KOALA_JNI (g_vmEntry.vmKind == JAVA_VM_KIND) ? &javaAppInfo : @@ -333,6 +339,7 @@ extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } + error = 3; return nullptr; } auto app = etsEnv->NewGlobalRef(etsEnv->CallStaticObjectMethod(appClass, create, etsEnv->NewStringUTF(appUrl), etsEnv->NewStringUTF(appParams))); @@ -342,6 +349,7 @@ extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } + error = 4; return nullptr; } g_vmEntry.app = (void*)app; @@ -353,6 +361,7 @@ extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } + error = 5; return nullptr; } // TODO: pass app entry point! -- Gitee From 120c9bad3a9e6c2788ba7c2973666a6920d4f513 Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Tue, 26 Nov 2024 12:15:02 +0300 Subject: [PATCH 02/16] Some logging fixes Signed-off-by: Kirill Kirichenko --- arkoala-arkts/arkui/src/Application.ts | 12 +++------ .../arkui/src/generated/arkts/NativeModule.ts | 1 - .../har/arkoala-har-bundle/loader.js | 5 ++-- arkoala/framework/native/meson.build | 5 ++++ .../native/src/generated/bridge_custom.cc | 8 +++--- interop/src/cpp/common-interop.cc | 8 ------ interop/src/cpp/interop-logging.h | 4 ++- interop/src/cpp/vmloader.cc | 27 +++++++------------ 8 files changed, 26 insertions(+), 44 deletions(-) diff --git a/arkoala-arkts/arkui/src/Application.ts b/arkoala-arkts/arkui/src/Application.ts index 3bb6fd7c7..1496d5875 100644 --- a/arkoala-arkts/arkui/src/Application.ts +++ b/arkoala-arkts/arkui/src/Application.ts @@ -81,9 +81,6 @@ function createMemoRoot(manager: StateManager, const peer = new PeerNode(ArkUINodeType.Root, 0, "Root") rootPointer = peer.peer.ptr - const log = "#### create Root node: " + rootPointer - NativeModule._NativeLog(log) - const node = manager.updatableNode(peer, (context: StateContext) => { const frozen = manager.frozen manager.frozen = true @@ -172,9 +169,6 @@ export class Application { } start(): pointer { - const msg = "##### Application.start" - NativeModule._NativeLog(msg) - try { this.manager = GlobalStateManager.instance this.timer = createAnimationTimer(this.manager!) @@ -186,12 +180,12 @@ export class Application { if (e instanceof Error) { const stack = e.stack if (stack) { - const msg1 = "#### Stack trace: " + stack - NativeModule._NativeLog(msg1); - return nullptr; + NativeModule._NativeLog("ArkTS Application.start stack trace: " + stack) + return nullptr } } } + NativeModule._NativeLog("ArkTS Application.start rootPointer = " + rootPointer) return rootPointer! } diff --git a/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts b/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts index 6bf88f6b7..8a52d12e0 100644 --- a/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts +++ b/arkoala-arkts/arkui/src/generated/arkts/NativeModule.ts @@ -1231,7 +1231,6 @@ export class NativeModule { native static _LoadVirtualMachine(arg0: KInt, arg1: KStringPtr, arg2: KStringPtr): KInt native static _RunApplication(arg0: KInt, arg1: KInt): boolean native static _StartApplication(appUrl: KStringPtr, appParams: KStringPtr): KPointer - native static _GetErrorCode(): KInt // node native static _CreateNode(node_t: KInt, arg0: KInt, arg1: KInt): KPointer native static _GetNodeByViewStack(): KPointer diff --git a/arkoala-arkts/har/arkoala-har-bundle/loader.js b/arkoala-arkts/har/arkoala-har-bundle/loader.js index c9f1b0fc1..8dcde54f2 100644 --- a/arkoala-arkts/har/arkoala-har-bundle/loader.js +++ b/arkoala-arkts/har/arkoala-har-bundle/loader.js @@ -117,12 +117,11 @@ export function checkLoader(variant) { } let result = nativeModule()._LoadVirtualMachine(vm, classPath, nativePath); if (result == 0) { - console.log("##### Pre start application error: ", nativeModule()._GetErrorCode()) rootPointer = nativeModule()._StartApplication("LoaderApp", "ArkTSLoaderParam"); - console.log("##### Post start application rootPointer = ", rootPointer, " error: ", nativeModule()._GetErrorCode()) if (rootPointer != 0) { setTimeout(async () => runEventLoop(), 0); - } } + } + } else { throw new Error(`Cannot start VM: ${result}`); } diff --git a/arkoala/framework/native/meson.build b/arkoala/framework/native/meson.build index b1738233d..66e32189e 100644 --- a/arkoala/framework/native/meson.build +++ b/arkoala/framework/native/meson.build @@ -275,6 +275,11 @@ if get_option('vmloader') == true vmloader_cflags = ['-DKOALA_' + os.to_upper(), '-DKOALA_' + os.to_upper() + '_' + arch.to_upper()] vmloader_ldflags = [] +if is_ohos + vmloader_ldflags += [ + '-lhilog_ndk.z' + ] +endif if is_ohos vmloader_ldflags = ['-lhilog_ndk.z'] diff --git a/arkoala/framework/native/src/generated/bridge_custom.cc b/arkoala/framework/native/src/generated/bridge_custom.cc index 68c70cac7..e43928334 100644 --- a/arkoala/framework/native/src/generated/bridge_custom.cc +++ b/arkoala/framework/native/src/generated/bridge_custom.cc @@ -523,7 +523,7 @@ KVMObjectHandle impl_LoadUserView(KVMContext vm, const KStringPtr& viewClass, co std::replace(className.begin(), className.end(), '.', '/'); ets_class viewClassClass = env->FindClass(className.c_str()); if (!viewClassClass) { - fprintf(stderr, "Cannot find user class %s\n", viewClass.c_str()); + LOGI("##### Cannot find user class %" LOG_PUBLIC "s", viewClass.c_str()); if (env->ErrorCheck()) { env->ErrorDescribe(); env->ErrorClear(); @@ -532,7 +532,7 @@ KVMObjectHandle impl_LoadUserView(KVMContext vm, const KStringPtr& viewClass, co } ets_method viewClassCtor = env->Getp_method(viewClassClass, "", "Lstd/core/String;:V"); if (!viewClassCtor) { - fprintf(stderr, "Cannot find user class ctor\n"); + LOG("##### Cannot find user class ctor"); if (env->ErrorCheck()) { env->ErrorDescribe(); env->ErrorClear(); @@ -541,7 +541,7 @@ KVMObjectHandle impl_LoadUserView(KVMContext vm, const KStringPtr& viewClass, co } ets_object result = env->NewObject(viewClassClass, viewClassCtor, env->NewStringUTF(viewParams.c_str())); if (!result) { - fprintf(stderr, "Cannot instantiate user class\n"); + LOG("##### Cannot instantiate user class"); if (env->ErrorCheck()) { env->ErrorDescribe(); env->ErrorClear(); @@ -550,7 +550,7 @@ KVMObjectHandle impl_LoadUserView(KVMContext vm, const KStringPtr& viewClass, co } return (KVMObjectHandle)result; #else - fprintf(stderr, "LoadUserView() is not implemented yet\n"); + LOG("LoadUserView() is not implemented yet"); return nullptr; #endif } diff --git a/interop/src/cpp/common-interop.cc b/interop/src/cpp/common-interop.cc index ee23b1f04..4be9fe5eb 100644 --- a/interop/src/cpp/common-interop.cc +++ b/interop/src/cpp/common-interop.cc @@ -224,7 +224,6 @@ KOALA_INTEROP_V2(AppendGroupedLog, KInt, KStringPtr) typedef KInt (*LoadVirtualMachine_t)(KInt vmKind, const char* appClassPath, const char* appLibPath); typedef KNativePointer (*StartApplication_t)(const char* appUrl, const char* appParams); typedef KBoolean (*RunApplication_t)(const KInt arg0, const KInt arg1); -typedef KInt (*GetErrorCode_t)(); void* getImpl(const char* path, const char* name) { static void* lib = nullptr; @@ -263,13 +262,6 @@ KBoolean impl_RunApplication(const KInt arg0, const KInt arg1) { } KOALA_INTEROP_2(RunApplication, KBoolean, KInt, KInt) -KInt impl_GetErrorCode() { - static GetErrorCode_t impl = nullptr; - if (!impl) impl = reinterpret_cast(getImpl(nullptr, "GetErrorCode")); - return impl(); -} -KOALA_INTEROP_0(GetErrorCode, KInt) - static Callback_Caller_t g_callbackCaller = nullptr; void setCallbackCaller(Callback_Caller_t callbackCaller) { g_callbackCaller = callbackCaller; diff --git a/interop/src/cpp/interop-logging.h b/interop/src/cpp/interop-logging.h index 74e870249..97591b686 100644 --- a/interop/src/cpp/interop-logging.h +++ b/interop/src/cpp/interop-logging.h @@ -18,16 +18,18 @@ #include #include -#if (defined(KOALA_USE_HZ_VM) || defined(KOALA_USE_PANDA_VM)) && defined(KOALA_OHOS) +#if (defined(KOALA_USE_HZ_VM) || defined(KOALA_USE_PANDA_VM)) && defined(KOALA_OHOS) || defined(KOALA_ETS_NAPI) #include "oh_sk_log.h" #define LOG(msg) OH_SK_LOG_INFO(msg); #define LOGI(msg, ...) OH_SK_LOG_INFO_A(msg, ##__VA_ARGS__); #define LOGE(msg, ...) OH_SK_LOG_ERROR_A(msg, ##__VA_ARGS__); +#define LOGE0(msg) OH_SK_LOG_ERROR(msg); #define LOG_PUBLIC "{public}" #else #define LOG(msg) fprintf(stdout, msg "\n"); #define LOGI(msg, ...) fprintf(stdout, msg "\n", ##__VA_ARGS__); #define LOGE(msg, ...) fprintf(stderr, msg "\n", ##__VA_ARGS__); +#define LOGE0(msg) fprintf(stderr, msg "\n"); #define LOG_PUBLIC "" #endif diff --git a/interop/src/cpp/vmloader.cc b/interop/src/cpp/vmloader.cc index 35152efe5..5d407d112 100644 --- a/interop/src/cpp/vmloader.cc +++ b/interop/src/cpp/vmloader.cc @@ -151,11 +151,11 @@ extern "C" DLL_EXPORT KInt LoadVirtualMachine(KInt vmKind, const char* appClassP nullptr; if (!thisVM) { - LOGE("Unknown VM kind: %" LOG_PUBLIC "d\n (possibly %" LOG_PUBLIC "s is compiled without expected flags)\n", vmKind, __FILE__); + LOGE("Unknown VM kind: %" LOG_PUBLIC "d\n (possibly %" LOG_PUBLIC "s is compiled without expected flags)", vmKind, __FILE__); return -1; } - LOGI("Starting VM " LOG_PUBLIC "%d with classpath=%" LOG_PUBLIC "s native=%" LOG_PUBLIC "s\n", vmKind, appClassPath, appLibPath); + LOGI("Starting VM %" LOG_PUBLIC "d with classpath=%" LOG_PUBLIC "s native=%" LOG_PUBLIC "s", vmKind, appClassPath, appLibPath); std::string libPath = #if defined(KOALA_LINUX) || defined(KOALA_MACOS) || defined(KOALA_WINDOWS) @@ -272,13 +272,7 @@ const AppInfo pandaAppInfo = { }; #endif -static int error = 0; -extern "C" DLL_EXPORT KInt GetErrorCode() { - return error; -} - extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const char* appParams) { - error = 0; const AppInfo* appInfo = #ifdef KOALA_JNI (g_vmEntry.vmKind == JAVA_VM_KIND) ? &javaAppInfo : @@ -293,7 +287,7 @@ extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const return nullptr; } - LOGI("Starting app \"%" LOG_PUBLIC "s\" with params \"%" LOG_PUBLIC "s\"\n", appUrl, appParams); + LOGI("#### Starting app %" LOG_PUBLIC "s with params %" LOG_PUBLIC "s", appUrl, appParams); #ifdef KOALA_JNI if (g_vmEntry.vmKind == JAVA_VM_KIND) { @@ -329,39 +323,36 @@ extern "C" DLL_EXPORT KNativePointer StartApplication(const char* appUrl, const EtsEnv* etsEnv = (EtsEnv*)g_vmEntry.env; ets_class appClass = etsEnv->FindClass(appInfo->className); if (!appClass) { - LOGE("Cannot load main class %" LOG_PUBLIC "s\n", appInfo->className); + LOGE("#### Cannot load main class %" LOG_PUBLIC "s\n", appInfo->className); return nullptr; } ets_method create = etsEnv->GetStaticp_method(appClass, appInfo->createMethodName, appInfo->createMethodSig); if (!create) { - LOGE("Cannot find create method %" LOG_PUBLIC "s\n", appInfo->createMethodName); + LOGE("#### Cannot find create method %" LOG_PUBLIC "s\n", appInfo->createMethodName); if (etsEnv->ErrorCheck()) { etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } - error = 3; return nullptr; } auto app = etsEnv->NewGlobalRef(etsEnv->CallStaticObjectMethod(appClass, create, etsEnv->NewStringUTF(appUrl), etsEnv->NewStringUTF(appParams))); if (!app) { - LOGE("createApplication returned null\n"); + LOGE0("#### createApplication returned null"); if (etsEnv->ErrorCheck()) { etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } - error = 4; return nullptr; } g_vmEntry.app = (void*)app; auto start = etsEnv->Getp_method(appClass, appInfo->startMethodName, appInfo->startMethodSig); g_vmEntry.enter = (void*)(etsEnv->Getp_method(appClass, appInfo->enterMethodName, nullptr /*appInfo->enterMethodSig */)); if (!g_vmEntry.enter) { - LOGE("Cannot find enter method %" LOG_PUBLIC "s\n", appInfo->enterMethodName); + LOGE("#### Cannot find enter method %" LOG_PUBLIC "s", appInfo->enterMethodName); if (etsEnv->ErrorCheck()) { etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } - error = 5; return nullptr; } // TODO: pass app entry point! @@ -392,7 +383,7 @@ extern "C" DLL_EXPORT KBoolean RunApplication(const KInt arg0, const KInt arg1) if (g_vmEntry.vmKind == PANDA_VM_KIND) { EtsEnv* etsEnv = (EtsEnv*)(g_vmEntry.env); if (!g_vmEntry.enter) { - LOGE("Cannot find enter method\n"); + LOG("#### Cannot find enter method"); return -1; } auto result = etsEnv->CallBooleanMethod( @@ -404,7 +395,7 @@ extern "C" DLL_EXPORT KBoolean RunApplication(const KInt arg0, const KInt arg1) if (result) { } if (etsEnv->ErrorCheck()) { - LOGE("Calling enter() method gave an error"); + LOG("#### Calling enter() method gave an error"); etsEnv->ErrorDescribe(); etsEnv->ErrorClear(); } -- Gitee From fa0b2a47d8464f6b9abdea123fcbc9687973dfd7 Mon Sep 17 00:00:00 2001 From: Kirill Kirichenko Date: Tue, 26 Nov 2024 16:12:29 +0300 Subject: [PATCH 03/16] Fix PeerNode hierarchy composition Signed-off-by: Kirill Kirichenko --- .../arkui/src/generated/ComponentBase.ts | 3 +- .../arkui/src/generated/NativePeerNode.ts | 2 +- arkoala-arkts/arkui/src/generated/PeerNode.ts | 41 +++++++++- .../src/generated/peers/ArkUINodeType.ts | 77 ++----------------- arkoala-arkts/user/src/Page.ts | 2 +- arkoala-arkts/user/src/ets/hello.ets | 3 +- 6 files changed, 52 insertions(+), 76 deletions(-) diff --git a/arkoala-arkts/arkui/src/generated/ComponentBase.ts b/arkoala-arkts/arkui/src/generated/ComponentBase.ts index 7cc9d9ab7..b4b07382a 100644 --- a/arkoala-arkts/arkui/src/generated/ComponentBase.ts +++ b/arkoala-arkts/arkui/src/generated/ComponentBase.ts @@ -14,6 +14,7 @@ */ import { PeerNode } from './PeerNode' +import { NativeModule } from "#components" export class ComponentBase { protected peer?: PeerNode @@ -28,6 +29,6 @@ export class ComponentBase { return true } public applyAttributesFinish(): void { - // throw new Error("not implemented") + NativeModule._ApplyModifierFinish(this.peer!.peer.ptr) } } diff --git a/arkoala-arkts/arkui/src/generated/NativePeerNode.ts b/arkoala-arkts/arkui/src/generated/NativePeerNode.ts index a7736f90b..d5955e1b6 100644 --- a/arkoala-arkts/arkui/src/generated/NativePeerNode.ts +++ b/arkoala-arkts/arkui/src/generated/NativePeerNode.ts @@ -10,7 +10,7 @@ export class NativePeerNode extends Finalizable { } static create(type: ArkUINodeType, id: int32, flags: int32): NativePeerNode { - const ptr = NativeModule._CreateNode(type as int32, id, flags) + const ptr = NativeModule._CreateNode(type.valueOf(), id, flags) return new NativePeerNode(ptr, NativeModule._GetNodeFinalizer()) } diff --git a/arkoala-arkts/arkui/src/generated/PeerNode.ts b/arkoala-arkts/arkui/src/generated/PeerNode.ts index 960ab9b8c..9266fb1bb 100644 --- a/arkoala-arkts/arkui/src/generated/PeerNode.ts +++ b/arkoala-arkts/arkui/src/generated/PeerNode.ts @@ -3,15 +3,54 @@ import { IncrementalNode } from "@koalaui/runtime" import { ArkUINodeType } from "./peers/ArkUINodeType" import { NativePeerNode } from "./NativePeerNode" +export const PeerNodeType = 11 + export class PeerNode extends IncrementalNode { peer: NativePeerNode private id: int32 = PeerNode.currentId++ + private static peerNodeMap = new Map() + + static findPeerByNativeId(id: number): PeerNode | undefined { + return PeerNode.peerNodeMap.get(id) + } private static currentId: int32 = 1000 constructor(type: ArkUINodeType, flags: int32, name: string) { - super() + super(PeerNodeType) this.peer = NativePeerNode.create(type, this.id, flags) + PeerNode.peerNodeMap.set(this.id, this) + this.onChildInserted = (child: IncrementalNode) => { + // TODO: rework to avoid search + let peer = findPeerNode(child) + if (peer) { + // Find the closest peer node backward. + let sibling: PeerNode | undefined = undefined + for (let node = child.previousSibling; node; node = node!.previousSibling) { + if (node!.isKind(PeerNodeType)) { + sibling = node as PeerNode + break + } + } + this.peer.insertChildAfter(peer.peer, sibling?.peer) + } + } + this.onChildRemoved = (child: IncrementalNode) => { + let peer = findPeerNode(child) + if (peer) { + this.peer.removeChild(peer.peer) + } + } + } applyAttributes(attrs: Object) {} } + +function findPeerNode(node: IncrementalNode): PeerNode | undefined { + if (node.isKind(PeerNodeType)) return node as PeerNode + for (let child = node.firstChild; child; child = child!.nextSibling) { + let peer = findPeerNode(child!) + if (peer) return peer + } + return undefined +} diff --git a/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts b/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts index 88a17006e..9775ab2d5 100644 --- a/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts +++ b/arkoala-arkts/arkui/src/generated/peers/ArkUINodeType.ts @@ -1,119 +1,54 @@ export enum ArkUINodeType { - Root, + Root = 0, ComponentRoot, CustomNode, - AbilityComponent, - AlphabetIndexer, - Animator, - Badge, BaseSpan, - Blank, + Blank = 8, Button, - Calendar, CalendarPicker, Canvas, - Checkbox, - CheckboxGroup, Circle, - Column, - ColumnSplit, + Column = 16, Common, CommonMethod, CommonShapeMethod, - Component3D, - ContainerSpan, Counter, - DataPanel, - DatePicker, Divider, - EffectComponent, Ellipse, EmbeddedComponent, Flex, - FlowItem, - FolderStack, FormComponent, - FormLink, - Gauge, Grid, - GridCol, GridContainer, GridItem, - GridRow, - Hyperlink, Image, - ImageAnimator, - ImageSpan, - Line, - LinearIndicator, + IndicatorComponent, List, ListItem, - ListItemGroup, - LoadingProgress, - LocationButton, - Marquee, - MediaCachedImage, - Menu, - MenuItem, - MenuItemGroup, NavDestination, - NavRouter, Navigation, Navigator, - NodeContainer, - Panel, - PasteButton, Path, - PatternLock, - PluginComponent, - Polygon, - Polyline, - Progress, - QRCode, - Radio, - Rating, Rect, - Refresh, - RelativeContainer, - RemoteWindow, RichEditor, - RichText, - RootScene, Row, - RowSplit, - SaveButton, - Screen, Scroll, - ScrollBar, ScrollableCommonMethod, Search, - SecurityComponentMethod, Select, Shape, SideBarContainer, - Slider, Span, Stack, - Stepper, - StepperItem, Swiper, SymbolGlyph, - SymbolSpan, TabContent, Tabs, + Test, Text, - TextArea, - TextClock, TextInput, TextPicker, - TextTimer, - TimePicker, Toggle, - UIExtensionComponent, - Video, - WaterFlow, + Vector, Web, - WindowScene, - XComponent, - Vector } \ No newline at end of file diff --git a/arkoala-arkts/user/src/Page.ts b/arkoala-arkts/user/src/Page.ts index 98426c834..94af68b92 100644 --- a/arkoala-arkts/user/src/Page.ts +++ b/arkoala-arkts/user/src/Page.ts @@ -6,7 +6,7 @@ import { Hello } from "../generated/hello" // /** @memo */ -export function Page(p1: StateContext, p2: int32, root: PeerNode) { +export function Page(root: PeerNode) { // UserView.startNativeLog(1) // const componentRoot = new PeerNode(ArkUINodeType.ComponentRoot, 0, "ComponentRoot") diff --git a/arkoala-arkts/user/src/ets/hello.ets b/arkoala-arkts/user/src/ets/hello.ets index 63c50159a..df90c0818 100644 --- a/arkoala-arkts/user/src/ets/hello.ets +++ b/arkoala-arkts/user/src/ets/hello.ets @@ -4,7 +4,8 @@ struct Hello { build() { Column() { Button() - //.width(50) + .width(200) + .height(100) console.log("Yay!") } } -- Gitee From 9994511460f4efb59afd9e2c96c031c74f6d5da6 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 11:01:28 +0300 Subject: [PATCH 04/16] har --- arkoala-arkts/.gitlab-ci.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index e06ba926c..202404bcf 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -184,6 +184,29 @@ install node modules (arkoala-arkts): - npm run build:loader:node --prefix arkoala-arkts - npm run run:node:ci --prefix arkoala-arkts + arkoala-arkts.har: + stage: build + interruptible: true + extends: + - .linux-vm-shell-task + needs: + - install node modules (arkoala) + - install node modules (arkoala-arkts) + - install node modules (incremental) + - install node modules (interop) + - link arkoala.abc + - build ArkoalaNative (linux, ohos-arm32, hzvm+panda) + before_script: + - !reference [.setup, script] + script: + - # npm run build:loader:hzvm-ohos-arm32 --prefix arkoala-arkts + - npm run arkoala:har-arm32 --prefix arkoala-arkts/har + - mv arkoala-arkts/har/app/arkoala/build/default/outputs/default/arkoala.har arkoala-arkts.har + artifacts: + paths: + - arkoala-arkts.har + expire_in: 1 day + unmemoize arkoala-arkts/arkui: allow_failure: true extends: -- Gitee From 9bb66062a3ba49f77ea339ba37d58a430c102600 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 11:05:00 +0300 Subject: [PATCH 05/16] fix --- arkoala-arkts/.gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 202404bcf..e3b6a2a5e 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -199,7 +199,6 @@ install node modules (arkoala-arkts): before_script: - !reference [.setup, script] script: - - # npm run build:loader:hzvm-ohos-arm32 --prefix arkoala-arkts - npm run arkoala:har-arm32 --prefix arkoala-arkts/har - mv arkoala-arkts/har/app/arkoala/build/default/outputs/default/arkoala.har arkoala-arkts.har artifacts: -- Gitee From 5da4ad9249f446a4e243ccfa991e4603bb50f3f6 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 12:46:25 +0300 Subject: [PATCH 06/16] fix --- arkoala-arkts/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index e3b6a2a5e..7babd75b8 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -48,7 +48,7 @@ install node modules (arkoala-arkts): before_script: - !reference [.setup, script] script: - - npm run compile:native-hzvm-ohos-arm32 --prefix arkoala/framework + - npm run compile:native-panda-with-hzvm-ohos-arm32 --prefix arkoala/framework artifacts: paths: - arkoala/framework/native/build-hzvm-ohos-arm32-vmloader/libArkoalaLoader.so -- Gitee From 83473b97ddcd72cec38be4871d348f957219eb32 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 17:13:00 +0300 Subject: [PATCH 07/16] user --- arkoala-arkts/.gitlab-ci.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 7babd75b8..765e00cd4 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -206,6 +206,27 @@ install node modules (arkoala-arkts): - arkoala-arkts.har expire_in: 1 day + user.har: + stage: build + interruptible: true + extends: + - .linux-vm-shell-task + needs: + - install node modules (arkoala) + - install node modules (arkoala-arkts) + - install node modules (incremental) + - install node modules (interop) + - build ArkoalaNative (linux, ohos-arm32, hzvm+panda) + before_script: + - !reference [.setup, script] + script: + - npm run user:har-arm32 --prefix arkoala-arkts/user + - mv arkoala-arkts/user/app/user/build/default/outputs/default/user.har user.har + artifacts: + paths: + - user.har + expire_in: 1 day + unmemoize arkoala-arkts/arkui: allow_failure: true extends: -- Gitee From 0e9fefe71d95d8db07e485c7025c907e45d233d9 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 17:14:17 +0300 Subject: [PATCH 08/16] fix --- arkoala-arkts/.gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 765e00cd4..ed1090afb 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -216,7 +216,6 @@ install node modules (arkoala-arkts): - install node modules (arkoala-arkts) - install node modules (incremental) - install node modules (interop) - - build ArkoalaNative (linux, ohos-arm32, hzvm+panda) before_script: - !reference [.setup, script] script: -- Gitee From 3543979bfdc52408dedc98cec4f7a64e4c8a3640 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 17:31:51 +0300 Subject: [PATCH 09/16] fix --- arkoala-arkts/.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index ed1090afb..134144a89 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -26,7 +26,7 @@ install node modules (arkoala-arkts): before_script: - !reference [.setup, script] script: - - npm run compile:native-panda-with-node-host --prefix arkoala/framework + - npm run compile:native:node-host --prefix arkoala-arkts artifacts: paths: - arkoala/framework/native/build-node-host-vmloader/ArkoalaLoader.node @@ -48,7 +48,7 @@ install node modules (arkoala-arkts): before_script: - !reference [.setup, script] script: - - npm run compile:native-panda-with-hzvm-ohos-arm32 --prefix arkoala/framework + - npm run compile:native:hzvm-ohos-arm32 --prefix arkoala-arkts artifacts: paths: - arkoala/framework/native/build-hzvm-ohos-arm32-vmloader/libArkoalaLoader.so -- Gitee From 29a41d65a3fe9453f8a6d6d8d4bf8ceeb8e22274 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 17:32:00 +0300 Subject: [PATCH 10/16] fix --- arkoala-arkts/.gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 134144a89..a57871dfe 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -198,6 +198,7 @@ install node modules (arkoala-arkts): - build ArkoalaNative (linux, ohos-arm32, hzvm+panda) before_script: - !reference [.setup, script] + - npm run panda:sdk:install --prefix arkoala-arkts script: - npm run arkoala:har-arm32 --prefix arkoala-arkts/har - mv arkoala-arkts/har/app/arkoala/build/default/outputs/default/arkoala.har arkoala-arkts.har -- Gitee From 474b0377aaf193c7d7c54f35305ee48cb0b96dd7 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 17:34:06 +0300 Subject: [PATCH 11/16] fix --- arkoala-arkts/.gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index a57871dfe..88242c260 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -198,7 +198,6 @@ install node modules (arkoala-arkts): - build ArkoalaNative (linux, ohos-arm32, hzvm+panda) before_script: - !reference [.setup, script] - - npm run panda:sdk:install --prefix arkoala-arkts script: - npm run arkoala:har-arm32 --prefix arkoala-arkts/har - mv arkoala-arkts/har/app/arkoala/build/default/outputs/default/arkoala.har arkoala-arkts.har @@ -219,6 +218,7 @@ install node modules (arkoala-arkts): - install node modules (interop) before_script: - !reference [.setup, script] + - npm run panda:sdk:install --prefix arkoala-arkts script: - npm run user:har-arm32 --prefix arkoala-arkts/user - mv arkoala-arkts/user/app/user/build/default/outputs/default/user.har user.har -- Gitee From 4b135072bbe3b898f99a48be3c89a556130f7556 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 18:04:24 +0300 Subject: [PATCH 12/16] fix --- arkoala-arkts/.gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 88242c260..b4f5e838c 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -220,7 +220,9 @@ install node modules (arkoala-arkts): - !reference [.setup, script] - npm run panda:sdk:install --prefix arkoala-arkts script: - - npm run user:har-arm32 --prefix arkoala-arkts/user + - npm run --prefix arkoala/ohos-sdk download + - npm run bundle --prefix arkoala-arkts/user + - npm run build --prefix arkoala-arkts/user - mv arkoala-arkts/user/app/user/build/default/outputs/default/user.har user.har artifacts: paths: -- Gitee From 0e47af8643feee02f37932c1a8cdd59fd3b669c9 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 18:04:43 +0300 Subject: [PATCH 13/16] fix --- arkoala-arkts/.gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index b4f5e838c..6faeee90c 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -216,6 +216,7 @@ install node modules (arkoala-arkts): - install node modules (arkoala-arkts) - install node modules (incremental) - install node modules (interop) + - link user.abc before_script: - !reference [.setup, script] - npm run panda:sdk:install --prefix arkoala-arkts -- Gitee From ded6a01575596d7966fb205896be1c916984cb25 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 18:20:33 +0300 Subject: [PATCH 14/16] fix CI --- interop/src/cpp/interop-logging.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interop/src/cpp/interop-logging.h b/interop/src/cpp/interop-logging.h index 97591b686..304cbcbf3 100644 --- a/interop/src/cpp/interop-logging.h +++ b/interop/src/cpp/interop-logging.h @@ -18,7 +18,7 @@ #include #include -#if (defined(KOALA_USE_HZ_VM) || defined(KOALA_USE_PANDA_VM)) && defined(KOALA_OHOS) || defined(KOALA_ETS_NAPI) +#if defined(KOALA_ETS_NAPI) && defined(KOALA_OHOS) #include "oh_sk_log.h" #define LOG(msg) OH_SK_LOG_INFO(msg); #define LOGI(msg, ...) OH_SK_LOG_INFO_A(msg, ##__VA_ARGS__); -- Gitee From 694a4f0fc829e92ccabfb4d4ca0d332497a82165 Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 18:26:40 +0300 Subject: [PATCH 15/16] fix --- arkoala-arkts/.gitlab-ci.yml | 2 +- arkoala/tools/peer-generator/.gitlab-ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 6faeee90c..1b61c4ded 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -161,7 +161,7 @@ install node modules (arkoala-arkts): - npm run link:user --prefix arkoala-arkts artifacts: paths: - - arkoala-arkts/build/user.abc + - arkoala-arkts/user/build/user.abc expire_in: 1 day run:node:ci (linux, linux, node+panda): diff --git a/arkoala/tools/peer-generator/.gitlab-ci.yml b/arkoala/tools/peer-generator/.gitlab-ci.yml index 59e3fc6f1..aee1535fb 100644 --- a/arkoala/tools/peer-generator/.gitlab-ci.yml +++ b/arkoala/tools/peer-generator/.gitlab-ci.yml @@ -188,7 +188,7 @@ before_script: - !reference [.setup, script] script: - - npm run compile:native-hzvm-ohos-arm32 --prefix arkoala/framework + - npm run compile:native-panda-with-hzvm-ohos-arm32 --prefix arkoala/framework artifacts: paths: - arkoala/framework/native/build-hzvm-ohos-arm32-vmloader/libArkoalaLoader.so -- Gitee From fe19c22d0366f8cae31ac6f3dda6e143265f75dc Mon Sep 17 00:00:00 2001 From: Igor Loginov Date: Tue, 26 Nov 2024 18:52:37 +0300 Subject: [PATCH 16/16] fix --- arkoala-arkts/.gitlab-ci.yml | 1 + incremental/compat/arktsconfig.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arkoala-arkts/.gitlab-ci.yml b/arkoala-arkts/.gitlab-ci.yml index 1b61c4ded..c3c83a6e5 100644 --- a/arkoala-arkts/.gitlab-ci.yml +++ b/arkoala-arkts/.gitlab-ci.yml @@ -181,6 +181,7 @@ install node modules (arkoala-arkts): - !reference [.setup, script] - npm run panda:sdk:install --prefix arkoala-arkts script: + - mkdir -p arkoala-arkts/build && cp arkoala-arkts/user/build/user.abc arkoala-arkts/build - npm run build:loader:node --prefix arkoala-arkts - npm run run:node:ci --prefix arkoala-arkts diff --git a/incremental/compat/arktsconfig.json b/incremental/compat/arktsconfig.json index d945e6dd2..d4cee4cd3 100644 --- a/incremental/compat/arktsconfig.json +++ b/incremental/compat/arktsconfig.json @@ -6,6 +6,6 @@ "#platform": ["./src/arkts"] } }, - "include": ["src/index.ts", "src/arkts/**/*"], - "exclude": ["src/arkts/index.ts"] + "include": ["src/arkts/**/*"], + "exclude": ["src/index.ts", "src/arkts/index.ts"] } -- Gitee