Android 系统开发工具大全

写给应用开发的 Android Framework 教程——玩转AOSP篇之 Android 系统开发工具推荐

下面推荐的是我常用的工具,如果你有好用的开发工具欢迎在评论区留言讨论交流。

1. SSH 服务与 Tabby Terminal

SSH 服务使得我们在其他平台上通过 SSH 客户端程序即可访问到我们的 linux 服务器。方便我们的开发工作。

接下来我们分为两步来介绍 ssh 服务的搭建以及客户端的使用:

1.1 配置 Ubuntu ssh 服务

  1. 安装 openssh-server
sudo apt install openssh-server
# 开机自启动
sudo systemctl enable ssh
# 重启 ssh 服务
sudo systemctl restart ssh
  1. 配置固定 IP 地址
sudo apt install net-tools -y  
cd /etc/netplan
# 备份旧的配置文件
sudo cp 00-installer-config.yaml  00-installer-config.yaml_before
# 修改配置文件:
sudo vim 00-installer-config.yamlnetwork:version: 2renderer: NetworkManagerethernets:enp0s5:   # 网卡名称dhcp4: no     # 关闭dhcpdhcp6: noaddresses: [10.0.0.89/24]  # 静态ip,根据自己网络情况配置gateway4: 10.0.0.1     # 网关,根据自己网络情况配置nameservers:addresses: [10.0.0.1, 114.114.114.114] #dns,根据自己网络情况配置

使配置生效:

sudo netplan apply

至此,固定 IP 就配置好了。

1.2 ssh 客户端 Tabby Terminal

Tabby 是一款高颜值,开源,免费,多平台的命令行工具,ssh 客户端是它的功能之一。

我们在 Tabby官网 下载安装好后,配置好 ssh 连接配置信息即可使用 ssh 服务。

配置的过程如下:

  1. 点击配置

  2. 点击配置与连接

  3. 点击新配置

  4. 下滑菜单,选择 SSH 连接

  5. 输入 ssh 服务信息

    • 名称,随意
    • 主机填写 linux 的固定 IP 地址,端口 22
    • 用户名填写实际用户名
    • 点击设置密码,添加用户名对应的密码
    • 点击保存

  1. 鼠标移动至 UbuntuForAndroid 选项,点击三角形

  2. 进入远程 ssh 终端界面

至此,我们就可以远程管理我们的 linux 了。

2. vim

vim 主要用于文件的简单修改,需要掌握:

  • 文件的简单修改
  • 文件内容搜索

2.1 vim 基本使用

2.1.1 一般模式

通过 vim + 文件名,进入 vim 环境(test.txt 可以是当前目录已存在的文件,也可以是当前目录不存在的文件。):

vim test.txt

此时,我们在 vim 的一般模式下,如果 test.txt 文件有内容,我们可以通过:

  • j 下移光标
  • k 上移光标
  • h 左移光标
  • l 右移光标

如果用的不习惯,上下左右方向键也可以移动光标。

2.1.2 编辑模式

在一般模式下,输入 a i o 可以进入编辑模式,编辑模式下,我们可以输入文本修改文件内容。

a i o 的区别如下:

  • a:在当前光标下一位插入
  • i:当前光标处插入
  • o:换行并创建全新空白行,并在行首插入

在编辑模式下,我们点击 esc 键即可回到一般模式。

2.1.3 命令行模式

在一般模式下,输入分号,就会进入命令行模式。在命令行中,可以输入不同的指令或者字符串以实现不同的功能。其中涉及的最常用的功能包括了两类:

  • 退出 vim
  • 当前文本中,搜索字符串

进入命令行模式后,有三种方式来退出 vim:

  • 当前文件没有做任何改变时,输入 q 指令,退出 vim 环境
  • 当前文件做了一些修改,如果想放弃已修改的内容,输入 q! 指令,退出 vim 环境
  • 当前文件做了一些修改,如果想保存已修改的内容,输入 wq 指令,退出 vim 环境

进入命令行模式后,我们还可以输入 / + 字符串,点击回车键,进入搜索模式,点击 N 键,光标就会在匹配处依次跳动。

在一般模式下,我们也可以直接输入 / + 字符串进行搜索。

2.1.4 vim 基本使用小结

vim 编辑器的三种模式间切换如下图所示:

3. find + grep 命令

Android 系统源码繁杂,通常我们通过 find 命令来查找我们关心的文件。使用 find + grep 命令查找我们关心的文件内容。

  • 找文件,比如 service_manager.c
find . -name "service_manager.c"
./frameworks/native/cmds/servicemanager/service_manager.c
  • 找文件内容,找 recyclerview 库
