2.3 Android Studio及SDK
2.3.1 下载和配置Android Studio
Google提供了Windows 32/64、Mac和Linux四个不同平台的Android Studio版本供我们下载和使用。
选择Linux版本,下载android-studio-ide-171.4443003-linux.zip文件到本地,约740MB大小。
$ unzip android-studio-ide-171.4443003-linux.zip $ tree -L 1 android-studio android-studio ├── bin ├── build.txt ├── gradle ├── Install-Linux-tar.txt ├── jre ├── lib ├── license ├── LICENSE.txt ├── NOTICE.txt └── plugins 6 directories, 4 files $ cd android-studio/bin $ ./studio.sh//启动Android Studio
注意
(1)第一次启动Android Studio将启动安装向导,可在线更新Android SDK、Gradle等工具包。要关闭启动安装向导,可修改bin目录下的idea.properties配置文件,增加一行配置信息如下:
disable.android.first.run=true
(2)每次启动Android Studio都需要进入android-studio/bin目录,再运行studio.sh脚本,操作较多。比较省事的办法是增加一个desktop图标,在Ubuntu Activity菜单中可方便启动,具体的操作如下:
$ sudo vi /usr/share/applications/androidstudio.desktop//需要root权限 //增加以下配置信息 [Desktop Entry] Name=androidstudio Comment=androidstudio Type=Application Terminal=false Icon=/home/android/tools/android-studio/bin/studio.png Exec=/home/android/tools/android-studio/bin/studio.sh
单击Ubuntu Activity,输入androidstudio即可匹配出Android Studio应用,再单击Android Studio图标即可启动它了。
2.3.2 Android SDK下载及配置和使用
Android SDK的下载页面与Android Studio在同一个页面,谷歌也提供了Windows、Mac和Linux三个平台的版本供我们下载和使用。
同样选择Linux版本,下载sdk-tools-linux-3859397.zip到本地,约130MB大小。
$ unzip sdk-tools-linux-3859397.zip $ tree -L 1 tools/ tools/ ├── android ├── bin ├── emulator ├── emulator-check ├── lib ├── mksdcard ├── monitor ├── NOTICE.txt ├── proguard ├── source.properties └── support 4 directories, 7 files
注意
(1)此版本的Android SDK是基本的Android命令行工具,可以使用此工具中包含的sdkmanager工具下载和更新其他的SDK工具包。
(2)使用Android Studio通过界面的方式可以更加方便地管理Android SDK。
启动Android Studio,在Configure菜单中选择SDK Manager或者通过File菜单打开的Settings界面,进入Android SDK管理界面,选择Edit编辑Android SDK需要保存的路径,如图2-4所示。
图2-4 Android Studio中Android SDK管理界面
后续都是界面向导式的操作,我们只需关注Android SDK的保存路径即可。本例中的路径为:~/Android/Sdk。接受License,开始下载,完成后,我们再查看两个SDK的异同。
$ cd ~/Android $ tree -L 1 Sdk/ Sdk/ ├── build-tools ├── emulator ├── extras ├── patcher ├── platforms ├── platform-tools ├── sources └── tools 8 directories, 0 files
根据图2-4所示,其实我们仅安装了SDK框架,并未包含具体的SDK内容。接着通过Android Studio中的Android SDK Manager增加Android SDK的内容;在SDK Platforms和SDK Tools两个选项卡中下载和安装自己想要的内容。本书选择了Android 8.0(Oreo)和SDK Tools中的基础工具。
注意
(1)SDK Manager界面列出了Android已经发布的所有SDK版本,选择安装的Android SDK版本越多,下载和安装的时间就越长,需要的磁盘空间就越大。读者可以根据自己的兴趣和需要选择下载。
(2)Android SDK安装完成后,还请记录SDK中对应工具的PATH路径,具体操作如下:
$ vi ~/.bashrc //增加以下配置信息 export ANDROID_HOME=~/Android/Sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools $ source ~/.bashrc//重新加载配置信息 $ adb devices //验证Android SDK的adb工具是否可以使用 List of devices attached
2.3.3 使用Android SDK启动Android虚拟设备
启动Android Studio,单击Tools菜单→Android选项→AVD Manager,打开AVD Manager,通过界面向导式的操作创建虚拟设备。
本例中选择硬件为Phone,平台为Nexus 6P,API为26即Android O,详情如图2-5所示。
图2-5 创建Android虚拟设备
2.3.4 Android调试工具adb的使用方法
Android模拟设备启动完成后,会默认开启5554端口连接到计算机,这时可运行adb devices命令查看连接到本地计算机上的Android设备列表,详情如下。
$ adb devices List of devices attached emulator-5554 device //设备状态为正常情况,可查看模拟器运行日志
查看虚拟机运行日志:
• adb logcat
查看应用日志,可结合“|grep”过滤匹配自己想查看的日志内容。
• adb logcat –b radio
查看RIL日志。
注意
adb无法连接Android设备时,设备连接状态为offline或no permissions,可尝试使用root用户执行adb kill-server命令重启设备连接。一般来说,adb kill-server重启设备连接的有效期与Ubuntu系统运行结束的周期一致,开机或重启一次Ubuntu便需要重启一次设备连接。
2.3.5 相关技巧汇总
1. adb logcat日志输出脚本
我们在开发、调试Android代码的过程中使用最多的就是adb命令,通过它我们可以获取到想要的日志信息,来帮助我们分析、定位程序逻辑。
查看main日志的命令:adb logcat –vthreadtime
查看radio日志的命令:adb logcat -vtime –b radio
查看event日志的命令:adb logcat -vtime -b events
要简化上述命令就需要编写一些Shell脚本,放置在~/bin目录下即可,此目录之前已经加入了PATH环境变量,因此新加入的Shell脚本不用再配置环境变量,随时可以使用。
$ vi ~/bin/mlog #!/bin/sh adb logcat -vthreadtime $1 $2 $3 //加入$1 $2 $3是为了传入参数,方便命令的扩展 $ mlog -s *:W//可以在任何路径执行mlog命令,查看main日志中warning级别以上的日志 - waiting for device –
注意
读者也可以根据需要定制一些自己的脚本,不再局限于Android日志相关命令。比如,adb kill-server、adb devices、adb shell getprop等常用命令。
2. 查找代码脚本
面对Android浩瀚的代码量,如何能快速地找到一些关键字呢?Android源码中已经准备了对应的脚本工具,就在源码主目录下的build/envsetup.sh文件中。
$ gedit build/envsetup.sh function jgrep() //查找并匹配java文件中对应的关键字 { find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.java" \ -exec grep --color -n "$@" {} + } function cgrep() //查找并匹配c相关文件中对应的关键字 { find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f \ (-name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \ -exec grep --color -n "$@" {} + } ......
当然还有ggrep、resgrep、mangrep、sepgrep等脚本信息可以供我们使用,但要使用这些脚本首先需要执行source build/envsetup.sh。一劳永逸的方法就是将这些需要的脚本写入~/.bashrc用户配置文件中,这样无论当前用户在什么路径都可以执行这些命令了。