Ubuntu OS应用Runtime Enviroment
来源:互联网 发布:一诺网络推手公司 编辑:程序博客网 时间:2024/05/24 02:34
在这篇文章中,我们将介绍Ubuntu OS的Runtime Environment。在文章“App confinement: Security policy for click packages”中,我们看见它里面有介绍一个应用的runtime环境。这里,我们通过一个例子来显示一个应用的runtime环境到底是怎样的。
在这里我们可以参阅我以前的文章“在Ubuntu上的C++及QML混合编程”,我们下载文章中的例程:
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
一个更加完整的例程在:https://github.com/liu-xiao-guo/runtimeenv
请注意,在新的例程中,我们可以同时使用 readEnv.getenv 或 readEnv.getenv1两种方法来得到环境变量的值。
0 0
- Ubuntu OS应用Runtime Enviroment
- Windows 7 bug: nonexistent Java Runtime Enviroment
- Ubuntu eclipse Enviroment Android Development
- Ubuntu OS上的QML应用框架
- how to modify the enviroment varible in Ubuntu
- ubuntu的环境变量设置错误怎么办(/etc/enviroment)
- runtime应用
- Runtime Organization of an OS
- 在Ubuntu OS上怎么本地化一个QML应用
- Ubuntu linux解决:”修改profile/enviroment文件无法进入ubuntu“的方法
- Enviroment类
- uboot--enviroment
- iBatis Enviroment
- Enviroment.tickcount
- /etc/profile与/etc /enviroment的比较 UBUNTU四种环境变量的简介
- /etc/profile与/etc /enviroment的比较 UBUNTU四种环境变量的简介
- /etc/profile与/etc /enviroment的比较 UBUNTU四种环境变量的简介
- /etc/profile与/etc /enviroment的比较 UBUNTU四种环境变量的简介
- android m1卡读写
- 视频码率,帧率和分辨率的联系与区别
- CM团队又添合作伙伴,这次来自印度
- P1567 吃糖果游戏
- 关于MessageQueue-JNI的错误问题解决
- Ubuntu OS应用Runtime Enviroment
- 阿里15亿入股华谊兄弟 马云下一个要颠覆文化?
- vi命令使用方法
- 白领女性警惕:久坐易患妇科疾病!
- codeforces 489F Special Matrices(DP)
- 15个专业版响应式WordPress主题
- mysql 1130问题
- CentOS 6.3 安装VMware Tools
- android--解决方案--自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)