Android Studio
Android Studio(AS) 介绍
- 学习的必要性
原因 | 说明 |
---|---|
发展趋势 | google公司把官方IDE工具定位AS,并停止了EclipseADT的维护 |
工作 | 越来越多的公司在使用AS作为开发工具 |
学习 | Github上越来越多的android开源项目是AS开发的 |
安装
-
安装需求
- JDK 1.7
- 2G空闲内存
- 500M磁盘空间
-
安装方式
- 解压IDE工具(推荐)
- 安装IDE工具
- 安装IDE+SDK+AVD
-
运行
- 32 位运行android-studio\bin\studio.exe
- 64 位运行android-studio\bin\studio64.exe
-
配置
- AS的android插件会尝试下载SDK更新,因国内网络问题,会导致下载失败无法启动程序
初次运行无法进入程序(网络问题,无法下载SDK更新)
在 AS安装目录/bin/idea.properties最后添加
disable.android.first.run=true
- 常见问题
tools.jar缺失,或其他的jar缺失
原因:jdk没有安装好。
解决:卸载当前jdk、删除java环境变量;重启;安装正确的jdk,配置环境变量
建立HelloWorld项目
- 重要概念
中文 | Eclipse | AS |
---|---|---|
工作空间 | WorkSpace | Project |
工程(库或应用) | Project | Module |
As中强调应该把相关的工程放在同一个工作空间中
编译过程
见图 build.png
gradle及相关文件
所属 | 文件 | 类型 | 作用 |
---|---|---|---|
Project | .gradle | 文件夹 | 配置文件,无需更改、关注 |
Project | gradle | 文件夹 | 包含了gradle-wrapper相关文件,无需更改、关注 |
Project | build.gradle | 文件 | 构建Project的配置,如idea的gradle插件、中央仓库信息等 |
Project | gradle.properties | 文件 | gradle启动的配置,如java虚拟机的内存占用等,一般无需修改 |
Project | gradlew/gradlew.bat | 文件 | 初始化gradle相关变量的脚本 |
Project | settings.gradle | 文件 | 本project下有哪些module |
Module | build.gradle | 文件 | !!!重要:打包apk的相关信息(包名、版本、依赖等) |
- module中的build.gradle详细说明
// 表示这个项目编译完成后,是一个anrdoid应用程序
apply plugin: 'com.android.application'
// 表示这个项目编译完成后,是一个anrdoid的库
//apply plugin: 'com.android.library'
android {
// 编译的sdk版本,见sdk\platforms
compileSdkVersion 23
// 构建工具的版本,见sdk\build-tools
buildToolsVersion "23.0.1"
defaultConfig {
// 包名:用于在市场上区分应用的唯一性的标示
applicationId "cn.itcast.as.helloworld"
// 最小sdk版本、目标sdk版,原先是放在清单文件中的
minSdkVersion 15
targetSdkVersion 23
// 应用程序的版本号,和版本码,原先是放在清单文件中的
versionCode 1
versionName "1.0"
}
// 构建类型
buildTypes {
// debug版默认有配置,没有写在这里
// 发行版
release {
// 是否混淆
minifyEnabled false
// 混淆配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// 关键:项目的依赖
dependencies {
// 在项目中的libs中的所有的.jar结尾的文件,都是依赖
compile fileTree(dir: 'libs', include: ['*.jar'])
// 依赖于junit测试
testCompile 'junit:junit:4.12'
// 还依赖于appcompat-v7,23.1.0版本
compile 'com.android.support:appcompat-v7:23.1.0'
}
AS的界面介绍
见图 界面
Project与Module目录和文件介绍
所属 | 文件 | 类型 | 作用 |
---|---|---|---|
Project | .idea | 文件夹 | idea工具的配置,类似eclipse的.metadata文件夹 |
Project | build | 文件夹 | 构建project的临时、最终数据的存放目录 |
Project | .gitignore | 文件 | 同步git的忽略文件、文件夹配置,其他版本控制可参考此文件设置忽略 |
Project | HelloWorld.iml | 文件 | idea的配置信息 |
Project | local.properties | 文件 | 本机的sdk、ndk存放目录 |
Module | build | 文件夹 | 构建项目的临时、最终文件存放目录 |
Module | libs | 文件夹 | 放jar包的文件夹 |
Module | src | 文件夹 | 代码、清单文件、资源的存放目录 |
Module | .gitignore | 文件 | 同步git的忽略文件、文件夹配置,其他版本控制可参考此文件设置忽略 |
Module | app.iml | 文件 | idea的配置信息 |
Module | proguard-rules.pro | 文件 | 混淆配置文件 |
Module | build\outputs\apk | 文件夹 | 生成的apk文件夹的存放路径 |
Module | build\generated\source\r | 文件夹 | 各种编译类型下的R文件的存放路径 |
Module | src\main\java | 文件夹 | java代码存放路径 |
Module | src\main\AndroidManifest.xml | 文件 | 清单文件 |
Module | src\androidTest | 文件夹 | 安卓测试代码存放路径 |
Module | src\test | 文件夹 | 测试代码存放路径 |
Module | src\main\res | 文件夹 | 资源存放路径 |
Module | src\main\res\mipmap-* | 文件夹 | 存放应用的图标的文件夹(会优化) |
Module | src\main\jni | 文件夹 | c或c++的动态链接库(so文件)的存放路径 |
Module | src\main\assets | 文件夹 | 资产目录 |
Module | src\main\res\raw | 文件夹 | 原始文件存放路径 |
AS的主要设置
设置 | 路径 | 常用 |
---|---|---|
程序外观 | Appearance & Behavior --> Appearance | Theme主题;Name、Size 字体样式和大小 |
编码区域外观 | Editor–> General --> Appearance | Show line numbsers 显示行号 ; show method separators 方法分割符;Show right margin右边界限 |
编码区域字体大小 | Editor–> Color & Font --> Font | Primary font 字形; size 字号;line space 行距;(先save as,保存自己的配置,才能修改) |
编码格式 | Editor --> File Encodings | IDE Endoding;Project Encoding ;Default encoding for properties files; 都设置成utf-8 |
代码提示大小写 | Editor–> General --> Code Completion | Case Sensitive completion 设置为none,在键入时,可不区分大小写进行提示(提示内容最多) |
logcat颜色 | Editor --> Colors& Fonts --> Android Logcat | 选中对应级别的日志,可修改颜色(先取消勾选 Use inherited attributes) |
快捷键
-
快捷键方案
settings --> keymap -
查找和修改快捷键
以意找键
以键找意 -
活动模板
settings --> Editor --> Live Templates
通过缩写完成代码
如何自定义logmp,把方法名作为tag,把方法参数作为msg
快捷键使用场景;变量定义 -
后缀补全
settings --> Editor --> General --> Postfix Completion
强大的功能,书写代码更加自然,但无法自定义 -
重要、常用快捷键
作用 | 快捷键 |
---|---|
打开视窗 | alt + 带下划线的字母或数字 |
格式化 | ctrl + alt + L |
复制 | ctrl +D |
删除 | ctrl + Y |
代码生成 | alt + insert |
快速修复错误 | alt + enter |
提取成员变量 | ctrl + alt + F |
提取局部变量 | ctrl + alt + V |
调试
- 进入调试的两种方式
- 以调试模式运行,小虫子
- 在运行时开始调试,小虫子左边第二个按钮
- 4种断点类型
- 行断点
- 方法断点
- 成员变量断点
- 异常断点
- 调试快捷键
意义 | 快捷键 |
---|---|
放行(在下一个断点停下) | F9 |
执行一行 | F8 |
钻入方法 | F7 |
钻出方法 | Shfit + F8 |
Module的导入
- 导入Eclipse项目
File --> New --> Import Module - 导入AS项目
File --> New --> Import Module - 导入AAR
File --> New --> New Module --> Import .jar/.aar package
AS的依赖管理
- 依赖的三种模式
- 文件
- 远程
- 库
插件管理
- 插件安装的两种方式
- 本地文件
- 远程下载
- 常用插件
- genymotion 可在as中启动genymotion模拟器
- butterknife-zelezny 可配合butterknife依赖,完成“一键findViewById”
打包发布的APK
build --> Generate Signed APK
- 生产签名文件
- 打包
代码混淆
- 概念
减小apk的大小(删除无用的类,替换类名、变量、方法名为短名称)
降低反编译后的代码可读性
-
开启或关闭混淆
build.gradle 中 设置minifyEnabled true -
系统混淆配置说明
-
项目特有混淆配置
添加到 proguard-rules.pro中 -
第三方类库使用混淆配置
一般来说,第三方类库都会说明如何配置混淆文件 -
常用混淆配置(可记忆)
配置 | 说明 |
---|---|
-keep class package.name.Klass {*;} | 特定的类不被混淆 |
-keep class package.name.** {*;} | 某个包下的类不被混淆 |
-keep class * extends java.lang.annotation.Annotation { *; } | 继承与某类的类不被混淆 |
- 面试题:为什么四大组件没有配置不混淆但是没有被混淆
aapt工具生成混淆配置时,检查了清单文件,生成了混淆配置文件(在打包的module目录的 build\intermediates\proguard-rules\release\aapt_rules.txt),对于四大组件没有混淆
多APK打包
- 意义
为不同的市场,或不同客户提供不同的apk。
- 操作步骤
- 在project structure中建立多个flavor
- 在build.gradle中在多个flavor中添加配置,比如manifestPlaceholders = [CITY :“深圳”]
其中 CITY是键,"深圳"是值
- 在打包apk时,就会替换清单文件中的${CITY}的内容为"深圳",可在清单文件中添加metadata标签
- 在代码中获取清单文件中的值
通过packagemanager获取
版本控制,以SVN为例
SVN环境
- 安装TortoiseSVN
!!! 注意勾选 command line client tools
- 在as中,设置svn的命令行工具
settings --> Version Control --> Subversion -->General --> use command line client
选中TortoiseSVN的安装目录中的bin文件夹中的svn.exe
上传本地代码
-
设置同步
settings --> Version Control
把project后面加上版本控制的类型 -
设置忽略文件
settings --> Version Control --> Ignored Files
3种方式:特定文件、指定目录下的文件、特定规则文件 -
提交目录
project 右键 --> Subversion --> share directory
这一步只提交了目录,文件并没有上传
- 上传文件
project 右键 --> Subversion --> submit directory
下载服务代码
在Welcome to Android Studio界面,点击第三个Check out project from Version Control
如果要求选择gradlle home,则选中用户目录下的(类似文件夹) .gradle\wrapper\dists\gradle-2.4-all\6r4uqcc6ovnq6ac6s0txzcpc0\gradle-2.4
提交代码,编辑冲突
project 右键 --> Subversion --> submit directory
好习惯:先update,再submit
- 冲突的解决
3种 接受服务器的,接受自己的,合并
英文 | 含义 |
---|---|
Accept Theirs | 用服务器的覆盖本地的 |
Accept Youts | 用本地的覆盖服务器的 |
Merge | 查看服务器和本地的,最终决定提交的内容 |
!!! 注意,在合并后,还需要submit
断开连接
-
断开连接
- 先删除配置
在settings --> version control -掉同步文件夹 - 再删除文件
删除.svn文件夹
- 先删除配置
-
忘记记录的用户名和密码
settings --> version control --> subversion -->clear auth cache