loading请求处理中...

Android应用设计的思想与原则_对安卓应用设计的不同看法

2021-12-01 06:24:03 阅读 9280次 标签: android游戏开发安卓rom制作教程 作者: chenliwen666
  近来工作中遇到了android中的权限疑问,发现Android确实是开源的,但并不开放,比方权限控管就相当严厉,限制做很多工作,这一点满意于linux内核。这也勾起来对其架构研讨的爱好,不知到哪位可以深度分析下android架构设计的思维与原则?安卓开发工程师或是行内人士对它的看法是什么?


  一、“Android 应用设计的思想与原则是什么?”:
  最近工作中遇到了安卓应用设计的权限问题,发现Android确实是开源的,但并不开放,比如权限控管就相当严格,限制做很多事情,这一点得益于Linux内核。这也勾起来对其架构研究的兴趣,不知到哪位能够深度剖析下Android应用设计的思想与原则?
  二、Android应用设计哲学
  理解好Intent,就可以理解Android哲学("所有应用生来平等")的一部分。举个简单的例子,iOS里面应用要集成SNS如facebook/twitter/sina weibo等,都需要应用自己实现(iOS5也只是集成twitter一家);Android上只需要广播一个share内容的intent。从理解Intent如何工作开始,你就在慢慢理解Activity Manager, Package Manager, Services这些Android的重要组件是如何工作的。
  另外Binder是Android架构里非常核心的一块。Android基于Intent的消息传递和组件/应用解耦,下面的基础都是Binder IPC。在这一点上,Android实际上是光荣的传承了BeOS和Palm OS 6(悲催的OS6...)未能发扬光大的一部分。
  MVC(Content Provider, Activity, Layout, Adapters)这个比较基础,也不算Android特有的。
  Content Provider对数据访问的抽象也是比较有意思的一块。理想情况下,content provider可以让客户端用URI以语义化的方式访问数据(URI本身即表示数据层次结构和查询条件),而下面数据库表的结构可以任意变动,不影响客户端代码。当然实做的时候content provider还是会被各种复杂的where子句暴露出SQL的实现细节……
  至于Android的权限管理,其实比较简单,主要是利用现成的Linux安全模型,进程之间相互隔离。API级别的权限管理和JVM类似。
  三、解析权限系统的设计
  Android的权限系统是基于Linux,但又增加了很多自己的控制模块。
  总体上来说,其分为以下几部分权限系统:
  1. userid : 继承于linux,对于多个app,通过shareuid的方式可以使用同一个userid,主要承担一些目录访问权限之类的工作,比如私有目录只能由同一uid应用访问。
  2. 安装level:system level o r  app level,这个是根据应用的安装位置决定的,在system/app下安装的应用就是system level,在权限访问中会得到更多的权限,比如静默安装应用的权限等。
  3. permission : 这个是最主要的权限控制,一般开发者开发应用主要是接触这个部分,在这部分中,会根据应用在AndroidManifest.xml中声明的use-permission而在访问相应api或资源时判断其是否有访问权限,比如常用的android.permission.INTERNET等。
  4. signature: 签名,是Android权限系统中的重要组成部分,对于系统签名的应用,会有一些特殊的功能,而shareuid等特性也是需要同一签名作为基础。此外,permission在设置/自定义其权限时也经常会使用到签名,比如控制只有我自己的应用才可以访问我自己定义的公开API。
  除此以外,其实Android在uid的里面设置了一些预定义有特殊功能的uid,比如system/media等,在配置其system level的services的时候会用到。
  四、Android主要是基于组件搭配思想
  Android是开源的,不过开源不意味着可以乱来,开源只是告诉你我是怎么做的,至于为什么这么做,就是另外一个问题了。任何一个系统如果没有权限管理,那不是乱套了么?我倒是觉得Android的权限管理设计的还不错,有些地方比iOS好,也较灵活,不过同样是因为这一点,容易被利用。
  说到Android架构的设计思想和原则,按我的理解主要是组件搭配,即在用户看来,所有的module或者组件,都是可以重复利用和简单组合的。想法是好的,不过有得必有失,或者说Android现在做的还不够好,在性能方面是很低的,否则的话Android也不会推出补丁(NDK之类的,dalvik的不断升级)。
  我觉得所有Framework或者平台或者语言都想给应用开发者最方便使用的接口,最人性化的体验,同时又要争取最大的性能,两者权衡折中吧。不过随着硬件速度的飞速增长,性能的权重会变低。
  五、资源体系问题
  Android架设在Linux之上,因此,继承了Linux可移植性、用户管理机制、文件系统,等等。
  Android的核心在Framework层,本质上,这是一个基于组件的应用开发系统,组件间通过消息(Intent)进行通信。一方面,Intent是通信信息的载体,另一方面,Intent也定义了Android组件的通信协议。
  Android可以对组件所运行的进程做托管,在Android中,进程概念相当薄弱。依赖于进程托管,Android可以轻松支撑多任务多进程的应用模型。
  除了组件,资源体系也是Android中比较特色的一块,它提供了完整的资源支持,可以用来描述一切与UI相关的内容,并实现多设备的适配。
    用户不是安卓开发工程师,他们不会觉得“回来”按钮扎眼,所以绝大多数用户是能承受移植自iOS的UI的。如果咱们专门对于android版去掉“回来”按钮,好像有点多此一举。 从通常的UI原则来说,对不一样渠道采纳合适渠道的UI标准是准确的。所以咱们做Windows Phone版别,几乎是不可能思考用iOS的UI的。但万事无肯定,android和iOS的确太接近了,变通是能够思考的计划。或许将来有一天 android的体系UI完满到令人信服,咱们又会专门为它设计一套android版的UI。你对安卓手机应用开发设计的看法又是什么呢?   一品威客网汇聚了数百万专业的IOS应用Android应用IPAD应用微信公众平台开发手机游戏开发应用软件开发WindowsphoneSymbian应用应用汉化等优秀威客人才,只要您在网站发布任务需求,就能够吸引众多威客给您献上最好的创意服务。

推荐更多与“Android应用设计的思想与原则_对安卓应用设计的不同看法”相关推荐:

 安卓应用开发论文  | 企业级ios应用开发 | ios应用开发攻略  | 微信公众平台开发  | 移动app开发流程

 手机软件开发价格  | html5移动应用开发 | ios应用开发详解  | 移动应用开发流程  | WP应用开发入门 

 移动应用开发技术  | 微信平台开发新技术| ios应用开发指南  | 安卓软件开发过程  | 安卓app开发教程




 
  

APP开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
APP开发相关任务
DESIGN TASK 更多
教育app,安卓+ios上架,非原生

¥10000 已有4人投标

Android APK 二次开发打包

¥10000 已有2人投标

H5小游戏开发

¥10000 已有3人投标

安卓软件绕过注册检测

¥3000 已有0人投标

小游戏开发类的软件开发

¥20000 已有5人投标

宠物AI互动游戏开发

¥50000 已有2人投标

公司内部信息备份安卓app升级

¥1000 已有3人投标

微信小游戏开发

¥10000 已有1人投标