安卓开发环境搭建
开发工具配置
工具/步骤 |
说明 |
JDK安装 |
需安装JDK8及以上版本(推荐JDK11),配置环境变量JAVA_HOME |
Android Studio |
官方集成开发环境,内置Gradle构建工具 |
SDK配置 |
通过SDK Manager下载对应版本的Android SDK(建议最低API 21) |
模拟器配置 |
创建AVD(Android Virtual Device)时建议选择x86架构镜像 |
项目结构解析
app/
├── src/
│ ├── main/ (主代码目录)
│ │ ├── java/ (Kotlin/Java源码)
│ │ ├── res/ (资源文件)
│ │ └── AndroidManifest.xml (配置清单)
├── build.gradle (模块级构建配置)
└── build.gradle (项目级配置)
核心开发技术
编程语言选择
特性 |
Kotlin |
Java |
空安全 |
内置空安全机制 |
需手动处理NullPointerException |
扩展函数 |
支持 |
不支持 |
协程支持 |
原生支持 |
需第三方库 |
代码简洁度 |
更高 |
较低 |
UI开发要点
- 布局类型:ConstraintLayout(约束布局)、LinearLayout(线性布局)、RelativeLayout(相对布局)
- 控件体系:ViewGroup(容器类)与View(基础控件),特殊控件如RecyclerView、BottomNavigationView
- Material Design:使用MDC库实现标准Material组件(如FloatingActionButton、SwipeRefreshLayout)
数据存储方案
存储类型 |
适用场景 |
示例API |
SharedPreferences |
轻量级键值存储 |
getSharedPreferences().edit().putString() |
SQLite/Room |
结构化数据存储 |
@Entity 、@Dao 、@Database 注解 |
文件存储 |
多媒体/配置文件 |
openFileOutput() /getFilesDir() |
网络存储 |
远程数据同步 |
Retrofit+OkHttp组合 |
高级开发技术
网络通信优化
- HTTP客户端:Retrofit(声明式接口) vs OkHttp(底层实现)
- 缓存策略:
- OKHttp缓存:
Cache(File, long)
构造函数设置缓存大小
- Room持久化:
@Query
配合Flow
实现实时更新
- 协议优化:使用Protobuf替代JSON减少传输体积
异步处理方案
技术 |
适用场景 |
特点 |
AsyncTask |
UI线程与子线程通信 |
已过时,保留兼容性 |
Handler+Thread |
简单任务调度 |
Looper机制复杂 |
RxJava |
响应式编程 |
背压处理困难 |
Kotlin协程 |
现代异步方案 |
语法简洁,无回调地狱 |
性能优化策略
内存优化
- 内存泄漏检测:使用Android Profiler的Heap Viewer
- 大图处理:BitmapFactory.Options设置inSampleSize进行采样压缩
- 对象复用:RecyclerView.ViewHolder池化机制
启动优化
优化手段 |
效果 |
实施方式 |
懒加载 |
减少初始化时间 |
使用ViewStub延迟加载布局 |
多Dex拆分 |
降低方法数 |
enableMultiDex()启用分包 |
预渲染 |
加快首屏显示 |
使用setContentView前预创建资源 |
常见问题解决方案
权限适配问题
- 运行时权限:针对Android 6.0+的动态申请
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA), REQUEST_CODE)
}
- 权限组:同一组权限只需申请一次(如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE同属STORAGE组)
适配不同屏幕尺寸
- 密度无关像素:使用dp单位定义尺寸(1dp≈160dpi下的1px)
- 最小宽度限定符:通过sw
dp格式指定布局文件(如layout-sw600dp适配平板)
- 百分比布局:ConstraintLayout的layout_constraintWidth_percent属性
第三方库推荐
领域 |
推荐库 |
版本要求 |
图片加载 |
Glide/Picasso |
API 14+ |
JSON解析 |
Gson/Moshi |
API 9+ |
路由框架 |
AlibabaARouter/DeepLinkDispatch |
API 16+ |
日志管理 |
Timber/Logcat |
API 1+ |
依赖注入 |
Dagger2/Hilt |
API 16+ |
相关问题与解答
Q1:Kotlin与Java在安卓开发中的主要区别是什么?如何选择?
A1:主要区别体现在:

- 语法简洁性:Kotlin支持空安全、扩展函数、协程等现代特性,可减少30%-50%代码量
- 互操作性:Kotlin与Java代码可无缝互调,现有Java库可直接使用
- 空指针安全:Kotlin通过可空类型(?)强制处理空值,避免NullPointerException
- 协程支持:Kotlin原生支持挂起函数,简化异步编程
选择建议:新项目优先Kotlin,维护老项目可混合使用(Android Studio支持Java/Kotlin混合编译)
Q2:为什么RecyclerView会出现卡顿?如何优化?
A2:常见卡顿原因及优化方案:
| 问题原因 | 优化方案 |
|———-|———-|
| 过度创建ViewHolder | 复用机制:setHasFixedSize(true)
+ ViewHolder缓存池 |
| 复杂布局层级 | 使用ConstraintLayout减少嵌套,合并装饰视图 |
| 频繁绑定数据 | 批量操作:DiffUtil
计算差异,ListAdapter
局部更新 |
| 图片加载不当 | 异步解码:Glide/Picasso的占位图+内存缓存策略 |
| 动画执行效率 | 硬件加速:开启android:hardwareAccelerated="true"
,使用PropertyAnimator |