首页 > 其他分享 >安卓开发基础一

安卓开发基础一

时间:2023-08-03 16:33:27浏览次数:37  
标签:app java 安卓 基础 gradle 开发 message 虚拟机

1 安卓开发环境搭建

1.1 安卓开发环境介绍

# 做安卓开发,首先要会java
	-需要安装 安卓SDK+集成开发环境eclipse ---》早些年
    -安装SDK依赖于java的sdk---》安装jdk,已经安装过了
    -后来,谷歌公司购买了jebrains的编辑器版权(IDEA,Pycharm...)---->做出了AndroidStudio编辑器,专门用来开发安卓应用的---》免费的
    	-安装了AndroidStudio----》让你必须下载安装SDK,才能开发项目
        
# 编写了一个app,运行app
	-使用AS自带的虚拟机(安卓虚拟机)
    -使用第三方安卓虚拟机(夜神,网易mumu)
    -真机(谷歌手机)---》建议大家使用真机测试----》不需要root,必须开usb调试
    
# 安卓SDK是什么?
	-一堆jar包,一堆用java写的第三方包,谷歌提供的,内置了很多类,很多方法,让咱们可以使用java的语法编写安卓应用

1.2 下载集成开发环境

# 官网下载:
    # 历史版本下载(不建议用了)
    https://developer.android.google.cn/studio/archive?hl=zh-cn
    #最新版本下载(咱们用最新,最稳定)
    https://developer.android.google.cn/studio
        
# 下载最新稳定版
	android-studio-2022.2.1.20.exe

1.3 安装 AndroidStudio

# 一路下一步,选择安装虚拟机(可以不安装),选择安装路径,确定安装即可
# 安装完成,启动即可

1.4 AndroidStudio配置(耗时)

1.5 配置环境变量

# 我的安装sdk装在了  d:sdk 文件夹下

# 面临问题
	-我们之前装过 platform-tools,有点老:D:\soft\platform-tools
    -现在有有一个,这个是最新的:D:\sdk\platform-tools
    
    -以后敲adb 用的是谁,取决于环境变量了,谁在上面,用的就是谁,两个都可以用
    
# 不配置也可以的

1.6 创建虚拟机(网易mumu,真机,安卓虚拟机)

# 开发完的项目, 运行
	-真机(推荐),不是谷歌所有型号手机都有
    -第三方模拟器:网易mumu,夜神
    -AndroidStudio提供的---》学习如何创建它的虚拟机
# 创建虚拟机可能不成功
# win系统在安装和操作之前,请提前开始电脑的vt-x,虚拟机开启方法如下:
	https://mumu.163.com/include/16v1/2016/06/27/21967_625825.html
    

2 创建第一个安卓项目运行

2.1 安卓项目目录结构

# 项目构建工具介绍----》每个项目有自己的环境,项目的依赖都在配置文件中
# 写安卓使用Gradle构建
# 写javaEE,一般使用Maven
# python有虚拟环境,一个项目一个环境
# 当前这个项目依赖了一些第三方,下载第三方,在maven或者Gradle
Gradle和Maven都是Java项目的构建工具,但它们有一些区别:
1. 语法:Gradle使用Groovy语言进行编写,而Maven使用XML。Groovy更加灵活易读,XML更加严谨易于重用。
2. 性能:Gradle比Maven更加高效快速,因为它使用了增量构建模式,只会重新构建被更改的模块,而Maven则需要重新构建整个项目。
3. 插件:Gradle的插件生态更加丰富和现代化,而Maven的插件相对较为传统。此外,Gradle的插件可以非常容易地编写和定制,而Maven的插件相对繁琐。
4. 维护:Maven有比较成熟的工具链和文档支持,而Gradle则相对较新,可能需要更多的自学

# Groovy介绍
Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码
├── .gradle                            #AndroidStudio 自动生成的文件,会自动修改它的,项目打包时也会删除;
├── .idea                              # AndroidStudio自动生成的文件,会自动修改它的,项目打包时也会删除;
├── app                                # 应用相关的东西都在里面,工作的核心目录 
│        ├── build                     # 编译的产物。可以手动把它整个删掉,目前看不到,是因为没编译
│        ├── libs                      # 依赖包可以放这里,比如一些jar文件
│        ├── src                       # 代码在这。非常重要。
│        │        ├── main
│        │        │        ├── java     # 放Java代码的地方
│        │        │        ├── res 
│        │        │        │        ├── drawable  # 应用图标
│        │        │        │        ├── layout    # Android布局文件夹
│        │        │        │        ├── mipmap    # 适配不同分辨率的手机
│        │        │        │        ├── mipmap    # 桌面图标
│        │        │        │        └── values   # 颜色、样式、字符集配置文件夹
│        │        │        ├──AndroidManifest.xml#APP运行配置文件,用来配置权限:程序入口配置、应用程序主题、应用程序组件等
│        ├── .gitignore                          # 版本控制
│        ├── build.gradle                        # 非常重要,app的构建配置。俗称“app的gradle文件”
│        └── proguard-rules.pro                  # 不管。这个是混淆配置。
├── gradle                                       # 它是一个构建起配置文件
├── .gitignore                                   # 整个工程的版本控制
├── build.gradle                                 # 很重要。项目级的配置。俗称“项目gradle文件”
├── gradle.properties                            # 全局的gradle配置文件
├── gradlew                                       # Linux/mac上执行gradle命令
├── gradlew.bat                                   # Windows上执行gradle命令
├── local.properties                              # 本地配置文件,一般不上传
└── settings.gradle                               # gralde的项目级配置


# 以后只需要关注  main文件夹下的java和res,AndroidManifest.xml,build.gradle

2.2 安卓项目开发流程

