博文

SEAndroid基础

图片
1.前言     安全是在移动终端普及下,移动互联网应用需要解决的重头戏。当然,有了网络安全的保障下,还需要设备自身的安全保证,因此,Android集成了基于SELinux的SEAndroid。 2.SEAndroid、SELinux与Android     SEAndroid(Security-Enhanced Android,Security Enhancements for Android™ (SE for Android))是将Linux操作系统上的MAC强制存取管控套件SELinux移植到Android平台上,用于增强Android系统对APP等的存取管控,用于确保每个APP的独立运行,防止恶意APP对系统或其他应用程序的攻击。     那么什么是MAC?其与传统的DAC区别在哪?在SELinux出现之前,Linux上使用的安全模型为DAC(Discretionary Access Control,自主访问控制),其思想为:进程理论上所拥有的权限与执行它的用户的权限相同,而MAC(Mandatory Access Control,强制访问控制)的思想为:任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限,凡是没有出现在该文件中的权限,进程就没有相应的权限。从而在DAC下,ROOT用户能进行所有的操作,但在MAC下则不行,特殊人物也需按规则来办事了,有提前在MAC里申请配置的才能进行相应权限的操作。     综上所述,SEAndroid=SELinux+Android,下图可以看出传统Android和使用了SELinux的SEAndroid之间对权限操作的区别:     左边和右边分别是未使用和使用SELinux的Android系统对于数据操作的区别,未使用SELinux的Android系统下,ROOT用户权限拥有最高权限,能对用户区与系统区进行操作,而普通用户只能对用户区进行操作,而使用了SELinux的Android系统下,不管是普通用户权限还是ROOT权限的程序,对用户区和系统区操作时,都必须通过SEAndroid的验证,拥有相应权限才能对相应文件进行操作,否则只能被拒门外。     S...

【ROS学习-6】了解ROS topics(主题)

图片
1. 在上面 node 的例子基础上再开一个 Terminal 后运行如下命令:   rosrun turtlesim turtle_teleop_key    此时 Terminal 会有如下提示输出:   Reading from keyboard   ---------------------------   Use arrow keys to move the turtle.    这时在该 Terminal 按键盘的方向键,就可以看到 node 例子里的乌龟在移动。 2. 打开一个新的 Terminal ,运行如下命令就可以看到 node 之间通过 topic 通信的关系:   rosrun rqt_graph rqt_graph    命令运行后有如下界面: 3. 关于 rostopic 命令    运行 rostopic -h 命令可以看到如下帮助信息:   rostopic is a command-line tool for printing information about ROS Topics.   Commands:     rostopic bw display bandwidth used by topic     rostopic delay display delay of topic from timestamp in header     rostopic echo print messages to screen     rostopic find find topics by type     rostopic hz display publishing rate of topic     rostopic info print information about active topic     rostopic list list active ...

【ROS学习-5】了解ROS Nodes(节点/结点)

图片
1. 相关概念 Nodes : A node is an executable that uses ROS to communicate with other nodes. Messages : ROS data type used when subscribing or publishing to a topic. Topics : Nodes can  publish  messages to a topic as well as  subscribe  to a topic to receive messages. Master : Name service for ROS (i.e. helps nodes find each other) rosout : ROS equivalent of stdout/stderr roscore : Master + rosout + parameter server 2.Nodes    A node really isn't much more than an executable file within a ROS package. ROS nodes use a ROS client library to communicate with other nodes. Nodes can publish or subscribe to a Topic. Nodes can also provide or use a Service. 3. 客户端库    根据编程语言不同有:   rospy = python client library   roscpp = c++ client library 4.roscore    当运行 ROS 时第一件事就是运行 roscore 命令。 5. 使用 rosnode    由于执行了 roscore 命令后 Terminal 界面就被占用了,此时需要再打开一个新 Terminal 再进行如下操作才能有相应结果(...

Android双屏异显Presentation接口总结

