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

news2025/3/1 11:28:45

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快些。

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

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

相关文章

福建福州大型钢结构件3D扫描全尺寸三维测量平面度平行度检测-CASAIM中科广电

高精度三维扫描技术已经在大型工件制造领域发挥着重要作用,特别是在质量检测环节,高效、高精度,可以轻松实现全尺寸三维测量。本期,我们要分享的应用是在大型钢结构件的关键部位尺寸及形位公差检测。 钢结构件,是将多…

2023版 STM32实战1 LED灯驱动(电路与代码都讲解)

电路图 常规画法(带限流电阻计算公式) 设LED 电流为20mA(统一单位为 0.02A) 电压为3.3V 限流电阻(电源电压-负载正向工作电压)/工作电流 限流电阻(5V-3.3V)/0.02mA1.7/V0.02A85R 省事画法(直接用IO输出) 代码(直…

学习pytorch11 神经网络-非线性激活

神经网络-非线性激活 官网文档常用1 ReLUinplace 常用2 Sigmoid 代码logs B站小土堆学习pytorch视频 非常棒的up主,讲的很详细明白 官网文档 https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity 常用1 ReLU 对输入做截断…

Scrapy+Selenium自动化获取个人CSDN文章质量分

前言 本文将介绍如何使用Scrapy和Selenium这两个强大的Python工具来自动获取个人CSDN文章的质量分数。我们将详细讨论Scrapy爬虫框架的使用,以及如何结合Selenium浏览器自动化工具来实现这一目标。无需手动浏览每篇文章,我们可以轻松地获取并记录文章的…

OpenCV实现的F矩阵+RANSAC原理与实践

1 RANSAC 筛选 1.1 大致原理 Random sample consensus (RANSAC),即随机抽样一致性,其是一种用于估计模型参数的迭代方法,特别适用于处理包含离群点(outliers)的数据集 RANSAC 的主要思想是随机采样数据点&#xff0…

SpringBoot文件上传-阿里云OSS

1.打开阿里云 说明:登录阿里云账号 2.点击AccessKey管理 3.创建AccessKey 说明:记得复制accessKeyId,accessKeySecret并保存起来 4. 点击对象存储OSS 5.创建Bucket 说明:创建储存桶 6.查看SDK示例 7.Java简单上传 8.上传文件流…

已解决 AttributeError: ‘str‘ object has no attribute ‘decode‘

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

相对论的应用:GPS导航

“但是数学享有盛誉还有另一个原因:正是数学为精确的自然科学提供了一定程度的安全保障,而没有数学,它们就无法实现这一点。” “就现实而言,数学定律是不确定的;就其确定而言,它们并不涉及现实。” —阿尔…

Mysql高级——索引优化和查询优化(1)

索引优化 1. 数据准备 学员表插50万条, 班级表插1万条。 建表 CREATE TABLE class (id INT ( 11 ) NOT NULL AUTO_INCREMENT,className VARCHAR ( 30 ) DEFAULT NULL,address VARCHAR ( 40 ) DEFAULT NULL,monitor INT NULL,PRIMARY KEY ( id ) ) ENGINE INNO…

解决Win11/10中Edge浏览器页面加载不出来、打不开问题|有网但是打不开,加载不了

问题症状 edge浏览器打不开,有网络能正常上网,但是edge浏览器无法浏览。网络质量很高,但是页面就是加载不出来,详情如下: (我是在科学上网后造成这样子的原因,现在将我的方法分享一下&#xff…

Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求

文章目录 9 图片社交网站9.1 项目组织架构9.2 编写程序骨架9.3 高级用户认证9.4 基于用户角色的权限管理9.5 使用Flask-Dropzone优化文件上传9.6 使用Flask-Avatars处理用户头像9.7 图片展示与管理9.8 收藏图片9.9 用户关注9.10 消息提醒9.11用户资料与账户设置9.12 首页与探索…

近万采集各种典故网站文章大全ACCESS\EXCEL数据库

一个学语文的朋友问我有没有关于各种典故以及万物由来的数据,我看了看手头的资料发现还真没有,而且网上似乎也没有这一类的成品,因此就用程序采集了一个典故网的文章。 分类统计情况有:成语典故(共4198条)、…

第三、四、五场面试

第三场 共享屏幕做题(三道简单题) 替换空格成%20(双指针) 删除升序链表中的重复元素(指针)有效的括号(栈) 第四场、第五场 自我介绍 项目拷打 整个项目架构rpc模块的情况分析的数…

【UE 粒子练习】01——练习前的准备

步骤 1. 首先在虚幻商城中搜索如下资产然后创建工程 2. 打开新建的示例工程然后新建一个空白关卡 3. 将“BP_DemoRoom”拖入视口 这里设置“Base Room Size”为5 移入“BP_DemoDisplay” 这里“Description”设置为“Standard Sprite Emitter” 通过快捷键Alt来快速复制一份“…

FireFly PowerBASIC RAD编程,调用PowerBASIC COM对象

一、序言 初步看了看PowerBASIC编程,很类似用VC注册窗体后调用回调函数,先是一个Dialog new,然后添加组件 Control add ......, 然后在处理 Windows MSG和发给组件的消息,这种编程方式和早期DOS 25x80屏幕上编程一样&…

UWB学习——day5

旁瓣的控制 在UWB(Ultra-Wideband,超宽带)通信系统中,对主瓣和旁瓣进行控制和优化是重要的,因为这直接影响了信号的传输质量、抗干扰性和系统性能。 旁瓣出现的原因 频谱泄露,根据傅里叶变换原理&#x…

uniapp实时获取当前位置

首先我们需要先下载一个插件(高德地图官网插件) (插件主要作用是获取当前地理定位或者是自身的位置,并且可以返回名称name) 相关下载-微信小程序插件 | 高德地图API (amap.com)https://developer.amap.com/api/wx/do…

旅游出行类APP如何找到策略优势,最大化流量红利

刚刚结束了暑期出游,中秋国庆小长假马上到啦,出行计划又要安排起来了!多样化的出行方式为大家旅行带来极大的便利,同时,伴随互联网模式的深化发展,各式各样的旅游出行类APP已经成长为旅行用户所依赖的一类工…

【LeetCode热题100】--128. 最长连续序列

128.最长连续序列 先对数组进行排序,不断尝试x1,x2,…是否存在,不断枚举并更新答案 class Solution {public int longestConsecutive(int[] nums) {if (nums null || nums.length 0){return 0;}Arrays.sort(nums);int maxLength 1,current 1;for(in…

LVM分区空间扩充

老早之前自己整理的,今天有同事问起,再整理一下发出来。 LVM的全称为Logical Volume Manager,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活…