在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發學習:【appspawn應用孵化組件】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-18 22:01 ? 次閱讀

功能簡介

應用孵化器,負責接受應用程序框架的命令孵化應用進程,設置其對應權限,并調用應用程序框架的入口。

基本概念

appspawn注冊的服務名稱為“appspawn”。appspawn 通過監聽本地socket,接收來自客戶端的請求消息。消息類型為AppParameter的結構體,定義路徑為:“interfaces/innerkits/include/appspawn_msg.h“。

表 1 字段說明

字段名說明
processName即將啟動的應用服務進程名,最大256字節。
bundleName即將啟動的應用程序包名,最大256字節。
soPath即應用程序指定的動態庫的路徑,最大256字節。
uid即將啟動的應用進程的uid。
gid即將啟動的應用進程的gid。
gidTable即將啟動的應用進程組信息,長度由gidCount指定,最大支持64個進程組,必須為正值。
gidCount即將啟動的應用進程組個數。
accessTokenId即應用進程權限控制的token id。
apl即應用進程權限控制的apl,最大32字節.
renderCmd即圖形圖像渲染命令, 最大1024字節。
flags即冷啟動標志位。
pid即渲染進程pid,查詢渲染進程退出狀態。
AppOperateType即App操作類型,0: 默認狀態; 1:獲取渲染終止狀態。

約束與限制

僅限標準系統下使用

開發指導

場景介紹

  • 安全控制
    支持為app設置SELinux標簽
    SELinux標簽接口代碼如下:

    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);
    }
    
  • 應用進程控制

    • 支持為app設置AccessToken。
    • 支持重啟前,appspawn停止后,可同時停止所有已孵化的app進程。

    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());
    
  • 冷啟動
    支持通過aa命令冷啟動應用。

    param set startup.appspawn.cold.boot 1 // 打開冷啟動開關
    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
    
  • 應用沙盒
    應用獨立運行于自身沙盒環境。應用沙盒中,只保留應用依賴的庫或文件,同時,應用之間數據的也進行隔離。

接口說明

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

表 2 接口說明

接口名說明
CreateClient創建client。
CloseClient關閉client。
ConnectSocket向appspawn服務發起連接請求。
WriteSocketMessage發送消息到appspawn服務。
ReadSocketMessage接收來自appspawn服務的消息。

開發步驟

沙盒配置說明:

{
      "common" : [{                                           // 應用沙盒通用掛載項
          "top-sandbox-switch": "ON",                         // 沙盒總開關 ON: 打開, OFF: 關閉
          "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 不檢查當前項掛載結果, true: 檢查當前項掛載結果
                  }
              ],
              "symbol-links" : [{                             // link 的目錄項
                      "target-name" : "/system/bin",          // link 的源目錄
                      "link-name" : "/bin",                   // 鏈接名稱
                      "check-action-status": "false"
                  }
              ]
          }],
      // 應用獨有配置參考
      "individual" : [{                                        // 個別應用單獨掛載項
          "com.ohos.medialibrary.MediaLibraryDataA" : [{       // 應用名
              "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" : []
          }]
      }]
  }

參考沙盒配置說明,修改配置文件。

  • 進入設備下:/system/etc/sandbox/路徑下,直接修改對應沙盒配置文件, 重新啟動。
  • 代碼路徑下:base/startup/appspawn_standard, 修改對應沙盒配置文件。

表 3 沙盒配置文件解釋

沙盒配置文件解釋
appdata-sandbox64.json64位系統的沙盒配置
appdata-sandbox.json32位系統的沙盒配置
product-sandbox.json應用沙盒的產品差異化配置

開發實例

以launcher應用新增獨有配置應用為例:

"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" : []
}],

常見問題

冷啟動應用失敗

現象描述
通過命令冷啟動應用, 應用拉起失敗。

