| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android开发自学-持续更新(安卓逆向基础) -> 正文阅读 |
|
[移动开发]Android开发自学-持续更新(安卓逆向基础) |
由于研究生阶段的目标需要,现目前对安卓开发进行学习,因为以前对安卓开发并没有基础,只有java语言基础,但是所幸安卓开发主要是使用JAVA语言,所以现在对安卓进行自学,但是由于主要研究方向是安卓逆向分析,所以对安卓开发并不会太细,只是基于安卓的基础上,看得懂代码,自己能够写出代码,能够完整地分析出一个项目,主要方向还是在安卓逆行分析上! 主要参考书籍:《第一行代码》 主要学习工具:Android Studio 目录 一、了解Android1、安卓大致分为四层架构,由于本人的需求是逆向分析,所以在安卓的应用层和linux内核层会有侧重。 ?2、Android应用开发特色 2.1? 四大组件
其中活动是Android应用的门面,凡是在应用中你所看到的所有东西,都放在了活动中! 2.2 系统控件 Android为开发者提供了丰富的系统控件,使得开发者可以自己开发出漂亮的用户界面,如果你不满足于系统控件,也可以使用属于自己的控件。 2.3 SQLite数据库 Android系统还自带了这种轻量级的、运算速度极快的嵌入式关系型数据库。 2.4 强大的自媒体 Android系统还提供了丰富的自媒体服务,如音乐,服务,视频,录音,闹钟等等,让你的应用变得丰富多彩。 2.5 地理位置定位 Android手机有内置的gps,可以定位自己的位置。 二、安卓应用开发的关键-活动(Activity)1.使用按钮创建声明活动点击Package,然后鼠标直接戳,创建活动,这些简单的就不一一记录了,直接进入代码,每次创建活动,都会有创建布局文件,可以自己选择是否自动生成,不自动生产也可以自己点击res包中自己生产xml布局文件。 当你创建好活动以后查看源代码,会发现已经重写了OnCreate()方法了。 对布局的创建,这里不一一详细介绍,那个比较容易上手和记忆,所以我们现在主要介绍活动层的编写,这里只介绍布局文件中与后面活动层有关的内容,比如我们在布局文件中创建一个Button按钮,id为button_1,这个id就是最关键的,与后端活动进行交互主要是基于这个id,android:id是给当前的元素定义一个唯一标识符,相当于给他取一个名字。 按钮创建好以后,我们接下来应该做的是,在活动中加载这个布局,使用setContentView()方法来加载一个布局,传入这个布局文件的id值即可,记住是以R.xxx.xxx的方式来传值,这是规矩。 ?接下来,就是在AndroidManifest.xml文件中注册,任何活动都要在这个文件中进行注册以后才可以生效,当然,集成工具已经给你自动注册好了,但是仅仅是注册活动,程序仍然是不能够使用的,因为还没有为程序配置主活动,程序运行起来的时候,还不知道启动哪个活动。 下图中的<intent-filter>标签就是配置主活动的操作,通过添加action和category这两句声明即可。 ? 在活动中添加Toast声明,在程序中使用这个声明对用户进行一个提醒。查看此程序可以看到,通过findViewByid()这个方法可以找到布局中的Button按钮的id,获取到这个布局的元素,然后对其进行向下转型成为一个button对象,然后用button对象调用一个setOnClickListener()方法,执行监听,用户点击按钮以后,就会执行监听器中的OnClick()的方法了。 其中Toast方法很简单,通过静态方法makeText()方法创建出一个Toast对象,然后调用show()方法让他显示出来就可以了。Toast.makeText()方法需要传入三个参数,第一个参数是ConText,也就是Toast要求的上下文,由于这个活动本身就是一个Context对象,因此这里直接写入MainActivity.this就可以了,第二个参数是该声明需要显示的内容,第三个是声明显示的时长。 ?2.使用菜单Menu?创建出相应的Menu布局文件以后,在布局文件中使用item标签创建菜单项,<item>标签就是用来 创建一个具体的菜单项的。 ?然后回到主活动中去重写onCreateOptionsMenu()方法,编写如图下代码, ?但是就仅仅创造出菜单是不够用的,我们还要创造菜单相应事件,重新onOptionsItemSelected()方法 3.使用Intent在活动之间穿梭怎样从一个活动跳转到另一个活动呢,这就需要使用到intent活动了。 ?3.1使用显示intent使用鼠标之直接戳,在Package里面创建第二个活动,并且同时创建布局文件,设置好布局文件中的第二个按钮以后,另外不要忘记任何活动都要在AndroidManifest.xml文件中注册的,点开这个文件以后发现集成工具已经给我们生成好了,由于这个活动并不是主活动,所以不需要配置<intent-filter>里面的内容。 Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想 ?3.2 使用隐式intent与显示Intent相比的话,隐式intent就含蓄了许多,他不会明确地指出我们想要启动哪一个活动,而是指定了一系列的action和category等信息,交给系统去分析这个intent,并且启动。 在action中我们指明了当前活动可以相应com.example.practice.ACTION_START这个action,而category里面附加了一些信息,更精确地指出了当前的活动能够响应的intent,只有同时匹配上这个action和category,这个活动才能响应intent。 但是你会发现我们这里只匹配了action啊,category怎么没匹配呢,这是因为android.intent.category.DEFAULT是一种默认的category,不需要匹配。 但是如果你添加了其他的category时,需要在AndroidManifest.xml中添加匹配的category。 ? ?3.3 更多隐式intent的用法使用隐式Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使 同时在配置文件中修改action和category两个地方,如下 但是除了http协议以外,我们还可以指定其他协议,,不如geo显示地理位置,tel表示拨打电话,修改代码如下图,并且修改安卓的注册文件, ?3.4? 利用intent传递数据我们现在都只是简单地运用了 Intent,其实还有很多种用法,可以使用intent传递数据,,提供了一系列putExtra()方法重载,可以把我们想传递的数据暂存在intent中,启动了另一个活动后,再从这个intent中取出来就好了。编写好主活动和次活动以后的布局文件以后,修改点击按钮的监听器, 这里我们还是使用显式Intent 的方式来启动SecondActivity,并通过putExtra()方法传递了 首先可以通过getIntent() 方法获取到用于启动SecondActivity 的Intent, 然后调用 ?3.5 返回数据给上一个活动既然可以传递数据给下一个活动,那么能不能够返回数据给上-一个活动呢?答案是肯定的。 然后我们再在第二个活动中添加按钮监听器,代码如下: 可以看到,我们还是创建了一个intent对象,但是这个intent仅仅用于存放数据而已,没有指定任何意图,把数据存放在intent以后,再调用了setResult()方法,这个方法非常重要,主要是向上一个活动返回数据的,setResult()接收了两个参数,第一个参数是向上一个活动返回处理结果的,一般只适用RESULT_OK或者是RESULT_CANCELED这两个值,第二个参数值intent则把数据返回到上一个活动,最后调用了finish()方法来销毁当前活动。 ?由于我们是使用startActivityForResult ( )方法来启动SecondActivity的,在SecondActivity onActivityResult()方法带有三个参数,第一个参数requestCode,即我们在启动活动时 这时候你可能会问,如果用户在SecondActivity中并不是通过点击按钮,而是通过按下Back ?这样按下返回键以后,查看logcat就会发现返回的消息。 3.6 活动的生命周期掌握活动的生命周期对任何Android开发者来说都非常重要,当你深人理解活动的生命周期 ?3.6.1 活动状态 每个活动在其生命周期最多有4种状态。 1、运行状态 当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。系统最不愿意回收的就是处于 当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。你可能会觉得 3、停止状态 当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。系统仍然会为 当一个活动从返回栈中移除后就变成了销毁状态。系统会最倾向于回收处于这种状态的活 Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节,下面就来----介绍 onCreate():这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它 以上7个办法,除了onRestart()以外,其他都是两两相对的,从而把活动分为三种生存期。 完整生存期:活动在onCreate()方法和onDestroy( )方法之间所经历的,就是完整生存 3.6.3? 活动被回收了怎么办? 前面我们已经说过,当-一个活动进入到了停止状态,是有可能被系统回收的。那么想象以下 数据是已经保存下来了,那么我们应该在哪里进行恢复呢?细心的你也许早就发现,我们一 3.7 活动的启动模式 在项目中我们应该需求的不同而选择不同的活动启动模式。启动模式一共有四种:standard、singletop、singletask、和singleinstance,可以在配置文件中选择不同的属性来启动活动。 其中SingleInstance最为复杂,需要多加理解。 三? UI设计由于本人侧重点不在前端UI设计,主要侧重于后端代码分析,所以在这里不详细介绍。 2021.11.17 2021.11.18 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:45:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |