工具资源
干货分享 | Android 开发常用「命令行」汇总!
大家好,我是牢鹅!作为一名摸爬滚打多年的 Android 程序员,深知命令行在开发过程中的重要性。命令行用好了,效率提升可不是一星半点。 今天就来跟大家好好聊聊 Android 日常开发中那些常用的命令行,从 Gradle 到 ADB、Apktool,再到 Git、Linux 命令等,保证干货满满,而且尽量说得通俗易懂,让你听得懂、用得上!(本期内容干货满满,篇幅较长,建议收藏转发,慢慢阅读,希望对你有帮助!) 一、Gradle:构建项目的管家 Gradle可以说是 Andr

大家好,我是牢鹅!作为一名摸爬滚打多年的 Android 程序员,深知命令行在开发过程中的重要性。命令行用好了,效率提升可不是一星半点。
今天就来跟大家好好聊聊 Android 日常开发中那些常用的命令行,从 Gradle 到 ADB、Apktool,再到 Git、Linux 命令等,保证干货满满,而且尽量说得通俗易懂,让你听得懂、用得上!(本期内容干货满满,篇幅较长,建议收藏转发,慢慢阅读,希望对你有帮助!)

#### 一、Gradle:构建项目的管家
Gradle可以说是 Android 开发中构建项目的核心了,熟练掌握它的命令能让我们在构建、打包等操作中事半功倍。
**常用命令**
•
**`./gradlew assembleDebug`**:生成调试版本的APK,方便开发过程中快速测试。
•
**`./gradlew assembleRelease`**:生成正式发布的APK,包含代码混淆等优化操作。
•
**`./gradlew clean`**:清理项目,删除旧的构建文件,避免构建冲突。
•
**`./gradlew build`**:完整构建项目,包括编译代码、打包资源等。
•
**`./gradlew tasks`**:列出项目中所有可用的任务,方便你查看Gradle支持的操作。
•
**`./gradlew check`**:运行项目的检查任务,比如代码检查、单元测试等。
•
**`./gradlew assembleDebug --stacktrace`**:如果构建失败,加上`--stacktrace`可以查看详细的错误堆栈信息。
•
**`./gradlew assembleDebug --info`**:在构建过程中输出更多的调试信息,方便排查问题。
•
**`./gradlew assembleDebug --scan`**:生成一个Gradle构建扫描报告,帮助你分析构建性能和问题。
•
**`./gradlew assembleDebug --offline`**:在离线模式下构建项目,适合没有网络环境的场景。
•
**`./gradlew installDebug`**: 不仅会构建 Debug 版本的 APK,还会自动将其安装到连接的设备上,省去了我们手动拖放安装的步骤,非常方便。对应的,**`./gradlew installRelease`** 会安装 Release 版本的 APK,但同样需要先处理好签名问题。
•
**`./gradlew uninstallDebug`**: 能卸载设备上的 Debug 版本应用,当我们需要干净地重新安装时,这个命令就派上用场了。
#### 二、ADB:和设备交互的桥梁
ADB(Android Debug Bridge)是一个非常重要的工具,通过它的命令,我们可以实现安装应用、查看日志、调试等多种操作,让你可以通过电脑来控制手机。
**常用命令**
•
**`adb devices`**:查看当前连接到电脑的设备列表。
•
**`adb install `**:安装APK文件到设备上。
•
**`adb uninstall `**:卸载指定包名的APP。
•
**`adb logcat`**:查看设备的日志输出,帮助调试问题。
•
**`adb shell`**:进入设备的命令行模式,可以运行Linux命令。
•
**`adb pull `**:从设备上拉取文件到电脑。
•
**`adb push `**:将文件从电脑推送到设备上。
•
**`adb reboot`**:重启设备。
•
**`adb kill-server`**:关闭ADB服务。
•
**`adb start-server`**:启动ADB服务。
•
**`adb shell am start -n /`**:启动指定的Activity。
•
**`adb shell input keyevent `**:模拟按键事件,比如`adb shell input keyevent 4`表示返回键。
•
**`adb shell input tap `**:模拟屏幕点击事件。
•
**`adb shell input swipe `**:模拟屏幕滑动事件。
•
**`adb shell pm list packages`**:列出设备上安装的所有包名。
•
**`adb shell pm clear `**:清除指定APP的数据。
•
**`adb shell dumpsys meminfo `**:查看指定APP的内存使用情况。
•
**`adb shell dumpsys cpuinfo`**:查看设备的CPU使用情况。
#### 三、Apktool:反编译与重打包的好帮手
apktool 是个非常实用的工具,有时候,我们可能需要查看一个APK文件的内部结构,分析第三方应用,比如它的资源文件、布局文件等。这时候,Apktool就派上用场了。
**常用命令**
•
**`apktool d `**:反编译APK文件,解压出资源文件和布局文件。
•
**`apktool b `**:重新打包APK文件。
•
**`apktool d -o `**:指定反编译后的输出目录。
•
**`apktool b -o `**:指定重新打包后的APK文件名。
•
**`apktool if `**:安装框架资源文件,用于反编译系统APP。
•
**`apktool d --no-src`**:反编译时不提取源码文件,只提取资源文件。
•
**`apktool d --no-res`**:反编译时不提取资源文件,只提取源码文件。
•
**`apktool d --only-main-classes`**:只反编译主类文件,忽略其他类文件。
•
**`apktool b --use-aapt2`**:使用AAPT2工具进行打包,适用于较新的Android版本。
•
**`apktool d --force`**:强制覆盖已存在的输出目录。
#### 四、Git:版本控制的必备技能
Git是一个版本控制系统,它可以帮助你管理代码的版本。作为目前最流行的版本控制系统,在团队开发和个人项目管理中都必不可少,掌握它的常用命令能让我们更好地进行代码管理。
**常用命令**
•
**`git init`**:初始化一个Git仓库。执行后会生成一个.git 目录,里面包含了 Git 仓库的所有信息。
•
**`git add `**:将文件添加到暂存区。
•
**`git clone 仓库地址`** :可以克隆远程仓库到本地,比如**`git clone https://github.com/example/myproject.git`**,就会把远程的 myproject 仓库克隆到本地。
•
**`git commit -m "commit message"`**:提交代码,并添加提交信息。
•
**`git pull`**:从远程仓库拉取代码。
•
**`git push`**:将代码推送到远程仓库。
•
**`git status`**:查看当前仓库的状态,包括哪些文件被修改了。
•
**`git log`**:查看版本历史记录。
•
**`git branch`**:查看当前仓库的所有分支。
•
**`git checkout `**:切换到指定的分支。
•
**`git merge `**:将指定分支的代码合并到当前分支。
•
**`git branch -d `**:删除指定的分支。
•
**`git stash`**:将当前未提交的更改暂存起来,方便切换分支。
•
**`git stash pop`**:恢复暂存的更改。
•
**`git diff`**:查看文件的修改差异。
•
**`git reset --hard`**:将代码回退到最近一次提交的状态。
•
**`git revert `**:撤销指定的提交。
•
**`git blame `**:查看文件的每一行是谁提交的。
•
**`git remote -v`**:查看远程仓库的地址。
#### 五、Linux命令:基于命令行的操作系统指令
在Android开发中,我们经常会在Linux环境下工作,比如使用Linux服务器或者在Mac电脑上开发。掌握一些常用的Linux命令是非常有帮助的。
**常用命令**
•
**`ls`**:列出文件和目录。
•
**`cd`**:切换目录。
•
**`cd /path/to/directory`**:切换到指定目录。
•
**`cd ..`**:切换到上一级目录。
•
**`cp`**:复制文件或目录。
•
**`cp file1.txt /home/user/backup`**:将`file1.txt`复制到`/home/user/backup`目录。
•
**`cp -r folder1 /home/user/backup`**:递归复制整个目录。
•
**`mv`**:移动文件或或重命名文件。
•
**`mv file1.txt /home/user/backup`**:将`file1.txt`移动到`/home/user/backup`目录。
•
**`mv oldname.txt newname.txt`**:将文件`oldname.txt`重命名为`newname.txt`。
•
**`rm`**:删除文件或目录。
•
**`rm file1.txt`**:删除文件`file1.txt`。
•
**`rm -r folder1`**:递归删除整个目录。
•
**`rm -f file1.txt`**:强制删除文件,不提示确认。
•
**`mkdir`**:创建目录。
•
**`mkdir newfolder`**:创建一个名为`newfolder`的目录。
•
**`mkdir -p /home/user/project/subfolder`**:递归创建多级目录。
•
**`rmdir`**:删除空目录。
•
**`chmod`**:修改文件权限。
•
**`chown`**:修改文件的所有者。
•
**`find`**:查找文件。
•
**`find /home/user -name "*.txt"`**:在`/home/user`目录下查找所有扩展名为`.txt`的文件。
•
**`find . -type f -size +10M`**:查找当前目录下所有大于10MB的文件。
•
**`grep`**:搜索文件内容。
•
**`grep "error" log.txt`**:在`log.txt`文件中搜索包含“error”的行。
•
**`grep -r "error" /home/user/logs`**:递归搜索`/home/user/logs`目录下所有文件中包含“error”的内容。
•
**`cat file1.txt`**:查看文件file1.txt内容。
•
**`less`**:分页查看文件内容。
•
**`head`**:查看文件的前几行。
•
**`tail`**:查看文件的后几行。
•
**`touch`**:创建空文件或更新文件时间戳。
•
**`ps`**:查看当前运行的进程。
•
**`kill`**:终止进程。
•
**`top`**:查看系统资源使用情况。
•
**`df`**:查看磁盘空间使用情况。
•
**`du`**:查看文件或目录的大小。
#### 六、网络命令:排查网络问题的助手
在开发涉及网络请求的应用时,我们经常需要调试网络请求。掌握一些网络命令可以帮助你快速定位问题。
**常用命令**
•
**`ping`**:测试网络连通性。
•
**`ping google.com`**:向`google.com`发送ICMP请求,测试网络连通性。
•
**`ping -c 4 google.com`**:向`google.com`发送4次ICMP请求。
•
**`curl`**:发送网络请求,测试API接口。
•
**`curl -X GET https://api.example.com/data`**:发送GET请求到指定的API接口。
•
**`curl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com/submit`**:发送POST请求,提交JSON数据。
•
**`curl -I https://api.example.com/data`**:只获取HTTP响应头。
•
**`netstat`**:查看网络连接状态。
•
**`telnet google.com 80`**:测试`google.com`的80端口是否开放。
•
**`nc`**(`netcat`):用于网络调试和数据传输。
•
**`traceroute`**:查看数据包的路由路径。
•
**`ifconfig`**:查看和配置网络接口。
•
**`ip addr`**:查看网络接口的IP地址。
•
**`ip route`**:查看和配置路由表。
•
**`ss`**:查看套接字信息,类似于`netstat`但更强大。
•
**`whois google.com`**:查询`google.com`的注册信息。
•
**`host google.com`**:查询`google.com`的IP地址。
•
**`nslookup google.com`**:查询`google.com`的DNS信息。
•
**`tcpdump`**:抓取网络数据包,用于分析网络流量。
•
**`wireshark`**:图形化工具,用于抓包和分析网络流量。
#### 结语
好啦,以上就是牢鹅在 Android 开发中常用的一些命令行工具和命令,当然还有很多其他的命令和参数,在实际开发中可以根据具体需求去探索和使用。
这些工具和命令虽然看起来有点复杂,但其实只要多用几次,你就会发现它们非常实用。掌握这些命令,可以让你在开发过程中更加高效,也能帮助你快速定位和解决问题。
推荐阅读

评论
一起交流这篇文章。