打开这篇文章的人都是爱问知识的人,下面我给大家讲讲。课课家将带给您与众不同的知识。一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载。
一、Overview
最近实现了我的第一个个人博客阅读App,android开发培训但是目前存在很多很多Bugo(╯□╰)o >_<|||。
可以通过这个App来实现RSS订阅功能,第一时间阅读我的个人博客文章,同时可实现文章收藏与分享功能。App使用截图如下所示:
1. RSS 订阅最新的20篇文章 2. 可以收藏文章 3. 查看文章全文
4. 支持将文章分享到SNS 二、How to make it?
其实我去年就想实现一个我的个人App,但是由于种种原因一直拖到现在才有了1.0版本,期间走过了很多弯路,也进行了反思,为什么失败?我觉得部分原因如下:
1. 产品功能不清晰
最开始产品功能不清楚,android开发实战到底仅仅是博客阅读App还是一个大而全式的App,包含自己的简历,网站,展示自己的一些作品?
如果一开始就仅仅是最简单的博客阅读App,那实现难度就降了一个数量级了,目前完成的成品也仅仅是一个阅读App。
2. 没有选择一个合适的产品参考
对于从无到有,最好是有成熟的产品可以参考,但是一开始我没有找到。有一天新**似的发现了Press的开源客户端,于是决定参照此开源代码进行开发。
WordPress的Android客户端代码太庞大了,当时也没有去认真阅读里面的源码。后来有很长一段时间,我的这个项目又放弃了。
3. 网站自动制作App
well 硬件抽像层
Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
HAL stub 是一种代理人(Proxy)的概念,Stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 这些操作函数。HAL 里包含了许多的 Stub(代理人)。Runtime 只要说明“类型”,即 Module ID,就可以取得操作函数。
中介软件
操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。Open CORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
安全权限机制
Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。
系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。
Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。
安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:
拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。
一款应用应该根据自身提供的功能,android开发环境要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。 有一天看到别人分享的网站自动制作App,于是折腾了2天,看能不能给我制作出来,不过最后以失败告终。
4. 制定详细规划
为什么在最近2周又突飞猛进了呢? 中秋节3天,也没啥事,于是绝对重新捡起来。首先,我思考了这款App要做成什么样?有那些功能?各需要哪些技术?
于是分析如下:
需要的功能
需要的技术
5. 实现
经过上述分析,那么开始学习相关技术,努力编程实现吧!
在实现RSS技术的过程中,其实也就是XML解析技术。通过研读了网上开源代码,移植Ok。其实界面调优也花了不少时间。
三、Download
说了这么多,放下新Apk下载链接吧,大家也体验一下吧:点我下载
¥98.00
¥199.00
¥179.00
¥398.00