diff --git a/CompilingAndBuilding/AppScope/app.json5 b/CompilingAndBuilding/AppScope/app.json5 new file mode 100644 index 0000000000000000000000000000000000000000..43c3768f298019e9432b325e024b0710839963e5 --- /dev/null +++ b/CompilingAndBuilding/AppScope/app.json5 @@ -0,0 +1,10 @@ +{ + "app": { + "bundleName": "com.example.compilingandbuilding", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:layered_image", + "label": "$string:app_name" + } +} diff --git a/CompilingAndBuilding/AppScope/resources/base/element/string.json b/CompilingAndBuilding/AppScope/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..6f823777756b3194c1d0e95d5ecc7be5dff5a3e9 --- /dev/null +++ b/CompilingAndBuilding/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "CompilingAndBuilding" + } + ] +} diff --git a/CompilingAndBuilding/AppScope/resources/base/media/background.png b/CompilingAndBuilding/AppScope/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f Binary files /dev/null and b/CompilingAndBuilding/AppScope/resources/base/media/background.png differ diff --git a/CompilingAndBuilding/AppScope/resources/base/media/foreground.png b/CompilingAndBuilding/AppScope/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..97014d3e10e5ff511409c378cd4255713aecd85f Binary files /dev/null and b/CompilingAndBuilding/AppScope/resources/base/media/foreground.png differ diff --git a/CompilingAndBuilding/AppScope/resources/base/media/layered_image.json b/CompilingAndBuilding/AppScope/resources/base/media/layered_image.json new file mode 100644 index 0000000000000000000000000000000000000000..fb49920440fb4d246c82f9ada275e26123a2136a --- /dev/null +++ b/CompilingAndBuilding/AppScope/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/build-profile.json5 b/CompilingAndBuilding/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..03ac3a3ae9dd397844173066e5d5ee21b49455a1 --- /dev/null +++ b/CompilingAndBuilding/build-profile.json5 @@ -0,0 +1,41 @@ +{ + "app": { + "signingConfigs": [], + "products": [ + { + "name": "default", + "signingConfig": "default", + "compatibleSdkVersion": "5.0.4(16)", + "runtimeOS": "HarmonyOS", + "buildOption": { + "strictMode": { + "caseSensitiveCheck": true, + "useNormalizedOHMUrl": true + } + } + } + ], + "buildModeSet": [ + { + "name": "debug", + }, + { + "name": "release" + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/code-linter.json5 b/CompilingAndBuilding/code-linter.json5 new file mode 100644 index 0000000000000000000000000000000000000000..073990fa45394e1f8e85d85418ee60a8953f9b99 --- /dev/null +++ b/CompilingAndBuilding/code-linter.json5 @@ -0,0 +1,32 @@ +{ + "files": [ + "**/*.ets" + ], + "ignore": [ + "**/src/ohosTest/**/*", + "**/src/test/**/*", + "**/src/mock/**/*", + "**/node_modules/**/*", + "**/oh_modules/**/*", + "**/build/**/*", + "**/.preview/**/*" + ], + "ruleSet": [ + "plugin:@performance/recommended", + "plugin:@typescript-eslint/recommended" + ], + "rules": { + "@security/no-unsafe-aes": "error", + "@security/no-unsafe-hash": "error", + "@security/no-unsafe-mac": "warn", + "@security/no-unsafe-dh": "error", + "@security/no-unsafe-dsa": "error", + "@security/no-unsafe-ecdsa": "error", + "@security/no-unsafe-rsa-encrypt": "error", + "@security/no-unsafe-rsa-sign": "error", + "@security/no-unsafe-rsa-key": "error", + "@security/no-unsafe-dsa-key": "error", + "@security/no-unsafe-dh-key": "error", + "@security/no-unsafe-3des": "error" + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/build-profile.json5 b/CompilingAndBuilding/entry/build-profile.json5 new file mode 100644 index 0000000000000000000000000000000000000000..4d611879c7913fb0610c686e2399258ab3a6dad1 --- /dev/null +++ b/CompilingAndBuilding/entry/build-profile.json5 @@ -0,0 +1,28 @@ +{ + "apiType": "stageMode", + "buildOption": { + }, + "buildOptionSet": [ + { + "name": "release", + "arkOptions": { + "obfuscation": { + "ruleOptions": { + "enable": false, + "files": [ + "./obfuscation-rules.txt" + ] + } + } + } + }, + ], + "targets": [ + { + "name": "default" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/hvigorfile.ts b/CompilingAndBuilding/entry/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..c6edcd90486dd5a853cf7d34c8647f08414ca7a3 --- /dev/null +++ b/CompilingAndBuilding/entry/hvigorfile.ts @@ -0,0 +1,6 @@ +import { hapTasks } from '@ohos/hvigor-ohos-plugin'; + +export default { + system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ +} diff --git a/CompilingAndBuilding/entry/obfuscation-rules.txt b/CompilingAndBuilding/entry/obfuscation-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..272efb6ca3f240859091bbbfc7c5802d52793b0b --- /dev/null +++ b/CompilingAndBuilding/entry/obfuscation-rules.txt @@ -0,0 +1,23 @@ +# 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://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 + +# 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 + +-enable-property-obfuscation +-enable-toplevel-obfuscation +-enable-filename-obfuscation +-enable-export-obfuscation \ No newline at end of file diff --git a/CompilingAndBuilding/entry/oh-package.json5 b/CompilingAndBuilding/entry/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..248c3b7541a589682a250f86a6d3ecf7414d2d6a --- /dev/null +++ b/CompilingAndBuilding/entry/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "name": "entry", + "version": "1.0.0", + "description": "Please describe the basic information.", + "main": "", + "author": "", + "license": "", + "dependencies": {} +} + diff --git a/CompilingAndBuilding/entry/src/main/ets/entryability/EntryAbility.ets b/CompilingAndBuilding/entry/src/main/ets/entryability/EntryAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..508880af8c33aa838016d1cd4b2c68be2f447540 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/ets/entryability/EntryAbility.ets @@ -0,0 +1,44 @@ +import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; + +const DOMAIN = 0x0000; + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate'); + } + + onDestroy(): void { + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); + return; + } + hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.'); + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground'); + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets b/CompilingAndBuilding/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets new file mode 100644 index 0000000000000000000000000000000000000000..8e4de99282050bad799ac892eb85ac5449364a51 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets @@ -0,0 +1,16 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit'; + +const DOMAIN = 0x0000; + +export default class EntryBackupAbility extends BackupExtensionAbility { + async onBackup() { + hilog.info(DOMAIN, 'testTag', 'onBackup ok'); + await Promise.resolve(); + } + + async onRestore(bundleVersion: BundleVersion) { + hilog.info(DOMAIN, 'testTag', 'onRestore ok %{public}s', JSON.stringify(bundleVersion)); + await Promise.resolve(); + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/ets/pages/ErrorOccurredWhileBuildingHSPModule.ets b/CompilingAndBuilding/entry/src/main/ets/pages/ErrorOccurredWhileBuildingHSPModule.ets new file mode 100644 index 0000000000000000000000000000000000000000..d044ff7124031ac8294fb94ed415e62ad448235e --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/ets/pages/ErrorOccurredWhileBuildingHSPModule.ets @@ -0,0 +1,71 @@ +/* +* Copyright (c) 2024 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* +* FAQ:构建HSP模块时报错“Ohos BundleTool [Error]: hsp has home ability;Ohos BundleTool [Error]: CompressEntrance::main exit, verify failed.” + */ + +// DocsCode 1 +// HSP模块hvigorfile.ts +import { hspTasks,OhosPluginId, Target } from '@ohos/hvigor-ohos-plugin'; +import { hvigor, HvigorNode, HvigorPlugin,FileUtil } from '@ohos/hvigor'; +export function customPlugin():HvigorPlugin { + return { + pluginId: 'customPlugin', + context() { + return { + data: 'customPlugin xxx' + }; + }, + apply(currentNode:HvigorNode): Promise { + hvigor.nodesEvaluated(async () => { + hspTask(currentNode); + }); + } + } +} +function hspTask(currentNode: HvigorNode) { + // 获取hsp模块上下文信息 + const hspContext = currentNode.getContext(OhosPluginId.OHOS_HSP_PLUGIN) as OhosHspContext; + hspContext?.targets((target: Target) => { + const targetName = target.getTargetName(); + const outputPath = target.getBuildTargetOutputPath(); + const task = currentNode.getTaskByName(`${targetName}@GeneratePkgModuleJson`); + currentNode.registerTask({ + // 任务名称 + name: `${targetName}@changeModuleJson`, + // 任务执行逻辑主体函数 + run() { + const moduleJson = FileUtil.readJson5(outputPath+"/../../intermediates/package/"+targetName+"/module.json"); + const abilities = moduleJson['module']['abilities']; + abilities.forEach((ability)=>{ + delete ability['skills']; + }) + console.log('begin to rewrite module.json file.'); + moduleJson['module']['abilities'] = abilities + FileUtil.writeFileSync(outputPath+"/../../intermediates/package/"+targetName+"/module.json",JSON.stringify(moduleJson)); + }, + // 配置前置任务依赖 + dependencies: [`${targetName}@GeneratePkgModuleJson`], + // 配置任务的后置任务依赖 + postDependencies: [`${targetName}@PackageSharedHar`] + }); + }); +} +export default { + system: hspTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[customPlugin()] /* Custom plugin to extend the functionality of Hvigor. */ +} +// DocsCode 1 \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/ets/pages/Index.ets b/CompilingAndBuilding/entry/src/main/ets/pages/Index.ets new file mode 100644 index 0000000000000000000000000000000000000000..8e2d24ad42693fc877d51bb7820f0a9da68fa135 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/ets/pages/Index.ets @@ -0,0 +1,23 @@ +@Entry +@Component +struct Index { + @State message: string = 'Hello World'; + + build() { + RelativeContainer() { + Text(this.message) + .id('HelloWorld') + .fontSize($r('app.float.page_text_font_size')) + .fontWeight(FontWeight.Bold) + .alignRules({ + center: { anchor: '__container__', align: VerticalAlign.Center }, + middle: { anchor: '__container__', align: HorizontalAlign.Center } + }) + .onClick(() => { + this.message = 'Welcome'; + }) + } + .height('100%') + .width('100%') + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/ets/pages/PushPackageDebuggingError.ets b/CompilingAndBuilding/entry/src/main/ets/pages/PushPackageDebuggingError.ets new file mode 100644 index 0000000000000000000000000000000000000000..377fff638e668c6ea11151a485d0411bebc16d23 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/ets/pages/PushPackageDebuggingError.ets @@ -0,0 +1,160 @@ +/* +* Copyright (c) 2024 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* +* FAQ:推包调试报错“Error message:cannot find record '&XXX/src/main/ets/YYY&x.y.z', please check the request path.'ZZZ.abc'.” + */ + +// DocsCode 1 +import {OhosPluginId, Target} from '@ohos/hvigor-ohos-plugin'; +import {hvigor, HvigorNode, HvigorPlugin} from '@ohos/hvigor'; +import path from "path"; +import fs from "fs"; + +function getLoaderJsonPath(target: Target) { + return path.resolve(target.getBuildTargetOutputPath(), `../../intermediates/loader/${target.getTargetName()}/loader.json`); +} + +function getPkgContextInfoPath(target: Target) { + return path.resolve(target.getBuildTargetOutputPath(), `../../intermediates/loader/${target.getTargetName()}/pkgContextInfo.json`); +} + +function deleteLoaderJson(target: Target) { + const loaderJsonPath = getLoaderJsonPath(target); + if (fs.existsSync(loaderJsonPath)) { + fs.rmSync(loaderJsonPath); + } +} + +function deletePkgContextInfo(target: Target) { + const pkgContextInfoPath = getPkgContextInfoPath(target); + if (fs.existsSync(pkgContextInfoPath)) { + fs.rmSync(pkgContextInfoPath); + } +} + +function deleteRollupCache(target: Target, buildMode: string) { + const arkTSCompileCachePath = path.resolve(target.getBuildTargetOutputPath(), + `../../cache/${target.getTargetName()}/${target.getTargetName()}@HarCompileArkTS/esmodule/${buildMode}/compiler.cache`); + if (fs.existsSync(arkTSCompileCachePath)) { + fs.rmSync(arkTSCompileCachePath, { recursive: true }); + } +} + +function updateHapHspAbcVersion(subNode: HvigorNode, target: Target) { + const task = subNode.getTaskByName(`${target.getTargetName()}@GenerateLoaderJson`); + if (!task) { + console.log('GenerateLoaderJson not found.'); + return; + } + deleteLoaderJson(target); + deletePkgContextInfo(target); + task.afterRun(() => { + const pkgContextInfoPath = getPkgContextInfoPath(target); + if (!fs.existsSync(pkgContextInfoPath)) { + console.log('pkgContextInfo not found.'); + return; + } + const pkgContextInfoObj = JSON.parse(fs.readFileSync(pkgContextInfoPath).toString()); + if (!pkgContextInfoObj) { + console.log('pkgContextInfo parse failed.'); + return; + } + const loaderJsonPath = getLoaderJsonPath(target); + if (!fs.existsSync(loaderJsonPath)) { + console.log('loaderJson not found.'); + return; + } + const loaderJsonObj = JSON.parse(fs.readFileSync(loaderJsonPath).toString()); + if (!loaderJsonObj) { + console.log('loaderJson parse failed.'); + return; + } + for (const [key, value] of Object.entries(pkgContextInfoObj)) { + if (!value?.version) { + continue; + } + if (!loaderJsonObj.updateVersionInfo[key]) { + loaderJsonObj.updateVersionInfo[key] = {}; + } + loaderJsonObj.updateVersionInfo[key][key] = value.version; + } + fs.writeFileSync(loaderJsonPath, JSON.stringify(loaderJsonObj)); + }); +} + +function updateHarAbcVersion(target: Target) { + deleteLoaderJson(target); + deleteRollupCache(target, 'debug'); + deleteRollupCache(target, 'release'); +} + +// 字节码har的使用方使用此插件,在集成字节码har时,可以正确修改abc中ohmurl的版本号,保证运行时不闪退 +export function updateAbcVersionPlugin(): HvigorPlugin { + return { + pluginId: 'updateAbcVersionPlugin', + apply(node: HvigorNode) { + hvigor.nodesEvaluated(() => { + hvigor.getRootNode().subNodes(subNode => { + let context = subNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN); + if (!context) { + context = subNode.getContext(OhosPluginId.OHOS_HSP_PLUGIN); + } + if (!context) { + return; + } + context.targets(target => { + updateHapHspAbcVersion(subNode, target); + }); + }); + }); + } + }; +} + +// 字节码har的生成方使用此插件,在修改版本号之后可以增量构建出ohmurl正确的字节码har +export function updateHarAbcVersionPlugin(): HvigorPlugin { + return { + pluginId: 'updateHarAbcVersionPlugin', + apply(node: HvigorNode) { + hvigor.nodesEvaluated(() => { + hvigor.getRootNode().subNodes(subNode => { + const context = subNode.getContext(OhosPluginId.OHOS_HAR_PLUGIN); + if (!context) { + return; + } + context.targets(target => { + updateHarAbcVersion(target); + }); + }); + }); + } + }; +} +// DocsCode 1 + +// DocsCode 2 +import { appTasks } from '@ohos/hvigor-ohos-plugin'; +import { updateAbcVersionPlugin, updateHarAbcVersionPlugin } from './plugin.ts'; + +export default { + system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ + plugins:[updateAbcVersionPlugin(), updateHarAbcVersionPlugin()] /* Custom plugin to extend the functionality of Hvigor. */ +} +// DocsCode 2 + +// DocsCode 3 +hvigorw --stop-daemon +// DocsCode 3 \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/module.json5 b/CompilingAndBuilding/entry/src/main/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a1cea8b6a4560cee7bda7a2db52f310c035ab6c8 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/module.json5 @@ -0,0 +1,52 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "EntryAbility", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "EntryAbility", + "srcEntry": "./ets/entryability/EntryAbility.ets", + "description": "$string:EntryAbility_desc", + "icon": "$media:layered_image", + "label": "$string:EntryAbility_label", + "startWindowIcon": "$media:startIcon", + "startWindowBackground": "$color:start_window_background", + "exported": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "name": "EntryBackupAbility", + "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", + "type": "backup", + "exported": false, + "metadata": [ + { + "name": "ohos.extension.backup", + "resource": "$profile:backup_config" + } + ], + } + ] + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/element/color.json b/CompilingAndBuilding/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/element/float.json b/CompilingAndBuilding/entry/src/main/resources/base/element/float.json new file mode 100644 index 0000000000000000000000000000000000000000..a0a93dd91fd48f08f3a9532c76e9b26e68d4c034 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/element/float.json @@ -0,0 +1,8 @@ +{ + "float": [ + { + "name": "page_text_font_size", + "value": "50fp" + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/element/string.json b/CompilingAndBuilding/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..f94595515a99e0c828807e243494f57f09251930 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "module description" + }, + { + "name": "EntryAbility_desc", + "value": "description" + }, + { + "name": "EntryAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/media/background.png b/CompilingAndBuilding/entry/src/main/resources/base/media/background.png new file mode 100644 index 0000000000000000000000000000000000000000..923f2b3f27e915d6871871deea0420eb45ce102f Binary files /dev/null and b/CompilingAndBuilding/entry/src/main/resources/base/media/background.png differ diff --git a/CompilingAndBuilding/entry/src/main/resources/base/media/foreground.png b/CompilingAndBuilding/entry/src/main/resources/base/media/foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..97014d3e10e5ff511409c378cd4255713aecd85f Binary files /dev/null and b/CompilingAndBuilding/entry/src/main/resources/base/media/foreground.png differ diff --git a/CompilingAndBuilding/entry/src/main/resources/base/media/layered_image.json b/CompilingAndBuilding/entry/src/main/resources/base/media/layered_image.json new file mode 100644 index 0000000000000000000000000000000000000000..fb49920440fb4d246c82f9ada275e26123a2136a --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/media/layered_image.json @@ -0,0 +1,7 @@ +{ + "layered-image": + { + "background" : "$media:background", + "foreground" : "$media:foreground" + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/media/startIcon.png b/CompilingAndBuilding/entry/src/main/resources/base/media/startIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..205ad8b5a8a42e8762fbe4899b8e5e31ce822b8b Binary files /dev/null and b/CompilingAndBuilding/entry/src/main/resources/base/media/startIcon.png differ diff --git a/CompilingAndBuilding/entry/src/main/resources/base/profile/backup_config.json b/CompilingAndBuilding/entry/src/main/resources/base/profile/backup_config.json new file mode 100644 index 0000000000000000000000000000000000000000..78f40ae7c494d71e2482278f359ec790ca73471a --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/profile/backup_config.json @@ -0,0 +1,3 @@ +{ + "allowToBackupRestore": true +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/base/profile/main_pages.json b/CompilingAndBuilding/entry/src/main/resources/base/profile/main_pages.json new file mode 100644 index 0000000000000000000000000000000000000000..2e45e7c7694ac43d507de8d2f851dfe1c15a082a --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/base/profile/main_pages.json @@ -0,0 +1,7 @@ +{ + "src": [ + "pages/Index", + "pages/PushPackageDebuggingError", + "pages/ErrorOccurredWhileBuildingHSPModule" + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/main/resources/dark/element/color.json b/CompilingAndBuilding/entry/src/main/resources/dark/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..79b11c2747aec33e710fd3a7b2b3c94dd9965499 --- /dev/null +++ b/CompilingAndBuilding/entry/src/main/resources/dark/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#000000" + } + ] +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/mock/mock-config.json5 b/CompilingAndBuilding/entry/src/mock/mock-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7a73a41bfdf76d6f793007240d80983a52f15f97 --- /dev/null +++ b/CompilingAndBuilding/entry/src/mock/mock-config.json5 @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/ohosTest/ets/test/Ability.test.ets b/CompilingAndBuilding/entry/src/ohosTest/ets/test/Ability.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..85c78f67579d6e31b5f5aeea463e216b9b141048 --- /dev/null +++ b/CompilingAndBuilding/entry/src/ohosTest/ets/test/Ability.test.ets @@ -0,0 +1,35 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function abilityTest() { + describe('ActsAbilityTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }) + }) +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/ohosTest/ets/test/List.test.ets b/CompilingAndBuilding/entry/src/ohosTest/ets/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..794c7dc4ed66bd98fa3865e07922906e2fcef545 --- /dev/null +++ b/CompilingAndBuilding/entry/src/ohosTest/ets/test/List.test.ets @@ -0,0 +1,5 @@ +import abilityTest from './Ability.test'; + +export default function testsuite() { + abilityTest(); +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/ohosTest/module.json5 b/CompilingAndBuilding/entry/src/ohosTest/module.json5 new file mode 100644 index 0000000000000000000000000000000000000000..55725a929993a8a18b3808d41ef037759440488b --- /dev/null +++ b/CompilingAndBuilding/entry/src/ohosTest/module.json5 @@ -0,0 +1,13 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "deviceTypes": [ + "phone", + "tablet", + "2in1" + ], + "deliveryWithInstall": true, + "installationFree": false + } +} diff --git a/CompilingAndBuilding/entry/src/test/List.test.ets b/CompilingAndBuilding/entry/src/test/List.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..bb5b5c3731e283dd507c847560ee59bde477bbc7 --- /dev/null +++ b/CompilingAndBuilding/entry/src/test/List.test.ets @@ -0,0 +1,5 @@ +import localUnitTest from './LocalUnit.test'; + +export default function testsuite() { + localUnitTest(); +} \ No newline at end of file diff --git a/CompilingAndBuilding/entry/src/test/LocalUnit.test.ets b/CompilingAndBuilding/entry/src/test/LocalUnit.test.ets new file mode 100644 index 0000000000000000000000000000000000000000..165fc1615ee8618b4cb6a622f144a9a707eee99f --- /dev/null +++ b/CompilingAndBuilding/entry/src/test/LocalUnit.test.ets @@ -0,0 +1,33 @@ +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'; + +export default function localUnitTest() { + describe('localUnitTest', () => { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(() => { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }); + beforeEach(() => { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }); + afterEach(() => { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }); + afterAll(() => { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }); + it('assertContain', 0, () => { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + let a = 'abc'; + let b = 'b'; + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b); + expect(a).assertEqual(a); + }); + }); +} \ No newline at end of file diff --git a/CompilingAndBuilding/hvigor/hvigor-config.json5 b/CompilingAndBuilding/hvigor/hvigor-config.json5 new file mode 100644 index 0000000000000000000000000000000000000000..a63d34ae5ce5833b3874807e2b8d472687c6c5bf --- /dev/null +++ b/CompilingAndBuilding/hvigor/hvigor-config.json5 @@ -0,0 +1,22 @@ +{ + "modelVersion": "5.0.4", + "dependencies": { + }, + "execution": { + // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ + // "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": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ + // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ + } +} diff --git a/CompilingAndBuilding/hvigorfile.ts b/CompilingAndBuilding/hvigorfile.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3cb9f1a87a81687554a76283af8df27d8bda775 --- /dev/null +++ b/CompilingAndBuilding/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/CompilingAndBuilding/oh-package-lock.json5 b/CompilingAndBuilding/oh-package-lock.json5 new file mode 100644 index 0000000000000000000000000000000000000000..7fcf818273347b97063c0c0a151bb14770ca1c79 --- /dev/null +++ b/CompilingAndBuilding/oh-package-lock.json5 @@ -0,0 +1,27 @@ +{ + "meta": { + "stableOrder": true + }, + "lockfileVersion": 3, + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.", + "specifiers": { + "@ohos/hamock@1.0.0": "@ohos/hamock@1.0.0", + "@ohos/hypium@1.0.21": "@ohos/hypium@1.0.21" + }, + "packages": { + "@ohos/hamock@1.0.0": { + "name": "@ohos/hamock", + "version": "1.0.0", + "integrity": "sha512-K6lDPYc6VkKe6ZBNQa9aoG+ZZMiwqfcR/7yAVFSUGIuOAhPvCJAo9+t1fZnpe0dBRBPxj2bxPPbKh69VuyAtDg==", + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hamock/-/hamock-1.0.0.har", + "registryType": "ohpm" + }, + "@ohos/hypium@1.0.21": { + "name": "@ohos/hypium", + "version": "1.0.21", + "integrity": "sha512-iyKGMXxE+9PpCkqEwu0VykN/7hNpb+QOeIuHwkmZnxOpI+dFZt6yhPB7k89EgV1MiSK/ieV/hMjr5Z2mWwRfMQ==", + "resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/hypium/-/hypium-1.0.21.har", + "registryType": "ohpm" + } + } +} \ No newline at end of file diff --git a/CompilingAndBuilding/oh-package.json5 b/CompilingAndBuilding/oh-package.json5 new file mode 100644 index 0000000000000000000000000000000000000000..75e4e229db0f608fc3d9471c8819d0e52fb403c5 --- /dev/null +++ b/CompilingAndBuilding/oh-package.json5 @@ -0,0 +1,10 @@ +{ + "modelVersion": "5.0.4", + "description": "Please describe the basic information.", + "dependencies": { + }, + "devDependencies": { + "@ohos/hypium": "1.0.21", + "@ohos/hamock": "1.0.0" + } +}