find . -name "Android.bp" | xargs grep "name: \".*recyclerview.*\""
./prebuilts/sdk/current/androidx/Android.bp:    name: "androidx.recyclerview_recyclerview-selection-nodeps",
./prebuilts/sdk/current/androidx/Android.bp:    name: "androidx.recyclerview_recyclerview-selection",
./prebuilts/sdk/current/androidx/Android.bp:    name: "androidx.recyclerview_recyclerview-nodeps",
./prebuilts/sdk/current/androidx/Android.bp:    name: "androidx.recyclerview_recyclerview",
./prebuilts/sdk/current/support/Android.bp:    name: "android-support-recyclerview-selection-nodeps",
./prebuilts/sdk/current/support/Android.bp:    name: "android-support-recyclerview-selection",
./prebuilts/sdk/current/support/Android.bp:    name: "android-support-v7-recyclerview-nodeps",
./prebuilts/sdk/current/support/Android.bp:    name: "android-support-v7-recyclerview",

4. Samba 服务器搭建

Samba 是一款数据共享的软件,可用于 Ubuntu 与 Windows 之间共享源代码,传输文件。

Ubuntu 安装 samba 服务端:

sudo apt install samba

配置 samba,修改 /etc/samba/smb.conf,添加如下内容:

[Project]comment = projectpath = /home/zzh0838/Project #你自己需要共享的目录browseable = yeswritable = yes

后续操作:

chmod 777 /home/zzh0838/Project
sudo smbpasswd -a username #这里是当前用户名
sudo systemctl enable smbd #samba 开机自启动
sudo systemctl restart smbd #重启 samba 

windows 访问 Ubuntu 共享的文件键:

win 键加 R 键,跳出运行窗口,输入 \\10.0.0.89,其中 10.0.0.89 是我的 ubuntu 的 IP 地址,你需要根据你自己的情况修改为自己的 Ubuntu 的 IP 地址。

点击确定,即可访问到 Ubuntu 中共享的文件了:

双击 Project,进入到下面的文件夹中:

Idegen + Android Studio 查看源码

source build/envsetup.sh
lunch aosp_x86_64-eng
make idegen -j16mmm development/tools/idegen
development/tools/idegen/idegen.sh

完成上面的操作后,就会在源码下生成 android.ipr 和 android.iml 文件

打开 Android Studio,File->open,选择 android.ipr 文件。

5. AIDEGen + Android Studio

5.1 准备工作

AIDEGen,我叫它 “爱得跟”,大概是 Android10 中,google 推出的一个工具,用于方便开发者使用 IDE 来查看和修改系统源码。

使用 “爱得跟” 之前我们需要做一些准备工作,编译 sdk:

source build/envsetup.sh
lunch sdk-eng
# or
#lunch sdk-userdebug
# or
#lunch sdk-user
make sdk

接着我们需要去 google 官方下载 Android Studio,并将其放到 /opt 目录下。

接下来,选择我们的目标 Product:

source build/envsetup.sh
lunch aosp_x86_64-eng

做好以上准备工作后,我们就可以打开系统模块了,这里我们以 Settings 为例:

# Settings 更换为其他模块名或是模块存在的路径即可打开其他模块
aidegen Settings -i s  # -i 表示使用ide,s 表示 Android Studio

5.2 Android Studio 配置

稍作等待,Android Studio 就打开了,不过现在还不能直接使用,我们还需要做一些基本的配置:

5.2.1 添加源码中的 jdk 和 sdk

Android Studio 打开后,右下角会出现一个提示框(如果没有出现,点击 file -> Invalidate Caches -> Invalidate and Restart):

点击 Configure,出现以下界面:

点击 ok 即可。

接着配置 jdk 和 sdk,点击 file -> Project Structure:

接着点击 + 号:

点击 Add JDK

选择源码下的 prebuilts/jdk/jdk9/linux-x86,然后点击 ok:

接着将 name 修改为 aosp10-jdk9,然后点击右下角 apply:

接着点击 + 号,添加 Android SDK:

选择系统源码目录下的 out/host/linux-x86/sdk/sdk/android-sdk_eng.zzh0838_linux-x86 (最后一个文件夹的名字和你的用户名相关,你的和我的可能不一样),然后点击 ok:

接着 Java SDK 选择刚刚添加的 aosp10-jdk9,点击 ok:

接着,修改 skd 的名字为 aosp10-android-sdk29:

点击 ok 即可。

5.2.2 配置项目的 sdk

接着我们需要配置项目的 sdk,点击 file -> Project Structure,点击左侧 Project,右侧 SDK 选项选择 aosp10-android-sdk:

点击左侧 Modules,中间选择 Settings,右侧 Module SDK 选择 Project SDK:

接着,中间选择 dependencies-Settings,右侧 Module SDK 选择 Project SDK:

最后点击 apply,项目开始重新索引,项目内绝大部分类方法变量均可正确跳转。

