# ani_cookbook **Repository Path**: Ascnbio/ani_cookbook ## Basic Information - **Project Name**: ani_cookbook - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2025-02-25 - **Last Updated**: 2025-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ANI 使用样例 ## 介绍 关于 ARKTS 演进 ANI 接口的使用样例 ## 准备条件 已经下载和编译完成了 ARKTS 演进的源码,生成产物在 arkruntime_core/static/core/out 下,其中,out是cmake配置的目录,可以为别的目录 ## 样例列表 ### 1 Hello STS 说明:一个简单的STS文件,用于验证编译和运行环境 - [代码示例](test.sts) #### 准备工作 配置环境变量 export PANDA_HOME=/path/to/arkruntime_core/static/core/out #### 编译sts文件 ```sh ./build.py compile test.sts ``` #### 运行sts文件 ```sh ./build.py run test.abc test.ETSGLOBAL::main ``` ### 2 Hello ANI, 从 STS 文件调用C实现的方法 说明:最简单的ANI示例,包含一个STS文件和一个CPP源文件,从 STS 文件调用C实现的方法 - [代码示例STS](hello_ani.sts) - [代码示例cpp](hello_ani.cpp) #### 准备工作 配置环境变量 export PANDA_HOME=/path/to/arkruntime_core/static/core/out #### 编译sts文件 ```sh ./build.py compile hello.sts ``` #### 编译cpp文件 ```sh gcc -o libhello_ani.so --shared -fPIC hello_ani.cpp -I $PANDA_HOME/../plugins/ets/runtime/ani ``` #### 运行sts文件 ```sh ./build.py run hello_ani.abc hello_ani.ETSGLOBAL::main ``` ### 3 Call Method From Native 说明:定义一个类,其中有一个方法在STS实现,一个方法在Native实现。通过在STS中调用Native实现的方法,再调用到STS实现的方法。 - [代码示例STS](call_method_from_native.sts) - [代码示例cpp](call_method_from_native.cpp) #### 准备工作 配置环境变量 export PANDA_HOME=/path/to/arkruntime_core/static/core/out #### 编译sts文件 ```sh ./build.py compile call_method_from_native.sts ``` #### 编译cpp文件 ```sh gcc -o libcall_method_from_native.so --shared -fPIC call_method_from_native.cpp -I $PANDA_HOME/../plugins/ets/runtime/ani ``` #### 运行sts文件 ```sh ./build.py run call_method_from_native.abc call_method_from_native.ETSGLOBAL::main ``` ### 4 在STS中创建一个 Promise 方法,在其中使用另外一个Task运行Native代码 说明:在STS中创建一个Promise,并且用 launch 创建一个Task来执行native任务 - [代码示例STS](promise_test.sts) - [代码示例cpp](promise_test.cpp) #### 准备工作 配置环境变量 export PANDA_HOME=/path/to/arkruntime_core/static/core/out #### 编译sts文件 ```sh ./build.py compile promise_test.sts ``` #### 编译cpp文件 ```sh gcc -o libpromise_test.so --shared -fPIC promise_test.cpp -I $PANDA_HOME/../plugins/ets/runtime/ani ``` #### 运行abc文件 ```sh ./build.py run promise_test.abc promise_test.ETSGLOBAL::main ``` ### 5 在Native中修改 STS中类实例的 Field 说明:在STS中创建一个类,包含一个属性,在STS中创建类示例以后,在Native方法中修改这个属性 - [代码示例STS](setfield.sts) - [代码示例cpp](setfield.cpp) #### 准备工作 配置环境变量 export PANDA_HOME=/path/to/arkruntime_core/static/core/out #### 编译sts文件 ```sh ./build.py compile setfield.sts ``` #### 编译cpp文件 ```sh gcc -o libsetfield.so --shared -fPIC setfield.cpp -I $PANDA_HOME/../plugins/ets/runtime/ani ``` #### 运行sts文件 ```sh ./build.py run setfield.abc setfield.ETSGLOBAL::main ```