Android渗透入门

Android基础知识

         Android应用采用Java编程语言编写。使用Android SDK工具将代码连同数据和资源文件编译到一个APK:android的软件包,即带有.apk后缀的文件。一个apk文件包含应用的所有内容(图像、数据、音频等等),安装apk文件,需要Android系统的设备。

        安装到设备之后,所有的应用都在沙箱内运行。

        Android系统是一个多用户Linux系统,每个应用都是一个不同的用户。

        默认情况下,系统会为每个应用分配一个唯一的 Linux用户ID(该ID仅由系统使用,应用并不知晓)。系统为应用中的所有文件设置权限,使得只有分配给该应用的用户ID才能访问这些文件。

        每个进程都有自己的虚拟机(Dalvik虚拟机),因此应用代码是在与其他应用隔离的环境中运行;一个Dalvik应用作为一个独立的Linux进程执行。

        每个应用都作为一个独立的Linux进程。Android会在需要执行应用组件时启动进程,然后在不再需要该进程或系统必须为其他应用恢复内存时关闭该进程;甚至应用出现异常崩溃而不会导致其他应用异常。

        Android系统可以通过这种方式实现最小权限原则。也就是说,默认情况下,每个应用都只能访问执行其工作所需的组件,而不能访问其他组件。这样便营造出一个非常安全的环境在这个环境中,应用无法访问系统中其未获得权限的部分。

        不过,应用仍然可以通过一些途径与其他应用共享数据以及访问系统服务:可以安排两个应用共享同一Linux用户ID,这样就能够相互访问彼此的文件。为了节省系统资源,可以安排具有相同用户ID的应用在同一Linux进程中运行,并共享同一VM(应用还必须使用相同的证书签署)。

        应用可以请求访问设备数据(如用户的联系人、短信储装置[SD卡]、相机、蓝牙等)的权限。用户必须明确授予这些权限。

Android系统

从高到低:Android应用层、Android应用框架层、Android系统运行库层、Linux内核层

运行环境

        该核心库提供了JAVA编程语言核心库的大多数功能。

        每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的"dx"工具转化成.dex格式,然后由虚拟机执行。

Android组件

        应用组件是Android应用的基本构建基块。每个组件都是一个不同的点,系统可以通过它进入应用。并非所有组件都是用户的实际入口点,有些组件相互依赖,但每个组件都以独立实体形式存在。
        共有以下四种不同的应用组件类型。每种类型都服务于不同的目的:
                

屏幕组件-Activity

         Activity是Android的核心类,可以理解为一个屏幕,现实给用户的界面。例如,邮件APP有一个现实收件箱的Activity、一个发信箱的Activity、以及一个查阅邮件的Activity。这些Activity通过紧密协作在邮件APP中形成了一种用户体验。每一个Activity都独立存在。所以第三方应用可以启动其邮件APP中任何一个Activity(组件属性设置为导出)。例如,相机APP可以启动邮件APP内发信箱的Activity,方便用户共享图片。

服务组件-service

        service自然是Android的服务组件,它没有用户界面,可以在后台运行,每一个服务都是一个android.app.service的子类。

        例如:假如用户在听音乐的同时想做别的操作,那么就会离开音乐的activity,但并不希望中断音乐的播放,所以这个时候只要过一个service在后台来播放音乐就可以。很多时候用户甚至不知道某个APP的service在后台运行,service对用户来说是一个完全透明组件。
 

内容提供者组件-Content Provider

        Content Provider组件主要用于不同程序之间进行数据共享,如果某一程序要使用其他应用的数据,那么必须Content Provider对象。这些数据可以存储为Android文件,SQLite数据库文件等
        第三方应用可以通过Content Provider组件查询数据,甚至修改数据(具备权限前提)。例如,Android系统提供管理联系人信息的内容提供程序。任何具备权限的第三方应用都可以查询内容提供程序的某一部分(如ContactsContract.Data),以读取和写入有关特定人员的信息。

广播接收组件—Broadcast Receiver

        Broadcast Receiver组件是一种用于响应系统范围广播通知的组件。许多广播都是由系统发起的。例如:通知屏幕已关闭、电池电量不足或已拍摄照片的广播。

        应用也可以发起广播,例如:通知其他应用某些数据已下载至设备,并且可供其使用。尽管广播接收器不会显示用户界面,但它们可以创建状态栏通知,在发生广播事件时提醒用户。但广播接收器更常见的用途只是作为通向其他组件的“通道”,设计用于执行极少量的工作。例如,它可能会基于事件发起一项服务来执行某项工作。

Android控件

主要涉及到的控件包括:

1、文本类控件

TextView负责展示文本,非编辑

EditText可编辑文本控件

2、按钮类控件

Button按钮

lmageButton图片按钮

RadioButton与RadioGroup单选按钮

CheckBox复选按钮

3、图片控件

lmageView负责显示图片

4、进度条控件

ProgressBar进度条

运行环境

Android虚拟机分为Dalvik和ART两种

在4.4版本之前一直使用的都是Dalvik虚拟机,在4.4之后开始使用ART虚拟机(Android Runtime)。5.0版本开始废弃Dalvik,只用ART。

ART虚拟机能把应用程序的字节码转换为机器码。

ART与Dalvik的主要不同在于: Dalvik采用的是JIT技术,而ART采用Ahead-of-time (AOT) 技术。 ART同时也改善了性能、垃圾回收(Garbage Collection)、应用程序除错以及性能分析。

Dalvik每次都要编译再运行,ART只会安装时启动编译

ART占用空间比Dalvik大 (原生代码占用的存储空间更大) ,就是用“空间换时间”

ART减少编译,减少了CPU使用频率,使用明显改善电池续航

ART应用启动更快、运行更快、体验更流畅、触感反馈更及时

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发入门可以通过以下步骤进行: 1.了解Android开发环境:Android开发主要使用Android Studio作为开发工具。Android Studio是由谷歌公司提供的一款集成开发环境,用于编写、调试和测试Android应用程序。 2.学习编程语言:Android应用程序主要使用Java或Kotlin进行开发。如果您已经熟悉其中一种编程语言,可以直接开始学习Android开发。如果您是初学者,建议先学习Java基础知识,然后再深入学习Android开发。 3.学习Android组件和API:Android应用程序由各种组件组成,如Activity、Fragment、Service、Broadcast Receiver和Content Provider等。了解这些组件的用途和功能对于开发Android应用程序至关重要。此外,还需要学习Android提供的各种API,以便在应用程序中实现不同的功能。 4.进行实际开发:通过创建简单的示例应用程序来练习和巩固所学知识。您可以从编写一个简单的"Hello World"应用程序开始,然后逐渐扩展功能和复杂性。 5.学习调试和测试:学习如何使用Android Studio的调试工具,以及如何进行单元测试和集成测试,以确保应用程序的质量和稳定性。 6.深入学习其他相关技术:一旦掌握了Android开发的基础知识,可以进一步学习其他相关技术,如数据库管理、网络通信、用户界面设计等,以提升应用程序的功能和用户体验。 总结:Android开发入门需要了解Android开发环境、编程语言、Android组件和API,并通过实际开发和调试来巩固所学知识。随着经验的增加,可以深入学习其他相关技术来提升应用程序的功能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值