博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu OS应用Runtime Enviroment
阅读量:6113 次
发布时间:2019-06-21

本文共 4016 字,大约阅读时间需要 13 分钟。

在这篇文章中。我们将介绍Ubuntu OS的Runtime Environment。在文章“”中,我们看见它里面有介绍一个应用的runtime环境。这里,我们通过一个样例来显示一个应用的runtime环境究竟是如何的。

在这里我们能够參阅我曾经的文章“”,我们下载文章中的例程:

bzr branch lp:~liu-xiao-guo/debiantrial/readenv

在一个Terminal中打入上述的句子,就能够下载例程中的软件。

同一时候,我们对我们的主程序文件“ReadEnv.qml”做例如以下的改动:

import QtQuick 2.0import Ubuntu.Components 0.1import Ubuntu.Components.ListItems 0.1 as ListItemimport ReadEnv 1.0import "ui"/*!    \brief MainView with Tabs element.           First Tab has a single Label and           second Tab has a single ToolbarAction.*/MainView {    id: root    // objectName for functional testing purposes (autopilot-qt5)    objectName: "mainView"    // Note! applicationName needs to match the "name" field of the click manifest    applicationName: "com.ubuntu.developer.liu-xiao-guo.ReadEnv"    anchorToKeyboard: true    /*     This property enables the application to change orientation     when the device is rotated. The default is false.    */    //automaticOrientation: true    width: units.gu(50)    height: units.gu(75)    property string app_pkgname    ReadEnv {        id: readEnv    }    Flickable {        id: scrollWidget        anchors.fill: parent        contentHeight: contentItem.childrenRect.height        boundsBehavior: (contentHeight > root.height) ?

Flickable.DragAndOvershootBounds : Flickable.StopAtBounds /* Set the direction to workaround https://bugreports.qt-project.org/browse/QTBUG-31905 otherwise the UI might end up in a situation where scrolling doesn't work */ flickableDirection: Flickable.VerticalFlick Column { anchors.left: parent.left anchors.right: parent.right ListItem.Base { height: ubuntuLabel.height + runtime.height + units.gu(6) Column { anchors.left: parent.left anchors.right: parent.right anchors.centerIn: parent spacing: units.gu(2) Label { id: ubuntuLabel anchors.horizontalCenter: parent.horizontalCenter text: "" fontSize: "x-large" } Label { id: runtime anchors.horizontalCenter: parent.horizontalCenter text: "Runtime Environment" } } } ListItem.Subtitled { text: i18n.tr("UBUNTU_APPLICATION_ISOLATION") subText: readEnv.getenv("UBUNTU_APPLICATION_ISOLATION") } ListItem.Subtitled { text: i18n.tr("APP_ID") subText: readEnv.getenv("APP_ID") } ListItem.Subtitled { text: i18n.tr("XDG_CACHE_HOME") subText: readEnv.getenv("XDG_CACHE_HOME") } ListItem.Subtitled { text: i18n.tr("XDG_CONFIG_HOME") subText: readEnv.getenv("XDG_CONFIG_HOME") } ListItem.Subtitled { text: i18n.tr("XDG_DATA_HOME") subText: readEnv.getenv("XDG_DATA_HOME") } ListItem.Subtitled { text: i18n.tr("XDG_RUNTIME_DIR") subText: readEnv.getenv("XDG_RUNTIME_DIR") } ListItem.Subtitled { text: i18n.tr("TMPDIR") subText: readEnv.getenv("TMPDIR") } ListItem.Subtitled { text: i18n.tr("PWD") subText: readEnv.getenv("PWD") } ListItem.Subtitled { text: i18n.tr("APP_PKGNAME") subText: app_pkgname } ListItem.Subtitled { text: i18n.tr("PATH") subText: readEnv.getenv("PATH") } ListItem.Subtitled { text: i18n.tr("LD_LIBRARY_PATH") subText: readEnv.getenv("LD_LIBRARY_PATH") } ListItem.Subtitled { text: i18n.tr("QML2_IMPORT_PATH") subText: readEnv.getenv("QML2_IMPORT_PATH") } } } Component.onCompleted: { var APP_ID = readEnv.getenv("APP_ID"); console.log("APP_ID: " + APP_ID ); app_pkgname = APP_ID.split('_')[0] console.log("APP_PKGNAME: " + app_pkgname); } }

我们能够通过我们设计的ReadEnv库来读取该应用的环境变量。

执行我们的程序。显演示样例如以下:

 

在文章中,它提到例如以下的文件夹,该应具有读和写的权限:

  • XDG_CACHE_HOME/<APP_PKGNAME>
  • XDG_CONFIG_HOME/<APP_PKGNAME>
  • XDG_DATA_HOME/<APP_PKGNAME>
  • XDG_RUNTIME_DIR/<APP_PKGNAME>
  • XDG_RUNTIME_DIR/confined/<APP_PKGNAME> (for TMPDIR)
针对我们的应用来说。也即例如以下的文件夹具有读写的权限:

  • /home/phablet/.cache/com.ubuntu.developer.liu-xiao-guo.readenv
  • /home/phablet/.config/com.ubuntu.developer.liu-xiao-guo.readenv
  • /home/phablet/.local/share/com.ubuntu.developer.liu-xiao-guo.readenv
  • /run/user/32011/confined/com.ubuntu.developer.liu-xiao-guo.readenv
整个程序的源代码在例如以下的地址能够找到:
bzr branch 
lp:~liu-xiao-guo/debiantrial/runtimeevn
一个更加完整的例程在:git clone https://gitcafe.com/ubuntu/runtimeenv.git
请注意,在新的例程中。我们能够同一时候使用 readEnv.getenv 或 readEnv.getenv1两种方法来得到环境变量的值。

你可能感兴趣的文章
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>