至此,配置完成。

5.3.3 在 Android Stuido 中调试系统App Settings

首先,我们开一个新的终端,打开模拟器:

source build/envsetup.sh
lunch aosp_x86_64-eng
emulator

接着我们在 Settings/AndroidManifest.xml 查找到 Settings App 的首 Activity 为 SettingsHomepageActivity,我们在其 onCreate 出打一个断点:

接着在 Android 模拟器中打开 Settings 应用。

接着点击 android studio 的 debug 按钮:

在弹出的窗口中,依次选择 Settings 和 com.android.settings,然后点击 ok:

在模拟器中,点击返回键,再次进入 Settings 应用,即可进入调试界面:

接着我们就可以顺利的进行调试了。

6. VSCode

VSCode 是一款微软推出的文本编辑器,同个它的插件系统可以实现类 ide 的体验,在功能性和适应性角度,非常适合用于 Android 系统开发。

我们可以通过两种方式来使用 VSCode

  • Ubuntu 本机使用
  • Windows 通过 remote-ssh 插件远程使用 VSCode 编辑linux 上的代码

6.1 Ubuntu 本机使用

首先是安装 VScode,在官网下载好 deb 格式的安装包,接着安装:

sudo dpkg -i code_1.76.2-1678817801_amd64.deb

这样我们就可以使用 vscode 了,我们打开 vscode,然后通过 file -> open folder 选择我们的系统源码,即可打开整个系统源码。

当然,我们根据需要只打开我们关心的模块。

另外为了使我们的 vscode 更好用更好看,通常我们会安装一下一些插件:

  • C/C++ Extension Pack
  • Extension Pack for Java
  • Makefile Tools
  • RC Script language
  • Android System Tools
  • Android Studio Color Theme

6.2 远程使用

在 Windows 下,我们也可以通过 VSCode 的 remote-ssh 插件远程修改我们的系统源码。

首先我们需要在官网下载好 VSCode 的安装包,然后打开安装包狂点下一步即可安装好 VSCode。

接着在插件市场中安装好 Remote-SSH 插件。

接着就可以配置 SSH 远程连接了:

点击左侧 remote-explorer 图标,点击右侧加号:

在弹出的输入框中,输入 用户名@IP地址,点击回车。

接着,选择第一个配置文件,点击回车。

接着,左侧的清单中就会出现我们配置的 10.0.0.89,点击右侧有个加号的文件图标:

弹出新的 VSCode 窗口,我们点击 File -> Open Folder,然后选择我们的源码路径即可:

打开的过程中,需要我们输入 Ubuntu 的登录密码。我们也可以通过配置,实现免密登录的效果:

打开 win 上的 PowerShell:

# 生成公钥
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

将公钥文件的内容拷贝到 ubuntu 的 ~/.ssh/authorized_keys 中

ubuntu 重启 ssh 服务

sudo systemctl restart ssh

7. adb

最后,我们在介绍 adb 的两个常用功能

  • adb push:将开发机上的文件上传到 Android 机器上
touch testfile
# 一些临时文件
adb push ./testfile /data/local/tmp
  • adb shell:用于进入 Android 的 shell 终端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级公共知识点---计算机系统组成,指令系统

计算机系统组成 文章目录 计算机系统组成一、计算机系统组成二级考点 二、指令执行方式二级考点: 指令的地址结构寻址地址 (考试重点)指令寻址数据寻址(重点)寻址方式(重点) 例题: E…

KTV点歌系统|基于JSP技术+ Mysql+Java+ B/S结构的KTV点歌系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

基于爬虫对山西省人口采集+机器学习的可视化平台

文章目录 数据来源一、研究背景与意义二、研究目标三、研究内容与方法四、预期成果五、代码讲解六、全文总结 数据来源 1.所有原数据均来自:国家统计局-政府的数据网站 2.涉及到的一些预测数据是根据现有数据进行预测而来。 本文从数据来源,研究意义&am…

springboot284基于HTML5的问卷调查系统的设计与实现

问卷调查系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导…

『运维心得』BPC-EPM-AddIn专家看过来

目录 系统版本问题 安装顺序问题 framework问题 vstor_redis问题 dll问题 一个小彩蛋 总结 最近在搞BPC,安装Office所需的EPM-AddIn的过程中,碰到了一些奇怪的问题。 查了BPC专家提供的安装说明文档,文档里要么没有提到我们碰到的问题…

【RabbitMQ | 第六篇】消息重复消费问题及解决方案

