那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)學(xué)習(xí):【appspawn應(yīng)用孵化組件】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-18 22:01 ? 次閱讀

功能簡(jiǎn)介

應(yīng)用孵化器,負(fù)責(zé)接受應(yīng)用程序框架的命令孵化應(yīng)用進(jìn)程,設(shè)置其對(duì)應(yīng)權(quán)限,并調(diào)用應(yīng)用程序框架的入口。

基本概念

appspawn注冊(cè)的服務(wù)名稱為“appspawn”。appspawn 通過監(jiān)聽本地socket,接收來(lái)自客戶端的請(qǐng)求消息。消息類型為AppParameter的結(jié)構(gòu)體,定義路徑為:“interfaces/innerkits/include/appspawn_msg.h“。

表 1 字段說(shuō)明

字段名說(shuō)明
processName即將啟動(dòng)的應(yīng)用服務(wù)進(jìn)程名,最大256字節(jié)。
bundleName即將啟動(dòng)的應(yīng)用程序包名,最大256字節(jié)。
soPath即應(yīng)用程序指定的動(dòng)態(tài)庫(kù)的路徑,最大256字節(jié)。
uid即將啟動(dòng)的應(yīng)用進(jìn)程的uid。
gid即將啟動(dòng)的應(yīng)用進(jìn)程的gid。
gidTable即將啟動(dòng)的應(yīng)用進(jìn)程組信息,長(zhǎng)度由gidCount指定,最大支持64個(gè)進(jìn)程組,必須為正值。
gidCount即將啟動(dòng)的應(yīng)用進(jìn)程組個(gè)數(shù)。
accessTokenId即應(yīng)用進(jìn)程權(quán)限控制的token id。
apl即應(yīng)用進(jìn)程權(quán)限控制的apl,最大32字節(jié).
renderCmd即圖形圖像渲染命令, 最大1024字節(jié)。
flags即冷啟動(dòng)標(biāo)志位。
pid即渲染進(jìn)程pid,查詢渲染進(jìn)程退出狀態(tài)。
AppOperateType即App操作類型,0: 默認(rèn)狀態(tài); 1:獲取渲染終止?fàn)顟B(tài)。

約束與限制

僅限標(biāo)準(zhǔn)系統(tǒng)下使用

開發(fā)指導(dǎo)

場(chǎng)景介紹

  • 安全控制
    支持為app設(shè)置SELinux標(biāo)簽
    SELinux標(biāo)簽接口代碼如下:

    AppSpawnClientExt *appProperty = (AppSpawnClientExt *)client;
    HapContext hapContext;
    ret = hapContext.HapDomainSetcontext(appProperty- >property.apl, appProperty- >property.processName);
    if (ret != 0) {
        APPSPAWN_LOGE("AppSpawnServer::Failed to hap domain set context, errno = %d %s",
            errno, appProperty- >property.apl);
    } else {
        APPSPAWN_LOGI("AppSpawnServer::Success to hap domain set context, ret = %d", ret);
    }
    
  • 應(yīng)用進(jìn)程控制

    • 支持為app設(shè)置AccessToken。
    • 支持重啟前,appspawn停止后,可同時(shí)停止所有已孵化的app進(jìn)程。

    AccessToken接口代碼如下:

    AppSpawnClientExt *appProperty = (AppSpawnClientExt *)client;
    int32_t ret = SetSelfTokenID(appProperty- >property.accessTokenId);
    APPSPAWN_LOGI("AppSpawnServer::set access token id = %d, ret = %d %d", appProperty- >property.accessTokenId, ret, getuid());
    
  • 冷啟動(dòng)
    支持通過aa命令冷啟動(dòng)應(yīng)用。

    param set startup.appspawn.cold.boot 1 // 打開冷啟動(dòng)開關(guān)
    aa start -d 12345 -a $name -b $package -C
    參考:
    aa start -d 12345 -a ohos.acts.startup.sysparam.function.MainAbility -b ohos.acts.startup.sysparam.function -C
    
  • 應(yīng)用沙盒
    應(yīng)用獨(dú)立運(yùn)行于自身沙盒環(huán)境。應(yīng)用沙盒中,只保留應(yīng)用依賴的庫(kù)或文件,同時(shí),應(yīng)用之間數(shù)據(jù)的也進(jìn)行隔離。

接口說(shuō)明