图片
    在点餐、收银、KTV等场所,对于双屏异显的需求是非常重要的,这样首先可以节省硬件成本。而现在的智能板卡很多运行Android系统,从Android4.2开始支持WiFi Display(Miracast)功能后,就开始支持双屏异显Presentation这套应用层接口了,下面以Android5.1系统来说明这套接口的使用要点:      一个 Presentation 对象就是一个用于在第二显示设备上呈现内容的指定类型对话框,但这对话框是显示在第二屏,而普通的对话框是显示在主屏。   那么, 如何选择 Presentation 显示设备呢?下面是两种方法:   1. 使用 media router    使用 MediaRouter 的 getPresentationDisplay() 获取 Presentation 设备, Android 源码目录下的 development/samples/ApiDemos/src/com/example/android/apis/app / PresentationWithMediaRouterActivity.java 文件有如下的代码段:   MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);   MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute();   if (route != null) {     Display presentationDisplay = route.getPresentationDisplay();     if (presentationDisplay != null) {       Presentation presentation = new MyP...

【ROS学习-4】编译一个ROS包

1. 如何使用 catkin_make    当前目录为一个 catkin 工作空间时,执行如下命令可以编译一个空的 catkin 包:    catkin_make    catkin_make install # (optionally)    如果要编译的源码在其他路径,可使用-- source 参数指定,如下:    catkin_make --source my_src    catkin_make install --source my_src #(optionally) 2. 编译自己的包    cd ~/ros/catkin_ws/    ls src    在 src 目录下有如下内容:    beginner_tutorials CmakeLists.txt    当前目录执行 catkin_make 命令编译,    在当前目录执行 ls 可以看到如下目录:   build devel src    其中 build 目录为编译空间,用于 cmake 或 make 命令编译时调用到去配置和编译; devel 为开发空间,保存安装前的可执行文件和库。 3. 参考网址     http://wiki.ros.org/ROS/Tutorials/BuildingPackages

【ROS学习-3】创建一个ROS Package

1. 创建一个 catkin Package    执行如下命令创建一个 catkin 包:     cd ~/ros/catkin_ws/src/    catkin_create_pkg beginner_tutorials std_msgs rospy roscpp    执行完会有如下提示:    Created file beginner_tutorials/package.xml    Created file beginner_tutorials/CMakeLists.txt    Created folder beginner_tutorials/include/beginner_tutorials    Created folder beginner_tutorials/src    Successfully created files in /home/guochongxin/ros/catkin_ws/src/beginner_tutorials. Please adjust the values in package.xml.    上面的命令是使用 catkin_create_pkg 命令来创建一个名为 beginner_tutorials 的包,其依赖于 std_msgs 、 rospy 和 roscpp 。 2. 编译 catkin 工作空间和导入 setup 文件    cd ~/ros/catkin_ws/    catkin_make    . ~/ros/catkin_ws/devel/setup.bash 3. 包依赖关系 a.First-order 依赖(直接依赖)    rospack depends1 beginner_tutorials    执行后有如下返回值:    roscpp    rospy ...

【ROS学习-2】配置ROS环境

1. 检测环境变量    运行 printenv | grep ROS 命令,有如下返回值则表示环境变量配置正确:   ROS_ROOT=/opt/ros/kinetic/share/ros   ROS_PACKAGE_PATH=/opt/ros/kinetic/share   ROS_MASTER_URI=http://localhost:11311   ROSLISP_PACKAGE_DIRECTORIES=   ROS_DISTRO=kinetic   ROS_ETC_DIR=/opt/ros/kinetic/etc/ros    如无,需执行 source /opt/ros/kinetic/setup.bash 命令设置当前 Terminal 的 ROS 环境变量。 2. 创建 ROS Workspace   mkdir -p ~/ros/catkin_ws/src   cd ~/ros/catkin_ws/src   catkin_init_workspace    当执行完最后一条命令时有如下提示:   Creating symlink "/home/guochongxin/ros/catkin_ws/src/CMakeLists.txt" pointing to "/opt/ros/kinetic/share/catkin/cmake/toplevel.cmake"    即在 src 目录下创建一个 CMakeLists.txt 文件,该文件是个链接文件,链接到 toplevel.cmake 文件。    尽管只有 CMakeLists.txt 文件,接下来还是可以使用如下命令编译工作空间:   cd ~/ros/catkin_ws   catkin_make    执行完命令后,会创建 build 和 devel 两目录,与 src 同级,接下来使用如下命令完成配置:   source devel/setup.bash ...