Android Telephony原理解析与开发指南
上QQ阅读APP看书,第一时间看更新

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用户配置文件中,这样无论当前用户在什么路径都可以执行这些命令了。