DEV Community

龙儿筝
龙儿筝

Posted on

ArkUI-X添加到现有Android项目中

本教程主要讲述如何利用ArkUI-X SDK完成Android AAR开发,实现基于ArkTS的声明式开发范式在android平台显示。包括:

1.跨平台Library工程开发介绍
2.AAR在Android应用工程的集成方式

使用ACE Tools和DevEco Studio集成ArkUI-X SDK进行Android AAR开发
可以通过通过ACE Tools或DevEco Studio完成

ACE Tools
1.ace create 命令创建一个跨平台的library模版工程:

ace create [project] -t library
2.执行ace build aar命令,构建Android aar包。

ace build aar
DevEco Studio
1.创建一个ArkUI-X Library工程
image1 2.通过执行Build APP(s)选项,构建出Android aar包 image2
image3

在应用工程初始化ArkUI-X
通过Android studio 创建一个应用工程,将我们上述的aar包添加到工程目录下的libs目录中 Application部分

继承调用
package com.example.helloworld;

import com.example.myaar.MyApplication;

public class MainApplication extends MyApplication {

}
代理类调用
package com.example.helloworld;

import android.app.Application;
import android.content.res.Configuration;
import android.util.Log;

import ohos.stage.ability.adapter.StageApplicationDelegate;

public class MainApplication extends Application {
private StageApplicationDelegate appDelegate = null;

public void onCreate() {
    super.onCreate();
    this.appDelegate = new StageApplicationDelegate();
    this.appDelegate.initApplication(this);
}
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (this.appDelegate == null) {
        Log.e("StageApplication", "appDelegate is null");
    } else {
        this.appDelegate.onConfigurationChanged(newConfig);
    }
}
Enter fullscreen mode Exit fullscreen mode

}
打开ArkUI-X页面
使用Activity加载页面
在AndroidManifest.xml中配置Activity

 <application
     android:name="com.example.test_aar_demo.MainApplication" >

 <activity android:name="com.example.myaar.EntryMainAbilityActivity" 
     android:windowSoftInputMode="adjustResize |stateHidden"
     android:configChanges="orientation|keyboard|layoutDirection|screenSize|uiMode|smallestScreenSize" />
 </application>
Enter fullscreen mode Exit fullscreen mode


使用intent打开Activity页面

startActivity(new Intent(this, EntryMainAbilityActivity.class));
使用Fragment加载页面
在Activity中加载StageFragment

StageFragment stageFragment = new StageFragment();
stageFragment.setInstanceName("com.example.myaar:entry:EntryMainAbilityActivity:");
supportFragmentManager.beginTransaction().replace(R.id.content, it).commitNowAllowingStateLoss();
image4

Top comments (0)