HarmonyOs和Android的关联性4:Ability到底是啥 原创

鸿蒙开发
发布于 2021-8-6 16:42
浏览
1收藏

HarmonyOs和Android的关联性3:寻找activity
链接:https://harmonyos.51cto.com/posts/7598
在上一篇中我们大体得到结论,每个Ability都会生成对应的AbilityShellActivity,而AbilityShellActivity中持有AbilityShellActivityDelegate,然后调用了Activity中的函数,其实这个结论是不完全对的。
看一下官方对Ability的定义,感觉Ability同时具备了安卓中service和provide的功能。
HarmonyOs和Android的关联性4:Ability到底是啥-鸿蒙开发者社区
我们通过例子查看一下,建立一个Service模板的PA类型的Ability,定义如下:
HarmonyOs和Android的关联性4:Ability到底是啥-鸿蒙开发者社区
然后反编译查看,发现这个Ability生成的不是AbilityShellActivity,而是AbilityShellSevice
HarmonyOs和Android的关联性4:Ability到底是啥-鸿蒙开发者社区
Data模板的Ability不用试了,应该有个类叫做AbilityShellProvider,鸿蒙中对应的相关类如下:
HarmonyOs和Android的关联性4:Ability到底是啥-鸿蒙开发者社区
着重分析harmony里调用安卓类库的地方。

今天总揽以下几个文件的关联关系,从类的继承关系上看,如下:

public class AbilityShellActivity extends Activity implements IAbilityShell {

public class AbilityShellActivityDelegate extends AbilityShellDelegate {

public class AbilityShellDelegate {

public class AbilityShellObserver extends ContentObserver {

public class AbilityShellProvider extends ContentProvider {

public class AbilityShellProviderDelegate extends AbilityShellDelegate {

public class AbilityShellService extends Service {

public class AbilityShellServiceDelegate extends AbilityShellDelegate {

看一下这几个定义就明白了,就是鸿蒙吧activity,service和provide都统一抽象成ability了,在ability中再去区分
类型,AbilityShell有Activity,Service,Provider三种,AbilityShellDelegate也有ctivity,Service,Provider三种,然后在里边分别再去调用android中的Activity,Service,Provider,从而实现了对android组件的调用与管理。
但是我们在开发工具里是看不到android类库的,HarmonyOs开发工具里android所有的api都被隐藏了,我们只能完全根据鸿蒙的api就写app,这也正常,如果可以调用android的东西,还叫什么鸿蒙开发呀。
但是开发工具生成的hap文件还是有apk的文件的,我想这是有两方面的考虑,一是鸿蒙开发速度还没有那么快,暂时还不能完全抛弃android,二是鸿蒙要兼容安卓,也不能去掉android的api,所以鸿蒙的framework包含了安卓framework,在她基础上增加了鸿蒙的java包,如下包:
HarmonyOs和Android的关联性4:Ability到底是啥-鸿蒙开发者社区
这些可以说是鸿蒙framework层的代码目录,因为鸿蒙生态还没做起来,所以安卓和鸿蒙并存,等鸿蒙做起来后,我想安卓的framework的代码就会去掉,到那时候安卓apk就不能安装在鸿蒙os上了

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
3
收藏 1
回复
举报
回复
    相关推荐