# arkui_for_android
**Repository Path**: arkui-x_recycle/arkui_for_android
## Basic Information
- **Project Name**: arkui_for_android
- **Description**: ArkUI-X adaptation to Android | ArkUI-X支持Android平台的适配层
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 2
- **Created**: 2023-08-02
- **Last Updated**: 2024-12-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ArkUI Android平台适配层
- [简介](#section15701932113019)
- [目录介绍](#section1791423143211)
- [使用说明](#section171384529150)
## 简介
ArkUI框架是OpenHarmony UI开发框架,提供基础类、容器类、画布类等UI组件,当前支持类Web编程范式和声明式编程范式。
**图 1** ArkUI框架架构

ArkUI框架包括应用层(Application)、前端框架层(Framework)、引擎层(Engine)和平台适配层(Porting Layer)。
- **Application**
应用层表示开发者使用JS UI框架开发的FA应用,这里的FA应用特指JS FA应用。
- **Framework**
前端框架层主要完成前端页面解析,以及提供MVVM(Model-View-ViewModel)开发模式、页面路由机制和自定义组件等能力。
- **Engine**
引擎层主要提供动画解析、DOM(Document Object Model)树构建、布局计算、渲染命令构建与绘制、事件管理等能力。
- **Porting Layer**
适配层主要完成对平台层进行抽象,提供抽象接口,可以对接到系统平台。比如:事件对接、渲染管线对接和系统生命周期对接等。
本项目基于上述**平台适配层**的接口,实现对接Android平台的适配,可以帮助开发者将基于ArkUI开发的应用运行在标准的Android设备上。
## 目录介绍
ArkUI开发框架的源代码结构参见[代码工程结构及构建说明](https://gitee.com/arkui-x/docs/blob/master/zh-cn/framework-dev/quick-start/project-structure-guide.md),Android平台的适配代码在/foundation/arkui/ace\_engine/adapter/android下,目录结构如下图所示:
```
/foundation/arkui/ace_engine/adapter/android
├── build # 编译配置
├── capability # 系统平台能力适配
├── entrance # 启动入口相关适配
├── osal # 操作系统抽象层
└── test # 测试相关
```
## 使用说明
参考[应用开发者文档](https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/README.md)可以创建出跨平台应用工程,在Android平台集成开发时,Android应用的入口Application和Activity需要继承自ArkUI-X提供的两个基类AceActivity和AceApplication,并调用相应接口传入开发范式类型以及ArkUI模块实例名称,即可构建ArkUI跨Android平台应用,具体如下:
Android应用的入口Application和Activity需要继承自ArkUI提供的基类,具体如下:
```java
import ohos.ace.adapter.AceApplication;
public class MyApplication extends AceApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
```
```java
import ohos.ace.adapter.AceActivity;
public class MainActivity extends AceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setVersion(VERSION_ETS); // ArkUI开发范式类型,VERSION_JS:兼容JS的类Web开发范式,VERSION_ETS:基于ArkTS的声明式开发范式。
setInstanceName("MainAbility"); // ArkUI JSBundle在应用工程assets/js中存放的目录名(即模块实例名)。
super.onCreate(savedInstanceState);
}
}
```
其中AceActivity提供两个方法,分别用于设置当前Activity对应的ArkUI模块实例名称和使用的开发范式:
```java
/**
* set the instance name, should called before super.onCreate()
*
* @param name the instance name to set
*/
public void setInstanceName(String name);
/**
* set arkui app type version
*
* @param version the version of app type, can be one of this:
* VERSION_JS / VERSION_ETS, should called before super.onCreate()
*/
public void setVersion(int version);
```
经过上述配置,该应用启动时会自动加载对应的ArkUI模块源码执行并渲染显示。