一、 AndroidStudio介绍
Google官方的Android集成开发环境(IDE = Integrated Development Environment),Eclipse + Adt插件的代替者。
l 趋势
原因 | 说明 |
发展趋势 | google公司把官方IDE工具定为AS,并停止了EclipseADT的维护 |
工作 | 越来越多的公司在使用AS作为开发工具,特别是大公司、好公司 |
学习 | Github上越来越多的android开源项目是AS开发的 |
l 特点
Android Studio | |
基于 | JetBrains公司的 IDEA 社区版 |
运行速度 | 快 |
程序界面 | 漂亮 |
编码速度 | 快(更智能的提示) |
插件 | 安装简单,自带很多插件 |
版本控制 | 多 |
内存占用 | 大 |
编译 | gradle |
依赖网络 | 是 |
其他 | 内置终端; UI编辑支持多屏预览;多APK打包 |
二、 安装
http://developer.android.com/sdk/index.html(需要翻墙才可以访问)
http://www.android-studio.org/ (Android Studio的中文社区)
1. 安装需求
o JDK 1.7
o 2G空闲内存
o 500M磁盘空间
2. 安装方式
o 解压IDE工具(推荐)
o 安装IDE工具
o 安装IDE+SDK+AVD
3. 运行
o 32 位运行android-studio\bin\studio.exe
o 64 位运行android-studio\bin\studio64.exe
4. 配置
o AS的android插件会尝试下载SDK更新,因国内网络问题,会导致下载失败无法启动程序
初次运行无法进入程序(网络问题,无法下载SDK更新)
在 AS安装目录/bin/idea.properties最后添加
disable.android.first.run=true
5. 常见问题
tools.jar缺失,或其他的jar缺失
原因:jdk没有安装好。
解决:卸载当前jdk、删除java环境变量;重启;安装正确的jdk(已提供合适的JDK安装文件,安装时不要安装JRE),配置环境变量
三、 创建应用程序
1. 建立HelloWorld项目
· 重要概念
中文 | Eclipse | AS |
工作空间 | WorkSpace | Project |
工程(库或应用) | Project | Module |
As中强调应该把相关的工程放在同一个工作空间中
四、 模拟器创建、程序的运行
运行程序.
五、 AS界面
· 整体
· 菜单 -File
· 菜单 - Build
· 快捷工具
· Project视窗
-Structure视窗
· 代码编辑区域
· 代码编辑- 布局文件的多屏预览
· Android 监控
· Message
六、 Gradle相关
0.1. 概念
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
https://zh.wikipedia.org/zh/Gradle
0.2. 编译过程
http://developer.android.com/tools/building/index.html
0.3. Gradle相关文件
· 重要
project 中的 settings.gradle 说明
project 中的build.gradle说明
module中的build.gradle详细说明
· 其他
所属 | 文件 | 类型 | 作用 |
Project | .gradle | 文件夹 | 配置文件,无需更改、关注 |
Project | gradle | 文件夹 | 包含了gradle-wrapper相关文件,无需更改、关注 |
Project | gradle.properties | 文件 | gradle启动的配置,如java虚拟机的内存占用等,一般无需修改 |
Project | gradlew/gradlew.bat | 文件 | 初始化gradle相关变量的脚本 |
七、 文件和文件夹说明
· Project根目录
文件/文件夹 | 说明 |
.idea/ | IDE的Project相关设置 |
app/ | 默认建立的module目录 |
build/ | 打包的临时目录 |
gradle/ | gradle的相关目录 |
.gradle/ | gradle的相关目录 |
.gitignore | git同步时的忽略的文件 |
builder.gradle | Project的gradle依赖 |
gradle.properties | project的gradle配置 |
gradlew | 执行gradle构建的脚本(un*x) |
gradlew.bat | 执行gradle构建的脚本(windows) |
local.properties | SDK目录设置 |
Project.iml | 存放module信息 |
settings.gradle | Project下有哪些Module |
· module目录
文件/文件夹 | 说明 |
build/ | 编译的中间数据、最终apk存放目录 |
build/source/r/debug/R.java | R文件 |
build/outputs/apk/ | APK文件默认位置 |
libs/ | 导入的jar包存放的位置 |
src/ | 源码(java、xml、..) |
src/androidTest/ | 测试代码存放位置 |
src/main/java/your/package/name | java代码 |
src/main/jniLibs/ | 动态连接库所在目录 |
src/main/assets/ | 资产文件存放目录 |
src/main/res/ | 资源目录 |
src/AndroidManifest.xml | 清单文件 |
src/main/res/mipmap/ | 一般放置应用图标 |
app.iml | 存放module信息(由AS创建) |
build.gradle | gradle的构建文件 |
proguard-rules.pro | 混淆设置 |
八、 设置
· 文件编码
· 程序外观
· 编辑区域外观
· logcat外观
九、 快捷键
1. 视窗快捷键
2. 代码补全
3. 快捷键方案修改 && 编辑快捷键
4. 活动模板
5. 后缀补全
6. 常用快捷键
动作 | 按键 |
删除行 | Ctrl + Y |
复制一行 | Ctrl + D |
上下移动代码 | Alt + Shift + Up/Down |
格式化代码 | Ctrl + Alt + L |
优化导导包 | Alt + Ctrl + O |
大小写转换 | Ctrl + Shift + U |
打开文件 | 两次shift |
注释代码(//) | Ctrl + / |
注释代码(/**/) | Ctrl + Shift + / |
生成代码 | Alt + Insert |
快速定位错误 | F2 |
查找 | Ctrl + F |
查看继承关系 | Ctrl + H |
查找+替换 | Ctrl + R |
快捷覆写方法 | Ctrl + O |
十、 调试
0.1. 进入调试的两种方式
· 以调试模式运行
· 运行后调试
需要注意 运行的程序的代码应该与所看到的是同一份,不然点击提示会错位
0.2. 如何打断点
· 代码左侧单击
· 代码左侧单击时按着shift键
0.3. 断点类型
断点类型 | 什么时候会停下来 | 注意 |
行断点 | 执行到此行 | 无 |
成员变量断点 | 被赋值 或 访问 | art虚拟机提供,需安卓5以上设备才有此功能 |
方法断点 | 进入方法或退出方法 | 会影响代码执行的效率,慎用 |
异常断点 | 出现了未捕获异常 及 捕获的异常 | 默认不开启 |
十一、 导入module
0.1. 导入Eclipse项目
File –> New –> Import Module
0.2. 导入AndroidStudio项目
File –> New –> Import Module
0.3. 导入AAR
File –> New –>New Module –> Import .jar/.aar package
十二、 删除导入的Module
当文件夹上显示了手机或柱状图 图标,说明此文件夹是受保护的,无法被删除
1. 取消保护
打开Project Struecture。 选中要删除的module,点上面的减号。 然后点确定
1. 删除文件
在原来是module的文件夹上点击鼠标右键,选中delete,在弹出的对话框上点确定。
十三、 导入依赖
1. 导入依赖
2. 导入Library
3. 导入文件jar包
4. 导入Module依赖
5. 对应关系
十四、 插件管理
1. 安装插件的两种方式
· 本地安装
· 网络安装
2. ButterKnife Zelezny的使用
十五、 打包APK
十六、 混淆
0.1. 作用及意义
· 减小apk大小,删除无用的类和方法
· 避免被反编译后重要的程序逻辑暴露
app/build.gradle
通用混淆文件说明
0.2. 项目特有的常用的混淆语法
· 特定的类不被混淆
-keep class package.name.Klass {*;}
· 某个包下的类不被混淆
-keep class package.name.** {*;}
· 继承与某类的类不被混淆
-keep class * extends java.lang.annotation.Annotation { *; }
0.3. 使用第三方jar包在混淆后出错
一般,都可以在网站上找到相应的混淆配置
比如
· butterknife
http://jakewharton.github.io/butterknife/ 查找 PROGUARD
· baidu map sdk
http://lbsyun.baidu.com/index.php?title=androidsdk/qa 查找 混淆
· xutils
https://github.com/wyouflf/xUtils 查找 混淆
十七、 版本控制
0.1. SVN环境
· 安装TortoiseSVN
!!! 注意勾选 command line client tools
· 在as中,设置svn的命令行工具
settings –> Version Control –> Subversion –>General –> use command line client
选中TortoiseSVN的安装目录中的bin文件夹中的svn.exe
0.2. 上传本地代码
· 设置同步
settings –> Version Control
把project后面加上版本控制的类型
· 设置忽略文件
settings –> Version Control –> Ignored Files
3种方式:特定文件、指定目录下的文件、特定规则文件
· 提交目录
project 右键 –> Subversion –> share directory
这一步只提交了目录,文件并没有上传到服务器
· 上传文件
project 右键 –> Subversion –> submit directory
0.3. 下载服务器的代码
在Welcome to Android Studio界面,点击第三个Check out project from Version Control
0.4. 提交代码,编辑冲突
project 右键 –> Subversion –> submit directory
好习惯:先update,再submit
· 冲突的解决
3种 接受服务器的,接受自己的,合并
英文 | 含义 |
Accept Theirs | 用服务器的覆盖本地的 |
Accept Youts | 用本地的覆盖服务器的 |
Merge | 查看服务器和本地的,最终决定提交的内容 |
!!! 注意,在合并后,还需要submit
0.5. 断开连接
· 断开连接
1. 先删除配置
在settings –> version control -掉同步文件夹
2. 再删除文件
删除.svn文件夹
· 忘记记录的用户名和密码
settings –> version control –> subversion –>clear auth cache