# 以后,要创建一个个的app的页面,就是在res---》layout文件夹下创建 xx.xml
	-activity_main.xml   新建项目时,创建了空页面
# 一个页面会配合一个java的类,也就是一个java文件---》MainActivity.java
	-写一些逻辑,按钮点击,图片显示。。。
    -发送网络请求

3 第一个安卓app(点击按钮切换美女图片)

补充

1 Hook app某些方法的时候

1.1 hook重载的方法

# 方法名一样,参数不一样----》重载


# 手机端启动server
'''
adb shell
su
cd /data/local/tmp/
./frida-server-16.0.19-android-arm64 

端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

'''



###python代码
import frida
import sys

# 连接手机设备
rdev = frida.get_remote_device()

session = rdev.attach("油联合伙人")
# hook的是update这个重载方法,不写overload,会有错误提示,告诉你有几个,你想hook那个,复制过去即可  
scr = """
Java.perform(function () {
    // 包.类
    var MessageDigest = Java.use("java.security.MessageDigest");
    MessageDigest.update.overload('byte').implementation = function(data){
        var res = this.update(data);
        return res;
    }
});
"""
script = session.create_script(scr)

def on_message(message, data):
    print(message, data)

script.on("message", on_message)
script.load()
sys.stdin.read()

1.2 hook构造方法

# 构造方法可能有多个

# hook构造方法



import frida
import sys

# 连接手机设备
rdev = frida.get_remote_device()

session = rdev.attach("油联合伙人")

scr = """
Java.perform(function () {
    // 包.类   项目中字符串拼接,都会用这个,hook它,很多地方会用到   StringBuilder sb =new StringBuilder()  触发构造方法,就好hook到
    var StringBuilder = Java.use("java.lang.StringBuilder");
    // hook构造方法,固定加入  .$init.overload('int')  
    StringBuilder.$init.overload('int').implementation = function(num){
        console.log(num);
        return res;
    }

});
"""

script = session.create_script(scr)

def on_message(message, data):
    print(message, data)

script.on("message", on_message)
script.load()
sys.stdin.read()

标签:app,java,安卓,基础,gradle,开发,message,虚拟机
From: https://www.cnblogs.com/pdxt666/p/17603628.html

相关文章

  • BMC开发九 - D-Bus
    D-Bus介绍D-Bus是针对桌面环境优化的IPC(interprocesscommunication)机制,用于进程间的通信或者进程与内核的通信。最基本的D-Bus协议是一对一的通信协议。但在很多情况下,通信的一方是消息总线。消息总线是一个特殊的应用,它同时与多个应用通信,并在应用之间传递消息。  ......
  • 安卓UI相关开源项目库汇总
    awesome-github-android-ui是由OpenDigg整理并维护的安卓UI相关开源项目库集合。我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们。如果收录的项目有错误,可以通过issue反馈给我们。这里的项目Star数不是实时更新的,一般是一周更新一次。内容抽屉菜单ListViewWebVie......
  • 从零基础开始开发自己的第一个微信小程序
    内容介绍通过本篇blog,你可以熟悉从零开始,搭建小程序开发环境,并运行起自己的第一个小程序。小程序开发步骤1、注册账号2、下载开发工具搭建开发环境3、创建工程,编写代码4、手机上查看效果通过以上四步就能创建属于自己的小程序了。注册微信小程序账号注册完成后是这样......
  • Spark Core源码分析: RDD基础
    RDD RDD初始参数:上下文和一组依赖1.abstractclass2.@[email protected] 以下需要仔细理清:AlistofPartitionsFunctiontocomputesplit(subRDDimpl)AlistofDependenciesPartitionerforK-VRDDs(Optional)Preferredl......
  • go基础-接口
    一、概述接口是面向对象编程的重要概念,接口是对行为的抽象和概括,在主流面向对象语言Java、C++,接口和类之间有明确关系,称为“实现接口”。这种关系一般会以“类派生图”的方式进行,经常可以看到大型软件极为复杂的派生树,随着系统的功能不断增加,这棵“派生树”会变得越来越复杂。G......
  • 云计算笔记(一):基础概念
    本文用于收集和整理云计算设计的概念。现在的云计算有些过热(“人人都在谈论它,但没有人真正知道它”),很多研究都挂上了这个名词来显示其时髦。从某种意义上讲:云计算isnothingnew,只是概念的创造。重新整理了网络资源,特别适合与运营商(包括亚马逊)来整理他们的产品和服务。云计算提供......
  • Go 语言入门指南: 环境搭建、基础语法和常用特性解析 | 青训营
    Go语言入门指南:环境搭建、基础语法和常用特性解析|青训营从零开始Go语言简介Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了IanLanceTaylor,RussCox等人,并最终......
  • HtmlAgilityPack 网页数据抓取基础应用
    1vardoc=newHtmlAgilityPack.HtmlDocument();2stringhtml="";3doc.LoadHtml(html);4Func<HtmlAgilityPack.HtmlNodeCollection,string,Dictionary<string,string>,bool,List<Htm......
  • 基础算法
    复健\(Day3\)一些基础的算法(模板)\(1.\)位运算进行状压\(DP\)时常用到位运算\(64\)位整数乘法https://www.acwing.com/problem/content/92/#include<iostream>#include<cstdio>#defineLLlonglongusingnamespacestd;intmain(){LLa,b,p;cin>>a>&g......
  • 解决大模型“开发难”,昇思MindSpore自动并行技术应用实践
    本文分享自华为云社区《DTSETechTalk|第35期:解决大模型“开发难”,昇思MindSpore自动并行技术应用实践》,作者华为云社区精选。昇思MindSpore是新一代覆盖端边云全场景的开源AI框架,旨在开创全新的AI编程范式,降低开发者门槛,为开发者打造开发友好、运行高效、部署灵活的AI框架,推动人......