安卓开发基础环境搭建
开发工具安装
工具名称 | 用途 | 下载地址 |
JDK | Java开发工具包 | Oracle官网/OpenJDK |
Android Studio | 官方集成开发环境 | developer.android.com |
Android SDK | 安卓开发核心库 | 通过Android Studio管理 |
Gradle | 构建工具 | 内置于Android Studio |
环境配置要点
- JAVA_HOME:指向JDK安装路径
- ANDROID_HOME:指向Android SDK路径
- AVD Manager:创建虚拟设备(建议分辨率1080×1920)
- SDK版本选择:优先适配最新稳定版(如API 34),同时保留低版本兼容
核心开发语言与框架
编程语言选择
语言 | 适用场景 | 特点 |
Kotlin | 新项目开发(Google官方推荐) | 空安全、扩展函数、协程支持 |
Java | 存量项目维护 | 成熟生态、广泛第三方库支持 |
C++ | 性能敏感模块(如游戏引擎) | JNI接口交互 |
核心架构组件
// 示例:Activity生命周期简化版
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
关键开发工具与库
构建系统配置
// build.gradle示例配置
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 21
targetSdkVersion 34
}
}
常用第三方库
库类型 | 推荐方案 | 版本控制建议 |
网络请求 | Retrofit + OkHttp | 使用latest.release |
图片加载 | Glide/Coil | 排除旧版本依赖 |
JSON解析 | Moshi/Gson | 根据性能需求选择 |
依赖注入 | Hilt/Dagger2 | 优先使用Hilt(官方支持) |
核心组件开发实践
四大组件对比
组件类型 | 典型用途 | 生命周期特点 |
Activity | 用户界面交互 | 前台可见时完整生命周期 |
Service | 后台任务处理 | 无UI,长期运行需谨慎 |
Broadcast | 系统/应用事件通知 | 异步消息传递机制 |
ContentProvider | 数据共享 | 跨进程数据访问接口 |
Fragment管理
// Fragment替换示例
supportFragmentManager.beginTransaction()
.replace(R.id.container, MyFragment())
.addToBackStack(null)
.commit()
数据存储方案对比
存储类型 | 适用场景 | 性能特征 |
SharedPreferences | 轻量级键值存储 | 毫秒级读写速度 |
SQLite | 结构化数据持久化 | 支持复杂查询,万级数据量 |
Room | 对象关系映射 | 编译时校验,LiveData支持 |
File存储 | 多媒体/配置文件 | 大文件存储优势明显 |
DataStore | 键值对偏好设置替代方案 | 异步处理,协议兼容性好 |
网络通信最佳实践
网络权限配置
<!-AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
网络请求封装
// Retrofit单例模式
object ApiService {
private val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(MyApi::class.java)
}
UI设计与优化
Material Design规范
- 组件使用:优先使用MDC库组件(如FloatingActionButton)
- 主题定制:通过values/styles.xml配置颜色、字体等主题属性
- 适配策略:使用ConstraintLayout实现响应式布局
性能优化技巧
- 布局优化:减少嵌套层级(建议不超过4层)
- 图片压缩:使用WebP格式,启用.jpeg压缩
- 内存管理:及时调用bitmap.recycle()释放资源
- 卡顿监控:使用Android Profiler检测主线程阻塞
测试与发布流程
测试类型矩阵
测试类型 | 工具/方法 | 适用阶段 |
单元测试 | JUnit + Mockito | 本地开发阶段 |
UI测试 | Espresso | 功能验证阶段 |
性能测试 | Android Profiler | 发布前优化阶段 |
CTS测试 | VTS(Validation Test Suite) | Google Play上架必备 |
发布准备清单
- 生成签名密钥(jks文件)
- 配置build.gradle中的release参数
- 通过Bundle Tool优化APK大小
- 在Alpha/Beta渠道进行灰度测试
- 提交至Google Play Console审核
常见问题解决方案
安装包过大处理
- ProGuard混淆:启用代码混淆压缩(minifyEnabled true)
- 资源优化:删除无用资源文件,使用vector drawable
- 多APK拆分:配置splits { abi { enable true } }按架构拆分
- 动态加载:将非核心功能模块化(如使用Dynamic Feature Module)
64位支持配置
// build.gradle配置示例
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
}
}
[问题与解答]
Q1:如何在Retrofit中处理多个基础URL?
A:可以使用@Url
注解动态设置,或通过Retrofit.Builder
创建多个实例。
interface ApiService {
@GET("path/{id}")
suspend fun getData(@Path("id") id: String): Response<Data>
}
// 调用时动态传入baseUrl
val retrofit = Retrofit.Builder()...baseUrl(dynamicUrl).build()
Q2:Android 11+存储权限适配方案有哪些?
A:推荐使用Storage Access Framework:
- 通过ACTION_OPEN_DOCUMENT访问文件
- 申请MANAGE_EXTERNAL_STORAGE权限(需谨慎)
- 使用MediaStore API操作媒体文件
- 采用Scoped Storage模式(自动分区存储