文章目录 6.消息重复消费问题6.1问题介绍6.2解决思路6.3将该消息存储到Redis6.3.1将id存入string(单消费者场景)(1)实现思路(2)问题 6.3.2将id存入list中(多消费场景)(1&…

首页效果炫酷的wordpress免费主题模板

视频背景免费WP主题 简洁大气的视频背景wordpress主题,找大视频背景的主题可以看看这个。 https://www.wpniu.com/themes/193.html 红色全屏大图WP主题 非常经典的一款免费wordpress主题,红色全屏大图满足多行业使用。 https://www.wpniu.com/themes…

9.登入页面

登入页面 在pages中新建页面login 修改代码 <template><view></view> </template><script setup></script><style lang"scss"></style>添加头像组件 官网 https://vkuviewdoc.fsq.pub/components/avatar.html …

【靶机测试--PHOTOGRAPHER: 1【php提权】】

前期准备 靶机下载地址&#xff1a; https://vulnhub.com/entry/photographer-1%2C519/ 信息收集 nmap 扫描同网段 ┌──(root㉿kali)-[/home/test/桌面] └─# nmap -sP 192.168.47.0/24 --min-rate 3333 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-19 07:37 …

SpringCloud Alibaba Nacos 服务注册和配置中心

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十二篇&#xff0c;即介绍 SpringCloud Alibaba Nacos 服务注册和配置中心。 二、Nacos 简介 2.1 为…

SpringBoot 监控 SQL 运行情况

Druid 数据库连接池相信很多小伙伴都用过,个人感觉 Druid 是阿里比较成功的开源项目了,不像 Fastjson 那么多槽点,Druid 各方面一直都比较出色,功能齐全,使用也方便,基本的用法就不说了,今天我们来看看 Druid 中的监控功能。 准备工作 首先我们来创建一个 Spring Boot…

wireshark数据捕获实验简述

Wireshark是一款开源的网络协议分析工具&#xff0c;它可以用于捕获和分析网络数据包。是一款很受欢迎的“网络显微镜”。 实验拓扑图&#xff1a; 实验基础配置&#xff1a; 服务器&#xff1a; ip:172.16.1.88 mask:255.255.255.0 r1: sys sysname r1 undo info enable in…

YOLOv5目标检测学习(6):源码解析之:训练部分train.py

文章目录 前言一、导入相关包与配置二、主函数main2.1 checks&#xff1a;检查rank值来判断是否打印参数、检查git仓库、检查包的安装2.2 判断是否恢复上一次模型训练提问&#xff1a;opt.data, opt.cfg, opt.hyp, opt.weights, opt.project各是什么&#xff1f; 2.3 DDP mode&…

【数据结构】哈希表与哈希桶

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.概念 2.哈希冲突…

mysql查询条件包含IS NULL、IS NOT NULL、!=、like %* 、like %*%,不能使用索引查询,只能使用全表扫描,是真的吗???

不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!、like %* 、like %*%,不能使用索引查询&#xff0c;只能使用全表扫描。 刚入行时我也是这么认为的&#xff0c;还奉为真理&#xff01; 但是时间工作中你会发现还是走索引…

图书推荐|图解算法:C语言实现+视频教学版

零负担理解数据结构及其算法的设计&#xff0c;零基础也能快速上手编程。 本书内容 《图解算法&#xff1a;C语言实现视频教学版》是一本综合讲述数据结构及其算法的入门书&#xff0c;力求简洁、清晰、严谨、且易于学习和掌握。 《图解算法&#xff1a;C语言实现视频教学版》…

经过拦截器cookie验证后用户信息放入哪里,以便后面接口使用

1.基于ThreadLocal实现&#xff0c;拦截器获取的用户信息在接口中使用_threadloacl获取账号数据_JAVA&#xff24;WangJing的博客-CSDN博客2基于ThreadLocal实现&#xff0c;拦截器获取的用户信息在接口中使用_threadloacl获取账号数据https://blog.csdn.net/wang_jing_jing/ar…

07 - Debian如何分区、格式化与挂载磁盘

作者&#xff1a;网络傅老师 特别提示&#xff1a;未经作者允许&#xff0c;不得转载任何内容。违者必究&#xff01; Debian如何分区、格式化与挂载磁盘 《傅老师Debian小知识库系列之07》——原创 前言 傅老师Debian小知识库特点&#xff1a; 1、最小化拆解Debian实用技能…

echarts多个折线图共用一个x轴和tooltip组件

实现效果 根据接口传来的数据&#xff0c;使用echarts绘制出&#xff0c;共用一个x轴的图表 功能&#xff1a;后端将所有数据传送过来&#xff0c;前端通过监听选中值来展示对应的图表数据 数据格式&#xff1a; 代码&#xff1a; <template><div><div clas…

Knife4j的相关知识点!!

一、基础概念 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! Knif4j&#xff08;原名为 Swagger-Bootstrap-UI&#xff09;是一款基于 Swagger 实现的文档管理工具&am…