当前位置: 首页 > news >正文

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 终端

相关文章:

Android 系统开发工具大全

写给应用开发的 Android Framework 教程——玩转AOSP篇之 Android 系统开发工具推荐 下面推荐的是我常用的工具,如果你有好用的开发工具欢迎在评论区留言讨论交流。 1. SSH 服务与 Tabby Terminal SSH 服务使得我们在其他平台上通过 SSH 客户端程序即可访问到我们…...

C版本的-Unet-rknn推理

1. 前言 之前就想着使用rknn的c版本的api做推理看看,找了一个简单的,那就unet吧,本来想着用rk的demo文件,但是里面是mobilenet,相关的函数没有,卡这也卡了好久,突然发现tengine相关的后处理&…...

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO 前情回顾 NNLM模型:主要任务是在预测下一个词,副产品是词向量Word2Vec模型:主要任务是生成词向量 CBOW:训练目标是根据上下文预测目标词Skip-gram:训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…...

稀碎从零算法笔记Day19-LeetCode:相交链表

题型:链表基本操作 链接:160. 相交链表 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&…...

AI系统性学习03—ChatGPT开发教程

文章目录 1、OpenAI关键概念⭐️2、OpenAI SDK介绍3、OpenAI API KEY&API 认证3.1 REST API安全认证 4、OpenAI模型⭐️4.1 模型分类4.2 GPT44.3 GPT-3.54.4 Embeddings 5、OpenAI快速入门6、Function calling(函数调用)⭐️⭐️⭐️6.1 应用场景6.2 支持function calling的…...

每日一练 | 华为认证真题练习Day201

1、BGP Notification报文Error Code为2时表示open消息错误,其中包含如下哪些错误子码?(多选) A. 1-不支持的版本号 B. 2-错误的对等体AS号 C. 2-错误的对等体AS号 D. 4-错误的属性列表 2、A greate命令(aggregate ipy4-addre…...

nginx日志统计qps

1.QPS QPS全称为Queries Per Second,即每秒钟处理的请求数量。对于一个高并发应用来说,QPS是非常重要的性能指标,它反映了应用处理请求的能力。在实际应用中,QPS的大小取决于应用的负载和应用本身的性能。 QPS req/sec 请求数/…...

9.登入页面

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

js封装SDK 在VUE、小程序、公众号直接调用js调用后端接口(本文以vue项目为例)

1.封装一个js文件msgSdk.js 注意&#xff1a;需要修改这个请求地址 apiServiceAddress ;(function () {if (window.msgSdk) {return}var msgSdk (function () {var m_msgSdk thisvar apiServiceAddress"http://172.12.14.5:8000"this.I_SendHTTPRequest functi…...

ideaSSM社区二手交易平台C2C模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 社区二手交易平台系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码…...

利用子类化技术拦截win32窗口各种消息(包括但不限于鼠标键盘消息)

创建子类化函数&#xff1a; 首先&#xff0c;您需要编写一个子类化函数&#xff0c;该函数将用于处理编辑框的消息。这个函数通常会拦截并处理您感兴趣的消息&#xff0c;比如鼠标消息。 子类化编辑框&#xff1a; 在窗口程序中找到编辑框的句柄&#xff08;HWND&#xff09;…...

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…...

Android 13.0 kenel和frameworks中修改ram运行内存的功能实现

1.前言 在13.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,产品提出要提高硬件配置,但是硬件方面已经定板,项目时间比较仓促,所以 来不及对硬件重新定制,就需要软件方面在ram运行内存的容量大小方面作假,修改ram真实的大小容量,所以…...

如何将应用程序发布到 App Store

憧憬blog主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实战经验&#xff0…...

Python进程与线程开发

目录 multiprocessing模块 线程的开发 threading模块 setDaemon 死锁 线程间的通信 multiprocessing模块 运行python的时候&#xff0c;我们都是在创建并运行一个进程&#xff0c;(linux中一个进程可以fork一个子进程&#xff0c;并让这个子进程exec另外一个程序)。在pyt…...

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图&#xff0c;我下载的贴图地址为&#xff08;牙膏盒贴图链接&#xff09; 2. 打开3DsMax&#xff0c;创建一个长方体&#xff0c;设置长宽高分别为180、45、40毫米 打开材质编辑器&#xff0c;点击漫反射后的按钮 双击“位图” 将材质赋予长…...

Mysql数据库概念与安装

目录 一、数据库概述 1、数据库的基本概念 2、数据库管理系统&#xff08;DBMS&#xff09; 2.1 数据库管理系统概念 2.2 数据库管理系统工作模式 3、数据库系统&#xff08;DBS&#xff09; 3.1 数据库系统概念 3.2 数据库系统发展史 4、关系型数据库与非关系型数据库…...

【Java - 框架 - SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手

"SpringMVC"框架的简单创建与使用&#xff0c;快速上手&#xff1b; 环境 Java版本"1.8.0_202"&#xff1b;Spring Boot版本"2.5.9"&#xff1b;Windows 11 专业版_22621.2428&#xff1b;IntelliJ IDEA 2021.1.3(Ultimate Edition)&#xff1…...

框架篇常见面试题

1、Spring框架的单例bean是线程安全的吗&#xff1f; 2、什么是AOP&#xff1f; 3、Spring的事务是如何实现的&#xff1f; 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解 10、My…...

【刷题】滑动窗口入门

送给大家一句话&#xff1a; 那脑袋里的智慧&#xff0c;就像打火石里的火花一样&#xff0c;不去打它是不肯出来的。——莎士比亚 滑动窗口入门 认识滑动窗口Leetcode 209. 长度最小的子数组题目描述算法思路 Leetcode 3. 无重复字符的最长子串题目描述算法思路 Leetcode 1004…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中&#xff0c;向量运算构成了理解几何结构的基石。叉乘&#xff08;外积&#xff09;与点积&#xff08;内积&#xff09;作为向量代数的两大支柱&#xff0c;表面上呈现出截然不同的几何意义与代数形式&#xff0c;却在深层次上揭示了向量间相互作用的…...

echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式

pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图&#xff0c;如果边框加在dom上面&#xff0c;pdf-lib导出svg的时候并不会导出边框&#xff0c;所以只能在echarts图上面加边框 grid的边框是在图里…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络&#xff08;如 RNN&#xff09;的自动分词在原理、实现方式和效果上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 实现原理对比 对比维度手动分词&#xff08;规则 / 词典驱动&#xff09;神经网络 RNN 分词&#xff08;数据驱动&#xff09…...