openharmony hap应用开机自动安装及目录介绍 原创
春节不停更,此文正在参加「星光计划-春节更帖活动
1 解决一下之前文章的遗留问题
3516开发板变身小熊派-鸿蒙·叔
当时系统启动后应用没有立刻安装成功,这是要解决的问题,还有一个问题是手动安装的时候要提前运行
./bm set -d enable
因为有个参数 g_isDebugMode默认是false
2 当时有两种猜测一个是签名,一个是配置文件
我把三方应用改成和自带应用一样的配置,发现没成功,所以这个猜测是错误的。
然后根据安装命令往里边捋代码,发现是由于鸿蒙的应用效验模块造成的,这个模块路径是
./base/security/appverify/interfaces/innerkits/appverify_lite
官方文档介绍如下,自己看吧,免得我介绍多了,影响我文章的原创性
https://gitee.com/openharmony/security_appverify
OpenHarmony用户程序框架子系统负责应用的安装。在接收到应用安装包之后,应用程序框架子系统需要解析安装包的签名数据,然后使用应用完整性校验模块的API对签名进行验证,只有校验成功之后才允许安装此应用. 应用完整性校验模块在校验安装包签名数据时,会使用系统预置的公钥证书进行验签。
于是我把g_isDebugMode改成true,然后编译烧录运行,发现依然不好使,没办法呀,还得找代码,这次跳出base目录
去foundation目录找到了代码调用流程,文件路径是
/foundation/appexecfwk/standard/services/bundlemgr/src/base_bundle_installer.cpp
这个文件中用到了一个变量叫做isSignMode_,如果为true调用效验hap文件,验证签名之类的
改变量路径是
./foundation/appexecfwk/appexecfwk_lite/services/bundlemgr_lite/include/bundle_manager_service.h
把它改为false,然后编译烧录,启动后,三方应用已经出现在桌面
说明通过修改两个变量默认值后成功,看着挺简单,可以找起来追查代码不容易呀。
3 介绍一下系统启动后的应用路径
代码改好之后,还得按照rootfs的路径把安装包放到指定位置,这样才能保证启动自动安装成功
系统启动安装应用是是从如下两个位置读取hap文件的
/system/internal
/system/external
安装完之后存放位置为/storage/app
这个路径在固件的原始rootfs中是不存在的,它的创建是在系统启动时完成,分为三个子目录
这个是安装好的存放路径,把hap解压后放到这里
这个目录是应用数据存放路径
这个是应用的配置文件,用户id,权限相关的存放路径