0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙ArkUI-X跨平台开发:【bility开发说明(Android平台)】

jf_46214456 ? 来源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-21 10:54 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

通过Stage模型开发Android端应用指南

简介

本文介绍将ArkUI框架扩展到Android平台所需要的必要的类及其使用说明,开发者基于OpenHarmony,可复用大部分的应用代码(生命周期等)并可以部署到Android平台,降低跨平台应用开发成本。

AndroidStudio配置

使用AndroidStudio所创建Android工程的PackageName需要与OpenHarmony工程的BundleName一致。

注: AndroidStudio:Android应用的开发工具。

ArkUI-X和Android平台集成所用关键类

开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

应用工程Android逻辑部分的StageApplication

应用需要继承arkui_android_adapter.jar包所提供的StageApplication。StageApplication用于初始化资源路径以及加载配置信息,例如:

package com.example.myapplication;
import ohos.stage.ability.adapter.StageApplication;

public class HiStageApplication extends StageApplication {

}

应用工程Android逻辑部分的StageActivity

Activity需要继承arkui_android_adapter.jar包所提供的StageActivity,StageActivity主要功能是将Android中Activity的生命周期与OpenHarmony中Ability的生命周期进行映射,例如:

package com.example.myapplication;
import ohos.stage.ability.adapter.StageActivity;

public class EntryMainAbilityActivity extends StageActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.setInstanceName("com.example.myapplication:entry:MainAbility:");
        super.onCreate(savedInstanceState);
    }
}

为了将Activity和ability进行关联,需要重写StageActivity中的onCreate事件,在super.onCreate(savedInstanceState)之前设置instanceName,规则如下:

bundleName:moduleName:abilityName:

其中bundleName的值来自于OpenHarmony应用中app.json5配置文件,moduleName、abilityName的值来自于OpenHarmony应用中的module.json5配置文件。

Ability与Activity对应规则

Android端应用内的Activity的packageName需要与Ability的bundleName一致。

Android端应用内的Activity的activityName组成规则:Ability的moduleName + Ability的abilityName + “Activity”。

示例如图: stage_android

StageApplication初始化支持以下三种方式

通过继承StageApplication的方式进行初始化

import ohos.stage.ability.adapter.StageApplication;

public class HiStageApplication extends StageApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

继承Android原生Application方式,在onCreate方法中创建StageApplicationDelegate实例进行初始化

import android.app.Application;
import ohos.stage.ability.adapter.StageApplicationDelegate;

public class HiStageApplication extends Application {
    private StageApplicationDelegate appDelegate_ = null;

    @Override
    public void onCreate() {
        super.onCreate();
        appDelegate_ = new StageApplicationDelegate();
        appDelegate_.initApplication(this);
    }
}

在Activity中创建StageApplicationDelegate实例进行初始化

import android.app.Activity;
import ohos.stage.ability.adapter.StageApplicationDelegate;

public class EntryEntryAbilityActivity extends Activity {

    private StageApplicationDelegate appDelegate_ = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        appDelegate_ = new StageApplicationDelegate();
        appDelegate_.initApplication(this.getApplication());
        super.onCreate(savedInstanceState);
    }
}

通过原生Activity拉起Ability并传递参数

使用原生Activity拉起Ability时,需使用原生应用的startActivity方法,参数的传递需要通过Intent中的putExtra()进行设置,规则如下:

key值为params
value为json格式

{
    "params":[
        {
            "key":键,
            "type":参数类型值,
            "value":值
        },
        {
            ...
        }
    ]
}

支持的参数类型列表

参数类型HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿参数类型值
boolean1
int5
double9
string10

搜狗高速浏览器截图20240326151547.png

示例代码

