ASfP: 增强AOSP平台开发的利器——Android Studio for Platform

2023-09-20 11:06:50

ASfP: 增强AOSP平台开发的利器——Android Studio for Platform

Android Studio for Platform (ASfP) 是一个为使用 Soong 构建系统构建的 Android 开源项目(AOSP)平台开发者而设计的 Android Studio IDE 版本。与标准 Android Studio 不同,ASfP 具有多语言支持,可以在同一 IDE 中编写 C++、Kotlin 和 Java 程序语言,并且具有项目设置向导和配置 lunch 目标和平台模块等功能。

asfp安装配置

如果您是 AOSP 平台开发者并且需要进行大量的 C++ 编程工作,那么 ASfP 可能是您的首选开发环境。以下是一些使用 ASfP 的入门指南:

  1. 安装 Repo 客户端:在开始使用 ASfP 之前,您需要安装 Repo 工具。您可以在 Google 的开发者文档中找到官方的安装说明。

  2. 初始化 Repo 检出分支:初始化 Repo 后,您需要指定要检出的 AOSP 分支。这个过程可以在 Google 的开发者文档中找到。

  3. 下载并安装 ASfP:您可以从官方网站上下载 ASfP 的适用于 Linux 的 .deb 安装程序,并通过以下命令进行安装:

sudo dpkg -i /path/to/asfp-2023.1.1.19-linux.deb
  1. 打开 ASfP:通过在终端中切换到 ASfP 的 bin 目录,并运行 studio.sh 命令来启动 ASfP:
/opt/android-studio-for-platform/bin/studio.sh

配置快捷图标
使用.sh启动总是不很方便,那么配置一个快捷图标就方便多了
新建asfp.desktop文件,配置如下:

[Desktop Entry]
Encoding=UTF-8
Name=AndroidStudio                                     
Comment=AndroidStudio                                  
Exec=/home/cl/soft/asfp/bin/studio.sh 
Icon=/home/cl/soft/asfp/bin/studio.svg 
Terminal=false                                   
StartupNotify=true
Type=Application
Categories=Application;Development;

完成配置后,注意修改权限。快捷图标如下

  1. 导入项目:在启动 ASfP 后,您需要指向 Repo 检出目录,并配置 lunch 目标和要构建的模块。这将确保您可以正确地编译和构建您的项目。

ASfP 支持多种语言和平台,可以让开发者更轻松地在同一开发环境中进行多种编程任务。如果您是 AOSP 平台开发人员,ASfP 可以帮助您更快地迭代和测试代码,并让您更加高效地开发 Android 应用程序。现在,您可以尝试使用 ASfP 来提高您的 Android 平台开发效率了!

配置结构

导入AOSP工程,从File->Import Asfp Project可导入AOSP工程
Repo checkout为AOSP根目录
Lunch target为需要启动的目标,也就是我们通过lunch命令启动的项目列表中的选项
Module paths为需要调试的模块,例如framework、Settings等
Project name为工程名称
Location为工程配置及数据保存位置

根目录下asfp-config.json为项目全局配置

{
  "repoRoot" : "/home/cl/Code_extend/aosp",
  "modulePaths" : [
    "frameworks",
    "packages/apps/Settings",
    "system/extras/su"
  ],
  "lunchTarget" : "gxx5-userdebug",
  "nativeConfig" : {
    "excludePaths" : [ ],
    "excludeGenPaths" : [
      "*"
    ]
  }
}

工程不仅可以导入Java/kotlin工程,也可以导入C++工程
如下作者导入了system/extras/su模块

支持代码高亮,有些头文件没法直接跳转是因为引入了其他模块,所以需要增加所引入模块的导入

在Project Structure中可动态增减模块

Soong编译过程输出窗口

修改模块后执行Asfp->Sync soong project 后,soong窗口会重新执行编译,idea命令支持还是差一些,编译也慢,不如直接在shell窗口执行mm命令或者ninja快些。

更多推荐

【MySQL系列】MySQL数据库索引详解

目录一、为什么要用索引?二、什么是索引?三、MySQL索引使用场景四、索引的原理五、MySQL的存储引擎六、索引的数据结构七、索引如何使用八、实际使用示例九、优缺点、使用建议和注意事项十、为什么Mysql不选择Hash索引?十一、总结一、为什么要用索引?索引,可能让好很多人望而生畏,毕竟每次面试时候MySQL的索引一定

