开发工具Android Studio软件

官网地址:https://developer.android.google.cn/studio

# 项目构建工具介绍
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 代码很好地结合,也能用于扩展现有代码

开发流程:
安卓开发 = Java代码处理业务逻辑 + xml页面布局

 

[安装]
注意: 中间需要选择是否安装虚拟机(可以选择安装也可以不安装),如果使用真机调试,就不需要安卓虚拟机

[配置]
打开软件
可以选择自定义安装选择SDK的目录, 也可以常规安装让其自行选择一个目录

默认SDK路径:
例如:C:\Users\ML\AppData\Local\Android\Sdk

1) 不用设置代理
2) license Agreement 中对于每个都需要单独点选Accept, 最后再进行Finish
正常他会下载相关的组件并安装, 都完成之后,就正常打开软件
SDK管理配置:
More Actions > SDK Manager
或
File > Settings > Android SDK
SDK Platforms:
a)安装Android API 35
b)安装Android 11.0 (根据自己手机的系统版本选择即可)

SDK Tools:

3) emulator和paltform-tools目录加入到环境变量

  

[使用]

新建)
> 选择"Phone and Tablet" > Empty Views Activity 空视图页
填写 项目名 + 包名 + 项目位置 + 编辑语言(要选Java) + SDK版本(支持的最小的安装版本,可以选择10以上)
正常情况下会下载依赖包并安装完成了

真机运行)
前提: 手机开启开发者模式 & 允许USB调试,并且用数据线和电脑连接

目录结构说明:
安卓视图)

app
|-- manifests
|-- | -- AndroidManifest.xml (项目名称,图标,启动,权限配置等)
|-- java
|-- | -- com.lanlang.androiddemo (每个页面中的处理逻辑)
|-- | -- | -- MainActivity
...
|-- res (资源)
|-- | -- drawable
|-- | -- layout
|-- | -- | -- activity_main.xml (xml页面)
|-- | -- mipmap
|-- | -- values
|-- | -- xml (项目配置)

Gradle Scripts: gradle的一些配置

  

项目视图)

AndroidDemo
├── .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的项目级配置

  

开发

 支持okhttp3:

基本使用:

// 构造请求
val okHttpClient = OkHttpClient()
val request = Request.Builder().url("http://localhost:8080/").build()
val call = okHttpClient.newCall(request)
// 发起调用
val execute = call.execute()
println(execute)

添加拦截器:

OkHttpClient httpClient = new OkHttpClient.Builder()
  .addInterceptor(new RetryInterceptor(3))
  .addInterceptor(new CatInterceptor())
  .addInterceptor(new TokenHeaderInterceptor())
  .build();

 

 

 

使用参考:https://zhengw-tech.com/2024/06/29/okhttp-interceptor/

1)引入依赖

项目视图下, 找到app > build.gradle文件dependencies中引入okhttp3

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    
    implementation "com.squareup.okhttp3:okhttp:4.9.1"
    
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

2)在android视图下, 找到 app > manifests > AndroidManifest.xml文件中 application的上面加允许访问网络

<uses-permission android:name="android.permission.INTERNET"/>

3) 支持http

在res/xml下新建security.xml,写入

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

在AndroidManifest.xml文件中application中加入配置:

android:networkSecurityConfig="@xml/security"

 

 

常见错误:
1.java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
这是因为正常需要使用https来请求的
解决:
(1)APP改用https请求

(2)targetSdkVersion 降到27以下

(3)更改网络安全配置
1.在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

  

2.接着,在AndroidManifest.xml文件下的application标签增加以下属性:

<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>

  

4) 在AndroidManifest.xml配置文件的<application>标签中直接插入

android:usesCleartextTraffic="true"