解決方法

  1. 需要設置 param set startup.appspawn.cold.boot 1生效。

  2. 確認冷啟動命令是否正確。

    審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2365

    瀏覽量

    42894
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發就業前景到底怎么樣?

    鴻蒙, 作為華為自主研發的基于微內核的下一代操作系統,正在逐漸走進人們的視野 。隨著鴻蒙系統的不斷發展和完善,越來越多的人開始關注鴻蒙開發這一領域,想要了解
    發表于 05-09 17:37

    鴻蒙OS開發學習:【尺寸適配實現】

    鴻蒙開發中,尺寸適配是一個重要的概念,它可以幫助我們在不同屏幕尺寸的設備上正確顯示和布局我們的應用程序。本文將介紹如何在鴻蒙開發中實現尺寸適配的方法。
    的頭像 發表于 04-10 16:05 ?1778次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b><b class='flag-5'>學習</b>:【尺寸適配實現】

    鴻蒙OS開發實例:【組件化模式】

    組件化一直是移動端比較流行的開發方式,有著編譯運行快,業務邏輯分明,任務劃分清晰等優點,針對Android端的組件化;與Android端的組件化相比,HarmonyOS的
    的頭像 發表于 04-07 17:44 ?668次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>實例:【<b class='flag-5'>組件</b>化模式】

    鴻蒙開發學習:【媒體引擎組件

    HiStreamer是一個輕量級的媒體引擎組件,提供播放、錄制等場景的媒體數據流水線處理。
    的頭像 發表于 03-11 17:16 ?526次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>學習</b>:【媒體引擎<b class='flag-5'>組件</b>】

    鴻蒙實戰項目開發:【短信服務】

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

    學習鴻蒙背后的價值?星河版開放如何學習

    需要有更多的鴻蒙人才;鴻蒙開發工程師也將會迎來爆發式的增長! 所以學習鴻蒙勢在必行,而大部分人都能適合學
    發表于 02-22 20:55

    未來從事鴻蒙開發?是否會有前景?

    應屆畢業生:有一定Java編程基礎,系統學習鴻蒙應用開發 想轉行/跨行人員:求職、轉行,希望趕上時代風口并彎道超車 IT相關工作者:工作遇上瓶頸,想提升技能,升職加薪 鴻蒙
    發表于 02-19 21:31

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

    隨著鴻蒙系統的不斷完善,許多應用廠商都希望將自己的應用移植到鴻蒙平臺上。最近,Taro 發布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開發鴻蒙原生應用,也可將現有的
    的頭像 發表于 02-02 16:09 ?901次閱讀
    使用 Taro <b class='flag-5'>開發</b><b class='flag-5'>鴻蒙</b>原生應用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應用<b class='flag-5'>開發</b>指南

    鴻蒙ArkUI開發-Video組件的使用

    以視頻功能為例,在應用開發過程中,我們需要通過ArkUI提供的Video組件為應用增加基礎的視頻播放功能。借助Video組件,我們可以實現視頻的播放功能并控制其播放狀態。常見的視頻播放場景包括觀看網絡上的較為流行的短視頻,也包括
    的頭像 發表于 01-23 16:59 ?1369次閱讀
    <b class='flag-5'>鴻蒙</b>ArkUI<b class='flag-5'>開發</b>-Video<b class='flag-5'>組件</b>的使用

    鴻蒙ArkUI開發-Tabs組件的使用

    鴻蒙ArkUI開發-Tabs組件的使用
    的頭像 發表于 01-19 16:01 ?1944次閱讀
    <b class='flag-5'>鴻蒙</b>ArkUI<b class='flag-5'>開發</b>-Tabs<b class='flag-5'>組件</b>的使用

    鴻蒙開發-ArkUI 組件基礎

    1 組件介紹 組件(Component)是界面搭建與顯示的最小單位,HarmonyOS ArkUI聲明式開發范式為開發者提供了豐富多樣的UI組件
    發表于 01-17 19:31

    鴻蒙開發OpenHarmony組件復用案例

    ) } }, item => item) } } } 本文主要是對鴻蒙開發基礎當中的OpenHarmony技術組件復用示例, 更多鴻蒙開發
    發表于 01-15 17:37

    鴻蒙開發基礎-Web組件之cookie操作

    }) ... } ... 本文章主要是對鴻蒙開發當中ArkTS語言的基礎應用實戰,Web組件里的cookie操作。更多的鴻蒙應用開發
    發表于 01-14 21:31

    免費學習鴻蒙(HarmonyOS)開發,一些地址分享

    國內一流高校。通過鴻蒙班的設立,高校可以為學生提供專業的鴻蒙OS學習環境和豐富的實踐機會,培養出更多的鴻蒙開發人才,為
    發表于 01-12 20:48

    鴻蒙基礎開發實戰-(ArkTS)像素轉換

    的使用。通過像素轉換案例,向開發者講解了如何使用像素單位設置組件的尺寸、字體的大小以及不同像素單位之間的轉換方法。更多鴻蒙4.0的學習,可以前往主頁
    發表于 01-11 16:53
    主站蜘蛛池模板: 日本在线www| 欧美一级特黄啪啪片免费看| 久久精品亚洲热综合一本奇米| 俄罗斯女人69xxx| 色视频免费观看高清完整| 乱好看的的激情伦小说| 在线三级网| 天堂网成人| 日韩一区二区三区免费| 欧美福利网| 国产视频日本| 午夜视频在线观看网站| 秋霞麻豆| 无毒三级| 色五夜婷婷| 欧美色图亚洲| 久久电影福利| 最近免费hd| 欧美jizz大又粗| 性欧美极品| 精品女同同性视频很黄很色| 在线天堂bt种子| 日本黄色片在线观看| 亚洲国产日韩精品怡红院| 一女被多男玩很肉很黄文| 一区二区三区四区视频在线观看| 五月激情丁香网| 亚洲网站在线看| 亚洲综合色视频| 香港三级在线视频| 日本黄色片在线播放| 国产亚洲欧美视频| 手机在线看片国产| 视频在线观看网站| 最新国产你懂的在线网址| 日韩欧免费一区二区三区| 国产一区二区在线不卡| 天天摸天天澡天天碰天天弄 | 性欧美大战久久久久久久| 日本动漫在线看| 成人免费观看一区二区|