1、pthread创建的线程中如何读取rawfile
可在线程安全函数中读取:
-
UI主线程中获取并保存资源文件对象。
-
创建线程安全函数。
-
在非UI主线程中调用线程安全函数。
-
在线程安全函数中,读取rawfile下的文件资源。
2、C/C++的三方开源库如何迁移到系统下运行
当前SDK只支持Cmake构建,同时对于依赖GN构建的场景提供了迁移指导
3、synchronized在java中可以修饰方法,从而简单地实现函数的同步调用。在系统ets开发中,如何简单实现该功能
支持AsyncLock形式的同步机制,将需要同步的代码块放到异步代码块中。
4、ArkTS类的方法是否支持重载
当前ArkTS支持TS中的重载,即多个重载签名+实现签名+函数体的形式。函数签名只用在编译期进行类型检查,不保留到运行时。
5、以libstd为例,C++的标准库放在哪里了,有没有打到hap包中
libc++shared.so被打包到应用目录下了,每个应用都有一份独立的libc++shared.so (/data/storage/el1/bundle/libs/${arch})。
6、如何开启AOT编译模式
AOT(Ahead Of Time)即预先编译,在程序运行前,预先编译成高性能机器码,让程序在首次运行就能通过执行高性能机器码获得性能收益。
7、AOT编译模式的产物及ap、an、ai文件是什么
AOT编译模式的产物是可以直接执行的机器码。
ap文件:即ark profiler文件,是在方舟AOT编译器中,记录预先profiling运行时类型等信息的文件。
an、ai文件是字节码结合ap文件生成的机器码文件,an是arkcompiler native的缩写,ai是arkcompiler image的缩写。
8、.ets文件和.ts文件的区别及如何互相调用文件中定义的方法
ArkTS基于兼容了TS语法,继承了TS的所有特性,当前,ArkTS在TS的基础上主要扩展了声明式UI能力,让开发者能够以更简洁、更自然的方式开发高性能应用。推荐用ArKTS开发UI相关内容,TS可以用来开发业务逻辑相关内容。
ts文件不支持调用ets文件中定义的方法。
ets调用ts文件中定义的方法,可以使用ES6中import引入及export导出的语法,将ts文件中的方法进行export导出,在ets文件中import引入该方法进行调用。
9、ArkTS中globalThis无法使用该如何替换
ArkTS不支持动态更改对象的布局,因此不支持全局作用域和globalThis。
10、如何访问类的静态变量和方法
在ArkTS中,静态变量和方法是属于类自身的,无法通过this访问,因为this是指向类的实例化对象。如果要在类中访问静态变量和静态方法,需要使用类名访问。
11、如何合并两个对象
出于性能考虑,目前ArkTS限制了ES6的Object.assign()方法的使用。若需要在ets文件中扩展对象属性或合并两个对象时,可以自行实现assign方法。
12、ArkTS是否可以开发AST数据结构或者接口
AST属于编译器编译过程中间数据结构,该数据本身不稳定,可能会随着语言或者编译器的演进发生变化,暂无计划开放给开发者。
13、系统使用了ArkTS作为开发语言,那这些代码的在底层的解释运行的环境是自研的还是用的开源的,比如v8、jscore?另外系统也适配了React Native引擎,是不是也是复用的这个运行环境
-
系统ArkTS语言运行在自研的方舟编译运行时,运行的是应用包中经过方舟编译工具链编译ArkTS/TS/JS源码后生成的字节码。
-
系统适配的React Native引擎目前仍是运行JS源码,运行在系统提供的V8引擎。
14、ArkTS里的数据类型转换方法有哪些?和TS是一致的吗
ArkTS支持TS语义的as类型转换,不支持使用<>运算符进行类型转换。当前as类型转换只用在编译时,无法通过as在运行时进行类型转换。
ArkTS支持内置的类型转换函数,例如Number(), String(), Boolean()等。
更多详情查看:文档中心