ArkUI Android平台适配层
Android平台的适配代码在/foundation/arkui/ace_engine/adapter/android下,目录结构如下图所示:
/foundation/arkui/ace_engine/adapter/android
├── build # 编译配置
├── capability # 系统平台能力适配
├── entrance # 启动入口相关适配
├── osal # 操作系统抽象层
└── stage # Stage开发模型适配
使用说明
Android 工程创建
通过ACE Tools或DevEco Studio创建一个ArkUI-X应用工程(示例工程名为HelloWorld),其工程目录下的.arkui-x/android文件代表对应的Android工程。Android应用的入口Application和Activity类,这两个类需要继承自ArkUI提供的基类,Activity继承StageActivity类,Application则会继承StageApplication类,Application也可以通过代理类StageApplicationDelegate使用。
Activity类 该类名通过通过module名和ability名拼接而得,一个ability对应一个Android工程侧的Activity类。
package com.example.helloworld;
import android.os.Bundle;
import android.util.Log;
import ohos.stage.ability.adapter.StageActivity;
public class EntryEntryAbilityActivity extends StageActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.e("HiHelloWorld", "EntryMainAbilityActivity");
setInstanceName("com.example.helloworld:entry:EntryAbility:");// ArkUI-X应用编译产物在应用工程assets/js中存放的目录名(即模块实例名)。
super.onCreate(savedInstanceState);
}
}
Application类
package com.example.helloworld;
import android.util.Log;
import ohos.stage.ability.adapter.StageApplication;
public class MainApplication extends StageApplication {
private static final String LOG_TAG = "HiHelloWorld";
private static final String RES_NAME = "res";
@Override
public void onCreate() {
Log.e(LOG_TAG, "MyApplication");
super.onCreate();
Log.e(LOG_TAG, "MyApplication onCreate");
}
}
Android 工程编译
对Android工程编译时,ACE Tools或DevEco Studio会完成两个步骤:
-
集成ArkUI-X SDK
Android工程集成ArkUI-X SDK遵循Android应用工程集成Jar和动态库规则,即SDK组成清单中的arkui_android_adapter.jar包拷贝到libs目录,动态库(libarkui_android.so\libhilog_android.so\libhilog.so\libresourcemanager.so)会自动拷贝到libs/arm64-v8a目录。 -
集成ArkUI-X应用编译产物
ArkUI-X编译产物生成后,拷贝到Android应用工程assets/arkui-x目录下。这里“arkui-x”目录名称是固定的,不能更改src/main/assets/arkui-x ├── entry | ├── ets | | ├── modules.abc | | └── sourceMaps.map | ├── resouces.index | ├── resouces | └── module.json └── systemres
完成上述步骤后即可按照Android应用构建流程,构建ArkUI Android应用,并且可以安装至Android手机后运行。