diff --git a/README_zh.md b/README_zh.md index ea0838fc1d8ac5f9190ee6d06d210f35d3ba89e1..3d0850f3590ae622752c2cc4bbf69710a2463773 100755 --- a/README_zh.md +++ b/README_zh.md @@ -26,6 +26,7 @@ - [`Flashlight:`手电筒(JS)](https://gitee.com/openharmony/app_samples/tree/master/common/Flashlight) - [`JsHelloWorld:`你好世界(JS)](https://gitee.com/openharmony/app_samples/tree/master/common/JsHelloWorld) - [`eTSUtilBase64Codec:`Base64编解码(eTS)](https://gitee.com/openharmony/app_samples/tree/master/common/eTSUtilBase64Codec) + - [`eTSUtilTypeCheck:`类型校验(eTS)](https://gitee.com/openharmony/app_samples/tree/master/common/eTSUtilTypeCheck) - data - [`eTSFileIo:`文件管理(eTS)](https://gitee.com/openharmony/app_samples/tree/master/data/eTSFileIo) diff --git a/common/eTSUtilTypeCheck/README_zh.md b/common/eTSUtilTypeCheck/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..c198958c8dd9055487299739e71152dac82bc633 --- /dev/null +++ b/common/eTSUtilTypeCheck/README_zh.md @@ -0,0 +1,15 @@ +# util工具函数-类型校验 + +## 简介 + +本示例通过对给定值进行校验,判断是否符合Type类型,并输出校验结果。 + +### 使用说明 + +1.点击显示预置值按钮,将会显示预置值。 + +2.点击校验预置值按钮,将会对预置值进行校验,并输出校验结果。 + +### 约束与限制 + +本示例仅支持在标准系统上运行。 \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/build.gradle b/common/eTSUtilTypeCheck/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..f350f30a90f962897ebab2c31e5bbf3e4868a578 --- /dev/null +++ b/common/eTSUtilTypeCheck/build.gradle @@ -0,0 +1,34 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + supportSystem "standard" +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } + dependencies { + classpath 'com.huawei.ohos:hap:3.0.5.2' + classpath 'com.huawei.ohos:decctest:1.2.7.2' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } +} diff --git a/common/eTSUtilTypeCheck/entry/build.gradle b/common/eTSUtilTypeCheck/entry/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..05a33cd3adb09a68a581b9f7c02c57d3911630e8 --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/build.gradle @@ -0,0 +1,21 @@ +apply plugin: 'com.huawei.ohos.hap' +//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + defaultConfig { + compatibleSdkVersion 8 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13.1' +} diff --git a/common/eTSUtilTypeCheck/entry/src/main/config.json b/common/eTSUtilTypeCheck/entry/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..be5d400847337a7f4be1921688afcedf38d1f3ef --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/config.json @@ -0,0 +1,67 @@ +{ + "app": { + "bundleName": "com.samples.eTSUtilTypeCheck", + "vendor": "samples", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "com.samples.eTSUtilTypeCheck", + "name": ".MyApplication", + "mainAbility": ".MainAbility", + "srcPath": "", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "MainAbility", + "name": ".MainAbility", + "srcLanguage": "ets", + "icon": "$media:icon", + "description": "$string:description_mainability", + "formsEnabled": false, + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "mode": { + "syntax": "ets", + "type": "pageAbility" + }, + "pages": [ + "pages/index" + ], + "name": ".MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets b/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets new file mode 100644 index 0000000000000000000000000000000000000000..bf28e58b36cf11db491d3f00768ef2c9e41d05cf --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 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. + */ + +export default { + onCreate() { + console.info('Application onCreate') + }, + onDestroy() { + console.info('Application onDestroy') + }, +} \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets new file mode 100644 index 0000000000000000000000000000000000000000..17c44f84f59e0fa10c6602e19c6b1d26f2954c4c --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -0,0 +1,395 @@ +/* + * Copyright (c) 2021 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. + */ + + +import util from '@ohos.util' + +const number_value = new Number (55) +const string_value = new String ('sdsddadas') +const arrayBuffer_value = new ArrayBuffer(8) +const boolean_value = new Boolean (true) + +@Entry +@Component +struct Index { + @State arrayBufferCheck: string = ' ' + @State argumentsCheck: string = ' ' + @State asyncFunctionCheck: string = ' ' + @State booleanCheck: string = ' ' + @State dataViewCheck: string = ' ' + @State dateCheck: string = ' ' + @State externalCheck: string = ' ' + @State float32ArrayCheck: string = ' ' + @State generatorCheck: string = ' ' + @State int8ArrayCheck: string = ' ' + @State mapCheck: string = ' ' + @State errorCheck: string = ' ' + @State numberCheck: string = ' ' + @State promiseCheck: string = ' ' + @State proxyCheck: string = ' ' + @State regExpCheck: string = ' ' + @State setCheck: string = ' ' + @State stringCheck: string = ' ' + @State symbolCheck: string = ' ' + @State uint8ArrayCheck: string = ' ' + @State weakMapCheck: string = ' ' + @State WeakSetCheck: string = ' ' + @State showArray: string = '' + + check() { + let that = new util.Types() + let result: Boolean + try { + result = that.isAnyArrayBuffer(arrayBuffer_value) + if(result == true) { + console.log("Success, arrayBuffer_value this value is ArrayBuffer.") + this.arrayBufferCheck = 'Success, arrayBuffer_value this value is ArrayBuffer.' + } else if(result == false) { + console.log("Success, arrayBuffer_value this value not is ArrayBuffer.") + this.arrayBufferCheck = 'Success, arrayBuffer_value this value not is ArrayBuffer.' + } else { + console.log("Error!") + } + + result = that.isArgumentsObject(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is arguments.') + this.argumentsCheck = 'Success, arrayBuffer_value this value is arguments.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is arguments.') + this.argumentsCheck = 'Success, arrayBuffer_value this value not is arguments.' + } else { + console.log('Error!') + } + + result = that.isAsyncFunction(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is AsyncFunction.') + this.asyncFunctionCheck = 'Success, arrayBuffer_value this value is AsyncFunction.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is AsyncFunction.') + this.asyncFunctionCheck = 'Success, arrayBuffer_value this value not is AsyncFunction.' + } else { + console.log('Error!') + } + + result = that.isBooleanObject(boolean_value) + if(result == true) { + console.log('Success, boolean_value this value is Boolean.') + this.booleanCheck = 'Success, boolean_value this value is Boolean.' + } else if(result == false) { + console.log('Success, boolean_value this value not is Boolean.') + this.booleanCheck = 'Success, boolean_value this value not is Boolean.' + } else { + console.log('Error!') + } + + result = that.isDataView(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is DataView.') + this.dataViewCheck = 'Success, arrayBuffer_value this value is DataView.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is DataView.') + this.dataViewCheck = 'Success, arrayBuffer_value this value not is DataView.' + } else { + console.log('Error!') + } + + result = that.isDate(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Date.') + this.dateCheck = 'Success, arrayBuffer_value this value is Date.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Date.') + this.dateCheck = 'Success, arrayBuffer_value this value not is Date.' + } else { + console.log('Error!') + } + + result = that.isExternal(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is native External.') + this.externalCheck = 'Success, arrayBuffer_value this value is native External.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is native External.') + this.externalCheck = 'Success, arrayBuffer_value this value not is native External.' + } else { + console.log('Error!') + } + + result = that.isFloat32Array(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Float32Array.') + this.float32ArrayCheck = 'Success, arrayBuffer_value this value is Float32Array.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Float32Array.') + this.float32ArrayCheck = 'Success, arrayBuffer_value this value is Float32Array.' + } else { + console.log('Error!') + } + + result = that.isGeneratorFunction(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is generator.') + this.generatorCheck = 'Success, arrayBuffer_value this value is generator.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is generator.') + this.generatorCheck = 'Success, arrayBuffer_value this value not is generator.' + } else { + console.log('Error!') + } + + result = that.isInt8Array(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Int8Array.') + this.int8ArrayCheck = 'Success, arrayBuffer_value this value is Int8Array.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Int8Array.') + this.int8ArrayCheck = 'Success, arrayBuffer_value this value not is Int8Array.' + } else { + console.log('Error!') + } + + result = that.isMap(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Map.') + this.mapCheck = 'Success, arrayBuffer_value this value is Map.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Map.') + this.mapCheck = 'Success, arrayBuffer_value this value not is Map.' + } else { + console.log('Error!') + } + + result = that.isNativeError(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Error.') + this.errorCheck = 'Success, arrayBuffer_value this value is Error.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Error.') + this.errorCheck = 'Success, arrayBuffer_value this value not is Error.' + } else { + console.log('Error!') + } + + result = that.isNumberObject(number_value) + if(result == true) { + console.log('Success, number_value this value is Number.') + this.numberCheck = 'Success, number_value this value is Number.' + } else if(result == false) { + console.log('Success, number_value this value not is Number.') + this.numberCheck = 'Success, number_value this value not is Number.' + } else { + console.log('Error!') + } + + result = that.isPromise(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Promise.') + this.promiseCheck = 'Success, arrayBuffer_value this value is Promise.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Promise.') + this.promiseCheck = 'Success, arrayBuffer_value this value not is Promise.' + } else { + console.log('Error!') + } + + result = that.isProxy(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Proxy.') + this.proxyCheck = 'Success, arrayBuffer_value this value is Proxy.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Proxy.') + this.proxyCheck = 'Success, arrayBuffer_value this value not is Proxy.' + } else { + console.log('Error!') + } + + result = that.isRegExp(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is RegExp.') + this.regExpCheck = 'Success, arrayBuffer_value this value is RegExp.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is RegExp.') + this.regExpCheck = 'Success, arrayBuffer_value this value not is RegExp.' + } else { + console.log('Error!') + } + + result = that.isSet(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Set.') + this.setCheck = 'Success, arrayBuffer_value this value is Set.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Set.') + this.setCheck = 'Success, arrayBuffer_value this value not is Set.' + } else { + console.log('Error!') + } + + result = that.isStringObject(string_value) + if(result == true) { + console.log('Success, string_value this value is String.') + this.stringCheck = 'Success, string_value this value is String.' + } else if(result == false) { + console.log('Success, string_value this value not is String.') + this.stringCheck = 'Success, string_value this value not is String.' + } else { + console.log('Error!') + } + + result = that.isSymbolObject(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Symbol.') + this.symbolCheck = 'Success, arrayBuffer_value this value is Symbol.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Symbol.') + this.symbolCheck = 'Success, arrayBuffer_value this value not is Symbol.' + } else { + console.log('Error!') + } + + result = that.isUint8Array(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is Uint8Array.') + this.uint8ArrayCheck = 'Success, arrayBuffer_value this value is Uint8Array.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is Uint8Array.') + this.uint8ArrayCheck = 'Success, arrayBuffer_value this value not is Uint8Array.' + } else { + console.log('Error!') + } + + result = that.isWeakMap(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is WeakMap.') + this.weakMapCheck = 'Success, arrayBuffer_value this value is WeakMap.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is WeakMap.') + this.weakMapCheck = 'Success, arrayBuffer_value this value not is WeakMap.' + } else { + console.log('Error!') + } + + result = that.isWeakSet(arrayBuffer_value) + if(result == true) { + console.log('Success, arrayBuffer_value this value is WeakSet.') + this.WeakSetCheck = 'Success, arrayBuffer_value this value is WeakSet.' + } else if(result == false) { + console.log('Success, arrayBuffer_value this value not is WeakSet.') + this.WeakSetCheck = 'Success, arrayBuffer_value this value not is WeakSet.' + } else { + console.log('Error!') + } + } catch(e) { + console.log('error' + e) + } + } + + show(){ + this.showArray = 'Number: number_value = 55\nString: string_value = sdsddadas\n' + + 'ArrayBuffer: arrayBuffer_value = 8\nBoolean: boolean_value = true' + this.asyncFunctionCheck = ' ' + this.booleanCheck = ' ' + this.dataViewCheck = ' ' + this.dateCheck = ' ' + this.externalCheck = ' ' + this.float32ArrayCheck = ' ' + this.int8ArrayCheck = ' ' + this.generatorCheck = ' ' + this.int8ArrayCheck = ' ' + this.mapCheck = ' ' + this.errorCheck = ' ' + this.numberCheck = ' ' + this.promiseCheck = ' ' + this.proxyCheck = ' ' + this.regExpCheck = ' ' + this.setCheck = ' ' + this.stringCheck = ' ' + this.symbolCheck = ' ' + this.uint8ArrayCheck = ' ' + this.weakMapCheck = ' ' + this.WeakSetCheck = ' ' + } + + build() { + Column() { + Text($r('app.string.title')) + .textAlign(TextAlign.Center) + .width('100%') + .height('5%') + .backgroundColor('#008bdd') + .fontSize(25) + .fontColor(Color.Black) + .fontWeight(FontWeight.Bold) + + Scroll() { + Column() { + Text(this.showArray + ' \n ' + this.asyncFunctionCheck + ' \n ' + this.booleanCheck + ' \n ' + + this.dataViewCheck + ' \n ' + this.dateCheck + ' \n ' + this.externalCheck + ' \n ' + this.float32ArrayCheck + + ' \n ' + this.int8ArrayCheck + ' \n ' + this.generatorCheck + ' \n ' + this.int8ArrayCheck + ' \n ' + + this.mapCheck + ' \n ' + this.errorCheck + ' \n ' + this.numberCheck + ' \n ' + this.promiseCheck + + ' \n ' + this.proxyCheck + ' \n ' + this.regExpCheck + ' \n ' + this.setCheck + ' \n ' + this.stringCheck + + ' \n ' + this.symbolCheck + ' \n ' + this.uint8ArrayCheck + ' \n ' + this.weakMapCheck + ' \n ' + this.WeakSetCheck) + .width('90%') + .height('65%') + .fontSize(12) + .padding({ left: 5, right: 5}) + .margin({ left: 10, right: 10, top: 10, bottom: 10 }) + .border({ width: 2, radius: 5, color: Color.Gray }) + } + } + + Flex({ + direction: FlexDirection.Row, + alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center, + wrap: FlexWrap.Wrap + }) { + Button() { + Text($r("app.string.show")) + .fontColor(Color.Black) + .fontSize(20) + .textAlign(TextAlign.Center) + .width('85%') + } + .type(ButtonType.Capsule) + .backgroundColor('#0D9FFB') + .padding(5) + .margin({ top: 10 }) + .onClick(() => { + this.show() + }) + + Button() { + Text($r("app.string.check")) + .fontColor(Color.Black) + .fontSize(20) + .textAlign(TextAlign.Center) + .width('85%') + } + .type(ButtonType.Capsule) + .backgroundColor('#0D9FFB') + .padding(5) + .margin({ top: 10 }) + .onClick(() => { + this.check() + }) + } + } + .width('100%') + .height('100%') + } +} diff --git a/common/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json b/common/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..b96d2514d59c06da1b84129be63fad87b6b106f0 --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "UtilTypeCheck" + }, + { + "name": "description_mainability", + "value": "eTS_Empty Ability" + }, + { + "name": "title", + "value": "Check input value" + }, + { + "name": "text", + "value": "confirm" + }, + { + "name": "show", + "value": "Display preset value" + }, + { + "name": "check", + "value": "Check preset value" + } + ] +} \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png b/common/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/common/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png differ diff --git a/common/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json b/common/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..b96d2514d59c06da1b84129be63fad87b6b106f0 --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "UtilTypeCheck" + }, + { + "name": "description_mainability", + "value": "eTS_Empty Ability" + }, + { + "name": "title", + "value": "Check input value" + }, + { + "name": "text", + "value": "confirm" + }, + { + "name": "show", + "value": "Display preset value" + }, + { + "name": "check", + "value": "Check preset value" + } + ] +} \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json b/common/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..934315c95b2d3af9e120f6910b05460f29fbc929 --- /dev/null +++ b/common/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "UtilTypeCheck" + }, + { + "name": "description_mainability", + "value": "eTS_Empty Ability" + }, + { + "name": "title", + "value": "校验输入值" + }, + { + "name": "text", + "value": "确认" + }, + { + "name": "show", + "value": "显示预置值" + }, + { + "name": "check", + "value": "校验预置值" + } + ] +} \ No newline at end of file diff --git a/common/eTSUtilTypeCheck/screenhots/devices/main.png b/common/eTSUtilTypeCheck/screenhots/devices/main.png new file mode 100644 index 0000000000000000000000000000000000000000..14a07378d397d1cd472708b96f690d4bb0a39119 Binary files /dev/null and b/common/eTSUtilTypeCheck/screenhots/devices/main.png differ diff --git a/common/eTSUtilTypeCheck/settings.gradle b/common/eTSUtilTypeCheck/settings.gradle new file mode 100644 index 0000000000000000000000000000000000000000..4773db73233a570c2d0c01a22e75321acfbf7a07 --- /dev/null +++ b/common/eTSUtilTypeCheck/settings.gradle @@ -0,0 +1 @@ +include ':entry'