android和harmonyos对比,HarmonyOS和Android深度对比
HarmonyOS APP 工程结构HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature
HarmonyOS APP 工程结构

HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。
一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型。
Entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
Feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。
HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
工程目录结构对比
[$]
HarmonyOS 采用Java语言的工程目录结构如下图所示:

Android 工程目录如下图所示:

HarmonyOS 采用Java语言的工程目录结构 和 Android 工程目录结构对比如下:
目录结构AndroidHarmonyOS
源码目录project\entry\src\main\javaproject\app\src\main\java
资源文件目录project\app\src\main\resproject\entry\src\main\resources
清单文件project\app\src\main\AndroidManifest.xmlproject\entry\src\main\config.json
依赖文件目录project\app\libsproject\entry\libs
模块编译配置文件project\app\build.gradleproject\entry\build.gradle
gradle目录project\gradleproject\gradle
另外,HarmonyOS 还可以采用 Javascript 语言进行编写,工程目录结构如下图所示:

pages 目录:
pages 文件夹下可以包含1个或多个页面,每个页面都需要创建一个文件夹(如图中的index)。页面文件夹下主要包含3中文件类型:css、js和htm文件
pages/index/index.html 文件 :该html文件定义了页面的布局结构,使用到的组件,以及这些组件的层级关系。
pages/index/index.css 文件:该css文件定义了页面的样式与布局,包含样式选择器和各种样式属性 。
pages/index/index.js 文件: 该js文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有逻辑关系,比如数据、事件等。
app.js 目录:
该文件是全局的 Javascript 逻辑文件和应用的生命周期管理。
安装包内部对比
Android开发的小伙伴都知道,Android应用最终会被打包成 .apk文件,.apk也是Android 应用的安装包后缀。那么对于 HarmonyOS 应用,它的安装包到底是什么呢?
采用 HarmonyOS 开发的应用会被构建成 .hap文件,.hap是由代码、资源、第三方库及应用配置文件组成的模块包。
不同的 hap 可被部署到不同类型的设备上,那 hap 的内部结构 又是怎么样子的呢?
hap 和 apk 类似都是应用的归档文件,都是 基于的 ZIP 文件格式,你可以将后缀名改为.zip文件,然后对其进行解压,得到最终文件
.apk文件解压以后的文件如下图所示:

.hap 文件解压以后的文件如下图所示:

清单文件对比
清单文件是开发一款应用必不可少的构成部分,接下来我们来对比下鸿蒙OS的清单文件和Android清单文件的异同。
在Android中的清单文件为 AndroidManifest.xml文件,而 鸿蒙OS的清单文件为 config.json
接下来我们来通过对比同一款应用的config.json与AndroidManifest.xml文件,来看下两者之间的异同:
config.json文件
{
"app": {
"bundleName": "com.example.helloword",
"vendor": "example",
"version": {
"code": 1,
"name": "1.0"
},
"apiVersion": {
"compatible": 3,
"target": 3
}
},
"deviceConfig": {},
"module": {
"package": "com.example.helloword",
"name": ".HelloWord",
"reqCapabilities": [
"video_support"
],
"deviceType": [
"tv"
],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry"
},
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"orientation": "landscape",
"formEnabled": false,
"name": "com.example.helloword.MainAbility",
"icon": "$media:icon",
"description": "$string:mainability_description",
"label": "HelloWord",
"type": "page",
"launchType": "standard"
},
{
"orientation": "landscape",
"name": "com.example.helloword.MeAbility",
"icon": "$media:icon",
"description": "$string:meability_description",
"label": "entry",
"type": "page",
"launchType": "standard"
}
]
}
}
AndroidManifest.xml
package="com.hbkykj.helloword">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
鸿蒙OS应用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三个部分组成,缺一不可。
app :表示应用的全局配置信息。同一个应用的不同HAP包的“app”配置必须保持一致
deviceConfig:表示应用在具体设备上的配置信息。
module:表示HAP包的配置信息。该标签下的配置只对当前HAP包生效
[/$]
更多推荐


所有评论(0)