接口定義路徑: "/base/startup/appspawn/interfaces/innerkits/include/client_socket.h",接口說(shuō)明參見表2。

表 2 接口說(shuō)明

接口名說(shuō)明
CreateClient創(chuàng)建client。
CloseClient關(guān)閉client。
ConnectSocket向appspawn服務(wù)發(fā)起連接請(qǐng)求。
WriteSocketMessage發(fā)送消息到appspawn服務(wù)。
ReadSocketMessage接收來(lái)自appspawn服務(wù)的消息。

開發(fā)步驟

沙盒配置說(shuō)明:

{
      "common" : [{                                           // 應(yīng)用沙盒通用掛載項(xiàng)
          "top-sandbox-switch": "ON",                         // 沙盒總開關(guān) ON: 打開, OFF: 關(guān)閉
          "app-base" : [{
              "sandbox-root" : "/mnt/sandbox/< PackageName >",  // 沙盒根路徑
              "mount-paths" : [{
                      "src-path" : "/config",                 // mount的源目錄
                      "sandbox-path" : "/config",             // 沙盒掛載路徑
                      "sandbox-flags" : [ "bind", "rec" ],    // 掛載方式
                      "check-action-status": "false"          // false 不檢查當(dāng)前項(xiàng)掛載結(jié)果, true: 檢查當(dāng)前項(xiàng)掛載結(jié)果
                  }
              ],
              "symbol-links" : [{                             // link 的目錄項(xiàng)
                      "target-name" : "/system/bin",          // link 的源目錄
                      "link-name" : "/bin",                   // 鏈接名稱
                      "check-action-status": "false"
                  }
              ]
          }],
      // 應(yīng)用獨(dú)有配置參考
      "individual" : [{                                        // 個(gè)別應(yīng)用單獨(dú)掛載項(xiàng)
          "com.ohos.medialibrary.MediaLibraryDataA" : [{       // 應(yīng)用名
              "sandbox-switch": "ON",                          // ON: 掛載沙盒路徑, OFF: 掛載根路徑
              "sandbox-root" : "/mnt/sandbox/< PackageName >",   // 沙盒根路徑
              "mount-paths" : [{
                      "src-path" : "/storage/media/< currentUserId >",
                      "sandbox-path" : "/storage/media",
                      "sandbox-flags" : [ "bind", "rec" ],
                      "check-action-status": "false"
                  }
              ],
              "symbol-links" : []
          }]
      }]
  }

參考沙盒配置說(shuō)明,修改配置文件。

  • 進(jìn)入設(shè)備下:/system/etc/sandbox/路徑下,直接修改對(duì)應(yīng)沙盒配置文件, 重新啟動(dòng)。
  • 代碼路徑下:base/startup/appspawn_standard, 修改對(duì)應(yīng)沙盒配置文件。

表 3 沙盒配置文件解釋

沙盒配置文件解釋
appdata-sandbox64.json64位系統(tǒng)的沙盒配置
appdata-sandbox.json32位系統(tǒng)的沙盒配置
product-sandbox.json應(yīng)用沙盒的產(chǎn)品差異化配置

開發(fā)實(shí)例

以launcher應(yīng)用新增獨(dú)有配置應(yīng)用為例:

"com.ohos.launcher" : [{
    "sandbox-switch": "ON",
    "sandbox-root" : "/mnt/sandbox/< PackageName >",
    "mount-paths" : [{
            "src-path" : "/data/app/el1/bundle/public/",
            "sandbox-path" : "/data/bundles/",
            "sandbox-flags" : [ "bind", "rec" ],
            "check-action-status": "true"
        }
    ],
    "symbol-links" : []
}],

常見問題

冷啟動(dòng)應(yīng)用失敗

現(xiàn)象描述
通過命令冷啟動(dòng)應(yīng)用, 應(yīng)用拉起失敗。

解決方法

  1. 需要設(shè)置 param set startup.appspawn.cold.boot 1生效。

  2. 確認(rèn)冷啟動(dòng)命令是否正確。

    審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2392

    瀏覽量

    43058
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AIGC入門及鴻蒙入門

    JDK、配置SDK等。 3. 開發(fā)實(shí)踐: 學(xué)習(xí)鴻蒙系統(tǒng)的架構(gòu)和API,了解其組件化、分布式等特性。 通過官方文檔和社區(qū)資源,學(xué)習(xí)和掌握
    發(fā)表于 01-13 10:32

    鴻蒙原生開源庫(kù)ViewPool在OpenHarmony社區(qū)正式上線

    近日,由伙伴參與共建的鴻蒙原生開源庫(kù)“ViewPool”在OpenHarmony社區(qū)正式上線。這個(gè)開發(fā)庫(kù)是基于OpenHarmony技術(shù)孵化的成果,充分發(fā)揮了平臺(tái)的技術(shù)特性,同時(shí)融入了伙伴在應(yīng)用
    的頭像 發(fā)表于 12-20 14:44 ?305次閱讀

    鴻蒙開發(fā)就業(yè)前景到底怎么樣?

    鴻蒙, 作為華為自主研發(fā)的基于微內(nèi)核的下一代操作系統(tǒng),正在逐漸走進(jìn)人們的視野 。隨著鴻蒙系統(tǒng)的不斷發(fā)展和完善,越來(lái)越多的人開始關(guān)注鴻蒙開發(fā)這一領(lǐng)域,想要了解
    發(fā)表于 05-09 17:37

    最新開源代碼證實(shí)!“鴻蒙原生版”微信正在積極開發(fā)

    /Tencent/MMKV/wiki/ohos_setup 最后 **如果大家覺得這篇內(nèi)容對(duì)學(xué)習(xí)鴻蒙開發(fā)有幫助,我想邀請(qǐng)大家?guī)臀胰齻€(gè)小忙: 點(diǎn)贊,轉(zhuǎn)發(fā),有你們的 『點(diǎn)贊和評(píng)論』,才是我創(chuàng)造的動(dòng)力。 關(guān)注小編,同時(shí)可以期待后續(xù)文章
    發(fā)表于 05-08 17:08

    鴻蒙OS崛起,鴻蒙應(yīng)用開發(fā)工程師成市場(chǎng)新寵

    beta版,為開發(fā)者提供了一整套的開發(fā)工具和資源,極大地提高了開發(fā)效率。 據(jù)了解,通過螞蟻數(shù)科mPaaS提供的模塊化工具和組件開發(fā)者可以在
    發(fā)表于 04-29 17:32

    鴻蒙OS開發(fā)學(xué)習(xí):【尺寸適配實(shí)現(xiàn)】

    鴻蒙開發(fā)中,尺寸適配是一個(gè)重要的概念,它可以幫助我們?cè)诓煌聊怀叽绲脑O(shè)備上正確顯示和布局我們的應(yīng)用程序。本文將介紹如何在鴻蒙開發(fā)中實(shí)現(xiàn)尺寸適配的方法。
    的頭像 發(fā)表于 04-10 16:05 ?1861次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b><b class='flag-5'>學(xué)習(xí)</b>:【尺寸適配實(shí)現(xiàn)】

    鴻蒙OS開發(fā)實(shí)例:【組件化模式】

    組件化一直是移動(dòng)端比較流行的開發(fā)方式,有著編譯運(yùn)行快,業(yè)務(wù)邏輯分明,任務(wù)劃分清晰等優(yōu)點(diǎn),針對(duì)Android端的組件化;與Android端的組件化相比,HarmonyOS的
    的頭像 發(fā)表于 04-07 17:44 ?714次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實(shí)例:【<b class='flag-5'>組件</b>化模式】

    鴻蒙實(shí)戰(zhàn)開發(fā)學(xué)習(xí)【FaultLoggerd組件

    Faultloggerd部件是OpenHarmony中C/C++運(yùn)行時(shí)崩潰臨時(shí)日志的生成及管理模塊。面向基于 Rust 開發(fā)的部件,F(xiàn)aultloggerd 提供了Rust Panic故障日志生成能力。系統(tǒng)開發(fā)者可以在預(yù)設(shè)的路徑下找到故障日志,定位相關(guān)問題。
    的頭像 發(fā)表于 03-17 20:39 ?574次閱讀
    <b class='flag-5'>鴻蒙</b>實(shí)戰(zhàn)<b class='flag-5'>開發(fā)</b><b class='flag-5'>學(xué)習(xí)</b>【FaultLoggerd<b class='flag-5'>組件</b>】

    鴻蒙開發(fā)學(xué)習(xí):【媒體引擎組件

    HiStreamer是一個(gè)輕量級(jí)的媒體引擎組件,提供播放、錄制等場(chǎng)景的媒體數(shù)據(jù)流水線處理。
    的頭像 發(fā)表于 03-11 17:16 ?556次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>學(xué)習(xí)</b>:【媒體引擎<b class='flag-5'>組件</b>】

    鴻蒙開發(fā)學(xué)習(xí):【ets_frontend組件

    ets_frontend組件采用命令行交互方式,支持將JavaScript代碼轉(zhuǎn)換為方舟字節(jié)碼文件,使其能夠在方舟運(yùn)行時(shí)上運(yùn)行。支持Windows/Linux/MacOS平臺(tái)。方舟前端工具在linux平臺(tái)上可通過全量編譯或指定編譯前端工具鏈獲取。
    的頭像 發(fā)表于 03-10 19:58 ?389次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>學(xué)習(xí)</b>:【ets_frontend<b class='flag-5'>組件</b>】

    鴻蒙實(shí)戰(zhàn)開發(fā)Camera組件:【相機(jī)】

    相機(jī)組件支持相機(jī)業(yè)務(wù)的開發(fā)開發(fā)者可以通過已開放的接口實(shí)現(xiàn)相機(jī)硬件的訪問、操作和新功能開發(fā),最常見的操作如:預(yù)覽、拍照和錄像等。
    的頭像 發(fā)表于 03-08 16:20 ?708次閱讀
    <b class='flag-5'>鴻蒙</b>實(shí)戰(zhàn)<b class='flag-5'>開發(fā)</b>Camera<b class='flag-5'>組件</b>:【相機(jī)】

    深圳市24年,實(shí)現(xiàn)鴻蒙原生應(yīng)用數(shù)占全國(guó)總量10%以上

    有更多的鴻蒙人才。鴻蒙開發(fā)工程師也將會(huì)迎來(lái)爆發(fā)式的增長(zhǎng),學(xué)習(xí)鴻蒙勢(shì)在必行! ?要從事鴻蒙
    發(fā)表于 03-04 21:42

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ? 最后呢,很多開發(fā)朋友不知道需要學(xué)習(xí)那些鴻蒙技術(shù)?
    發(fā)表于 03-03 21:29

    學(xué)習(xí)鴻蒙背后的價(jià)值?星河版開放如何學(xué)習(xí)

    需要有更多的鴻蒙人才;鴻蒙開發(fā)工程師也將會(huì)迎來(lái)爆發(fā)式的增長(zhǎng)! 所以學(xué)習(xí)鴻蒙勢(shì)在必行,而大部分人都能適合學(xué)
    發(fā)表于 02-22 20:55

    未來(lái)從事鴻蒙開發(fā)?是否會(huì)有前景?

    應(yīng)屆畢業(yè)生:有一定Java編程基礎(chǔ),系統(tǒng)學(xué)習(xí)鴻蒙應(yīng)用開發(fā) 想轉(zhuǎn)行/跨行人員:求職、轉(zhuǎn)行,希望趕上時(shí)代風(fēng)口并彎道超車 IT相關(guān)工作者:工作遇上瓶頸,想提升技能,升職加薪 鴻蒙
    發(fā)表于 02-19 21:31
    娱乐城彩金| 百家乐游戏高手| 棋牌游戏易发| 高楼24层风水好吗| 云鼎娱乐城优惠活动| 百家乐能作弊吗| 桃江县| 百家乐十赌九诈| 澳门百家乐官网下路写法| 百家乐必胜绝| 澳门百家乐官网| 大发888娱乐城登录| 百家乐官网图形的秘密破解| 六合彩开奖现场直播| 真钱百家乐公司哪个好| 娱乐城百家乐官网打不开| 威尼斯人娱乐城博彩网站| 澳门百家乐官网必赢技巧| 大发娱乐场官方下载| 博彩百家乐软件| 澳门百家乐官网怎样下注| 老虎机干扰器| 属狗与属猪能做生意吗| 台江县| 帝王百家乐的玩法技巧和规则| 试玩百家乐官网1000| 网上现金游戏| 百家乐最安全打法| 索雷尔百家乐官网的玩法技巧和规则| 龙博娱乐城| 凱旋门百家乐的玩法技巧和规则| 首席百家乐官网的玩法技巧和规则 | 大发888娱乐城dafa888dafa8| 百家乐全程打庄| 豪华百家乐官网桌子厂家| 516棋牌游戏下载| 百家乐之三姐妹赌博机| 网上百家乐官网真坑人| 注册送现金| 百家乐双倍派彩的娱乐城| 百家乐官网规律和方法|