某网站小说CSS反爬实战分析

由于是刚开始编写js逆向类型的文章,难免会有不详细之处,敬请谅解本次的目标是hongshu网的小说接口,我们进入官网随意找到一篇小说后,打开网络请求,分析接口如图,可以看到有个bookajax.do的接口让人值得怀疑,而且有三个接口,初步判断可能是接口之间进行互相调用,我们先打开接口查看一下数据在第二个接口中看到如下数

Docker Compose部署Mysql8

DockerCompose部署Mysql8介绍MySQL是一个广泛使用的开源关系型数据库管理系统,它被用于许多Web应用程序的数据存储和管理。MySQL提供了高性能、可靠性和灵活性,让开发者能够轻松处理各种规模的数据处理需求。下面是一些关于MySQL的重要特点和功能:关系型数据库:MySQL是一个基于关系模型的数据库管

Flutter快速入门学习(二)

目录Dart介绍一些Dart的重要概念Dart语法学习变量内建类型NumberStringBooleanListSetMapSymbol函数参数类型(可选参数,必选参数)函数作为另一个函数的参数匿名函数运算符关系运算符类型判定运算符赋值运算符逻辑运算符按位和移位运算符条件表达式级联运算符(..)回调函数Dart介绍Da

#循循渐进学51单片机#变量进阶与点阵LED#not.6

1、掌握变量的作用域及存储类别。局部变量函数内部声明的变量,只在函数内部有效,在本函数以外是不能使用的,叫局部变量。全局变量在函数外部声明的变量就是全局变量,一个源程序可以包含一个或多个函数,全局变量的作用范围是从它开始声明的位置一直到程序结束。全局变量的副作用1)降低函数的独立性,对任何一个函数的修改都可能影响到其他

EMANE中olsrd的调试

1调试目的本着学习的态度,对emanetutorial中的示例程序进行重现,以加深对EMANE的理解和掌握。在示例程序0(见https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)中介绍了使用olsrlinkview.py脚本来通过可视化界

git命令的操作

git命令操作及命令大全1.创建一个新的本地仓库:2.添加文件到仓库:3.远程仓库操作:4.分支操作:5.git命令大全1.创建一个新的本地仓库:使用命令gitinit在本地目录中创建一个新的git仓库。2.添加文件到仓库:使用命令gitadd<文件名>将文件添加到暂存区。使用命令gitcommit-m"提交信息"将文

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播

新款锐科达SV-2102VPSIP广播音频模块RTP流音频广播SV-2102VP和SV-2103VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。本系列模块可以应用于以下领域:•各种商业网络音频流应用•网络报警器,网络播放器•用于寻呼

计算机视觉与深度学习-图像分割-视觉识别任务03-实例分割-【北邮鲁鹏】

目录参考定义MarkR-CNN结构思路MaskR-CNN训练阶段使用的Mask样例MaskR-CNN实例分割结果MaskR-CNN检测姿态参考论文题目:MaskR-CNN论文链接:论文下载论文代码:Facebook代码链接;Tensorflow版本代码链接;KerasandTensorFlow版本代码链接;MxNet版

docker day01

docker:是一个容器管理工具。podman,pouch,lxc,rkt,...2013开源--->iT福音--->2015~coreOs--->Redhat--->IBM什么是容器:生活中装东西的,比如水杯,碗,水缸,鱼缸,...在计算机中,容器装的就是文件,只不过这些文件是一类程序,包括该程序依赖的库文件。LIN

基于未知环境碰撞冲突预测的群机器人多目标搜索研究

源自:指挥与控制学报作者:边晓荟周少武张红强吴亮红王汐王茂刘朝华陈磊“人工智能技术与咨询”发布摘要群机器人在未知动态环境下进行多目标搜索时,存在碰撞预测和搜索效率不高等问题。提出了一种碰撞几何锥和改进惯性权重的粒子群优化算法相结合的多目标搜索策略。首先,根据静、动态威胁物的不同分别引入碰撞锥(CC)和速度障碍法(VO)

热文推荐