public class EntryEntryAbilityActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent();
        intent.setClass(this, EntryEntryAbilityTwoActivity.class);
        intent.putExtra("params",
                "{"params":[{"key":"bool","type":1,"value":"true"}," +
                "{"key":"double","type":9,"value":"2.3"}," +
                "{"key":"int","type":5,"value":"2"}," +
                "{"key":"string","type":10,"value":"test"}]}");
        startActivity(intent);
    }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3974

    浏览量

    130496
  • 模型
    +关注

    关注

    1

    文章

    3531

    浏览量

    50578
  • 鸿蒙
    +关注

    关注

    60

    文章

    2643

    浏览量

    44242
  • OpenHarmony
    +关注

    关注

    30

    文章

    3858

    浏览量

    18794
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    鸿蒙ArkUI-X平台开发:【命令行工具(ACE Tools)】

    ACE Tools是一套为ArkUI-X项目平台应用开发者提供的命令行工具,支持在Windows/Ubuntu/macOS平台运行,用于构
    的头像 发表于 05-21 17:39 ?2968次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b><b class='flag-5'>开发</b>:【命令行工具(ACE Tools)】

    鸿蒙ArkUI-X平台开发:【SDK目录结构介绍】

    本文档配套ArkUI-X,将OpenHarmony ArkUI开发框架扩展到不同的OS平台,比如Android和iOS
    的头像 发表于 05-20 16:28 ?1274次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b><b class='flag-5'>开发</b>:【SDK目录结构介绍】

    鸿蒙ArkUI-X平台开发:【bility开发说明(iOS端)】

    本文介绍将ArkUI框架扩展到iOS平台所需要的必要类及其使用说明开发者基于OpenHarmony,可复用大部分的应用代码(生命周期等)并可以部署到iOS
    的头像 发表于 05-21 14:35 ?1274次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b><b class='flag-5'>开发</b>:【<b class='flag-5'>bility</b><b class='flag-5'>开发</b><b class='flag-5'>说明</b>(iOS端)】

    ArkUI-X开发指南:【SDK配置和构建说明

    ArkUI-X SDK是ArkUI-X开源项目的编译产物,可将ArkUI-X SDK集成到现有Android和iOS应用工程中,使开发者基于
    的头像 发表于 05-25 16:48 ?3567次阅读
    <b class='flag-5'>ArkUI-X</b><b class='flag-5'>开发</b>指南:【SDK配置和构建<b class='flag-5'>说明</b>】

    ArkUI-X平台框架接入指南

    ArkUI平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS
    发表于 05-18 18:21

    ArkUI-XAndroid平台动态化开发指南

    本文介绍如何在Android平台进行ArkUI-X动态化开发,包括动态化目录规则及约束。 适用场景 动态化主要包括两个典型场景: 场景1:框架动态化,为了降低应用ROM体积占用,及满足
    发表于 06-15 23:33

    ArkUI-X平台应用改造指南

    的HarmonyOS Next应用,配套ArkUI-X平台框架,可以快速改造为平台应用,缩短开发
    发表于 06-16 23:05

    ArkUI-X平台技术落地-华为运动健康(一)

    开发工作量以及保证体验一致性,对于运动健康App而言,显得尤为重要。作为鸿蒙NEXT系统生态中的重要一员,ArkUI-X框架是我们平台技术
    发表于 06-18 22:53

    ArkUI-X应用工程结构说明

    )并可以部署到相应的OS平台,降低平台应用开发成本。 应用工程目录结构介绍 平台应用工程目录
    发表于 06-19 23:11

    资讯速递 | ArkUI-X 预览版已正式开源!

    OpenHarmony项目群技术指导委员会(以下简称“TSC”)-平台应用开发框架TSG所孵化项目 —— ArkUI-X,近期已正式开源 ,开发
    发表于 08-11 16:10

    鸿蒙ArkUI-X平台技术:【开发准备】

    本文档适用于ArkUI平台应用开发的初学者。通过开发环境搭建、应用工程创建、编译和运行,熟悉ArkUI
    的头像 发表于 05-24 10:40 ?1017次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b>技术:【<b class='flag-5'>开发</b>准备】

    鸿蒙ArkUI-X平台技术:【开发初体验】

    在DevEco Studio中导入ArkUI-X Sample,快速创建平台工程。
    的头像 发表于 05-17 15:54 ?1282次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b>技术:【<b class='flag-5'>开发</b>初体验】

    鸿蒙ArkUI-X平台开发:【 应用工程结构说明

    本文档配套ArkUI-X,将OpenHarmony ArkUI开发框架扩展到不同的OS平台,比如Android和iOS
    的头像 发表于 05-19 21:05 ?984次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平台</b><b class='flag-5'>开发</b>:【 应用工程结构<b class='flag-5'>说明</b>】

    鸿蒙ArkUI-X语言调用说明平台差异化【Android、ios动态化】

    ArkUI-X支持动态化,使用者可以根据自己需要动态发布平台内容,从而使平台部分和宿主应用进行解耦。
    的头像 发表于 05-23 14:38 ?1522次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b>语言调用<b class='flag-5'>说明</b>:<b class='flag-5'>平台</b>差异化【<b class='flag-5'>Android</b>、ios动态化】

    ArkUI-X构建Android平台AAR及使用

    本教程主要讲述如何利用ArkUI-X SDK完成Android AAR开发,实现基于ArkTS的声明式开发范式在android
    的头像 发表于 06-12 22:45 ?260次阅读