车载开发之预置无源码apk到Android系统(带so文件)

1.在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为 CarNavi 的APK为例。

新建一个CarNavi 的文件夹,在系统里面,如下图所示(我的系统路径:/home/ts/project/NewAosp/Android/packages/apps/Car/CarNavi)

2.将 CarNavi.apk 放到 CarNavi 文件夹里面

 

 3.创建文件 Android.mk 文件(直接新建一个txt文件夹,然后把名字修改成这个就行)

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := CarNavi

ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/x86_64)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app
LOCAL_PREBUILT_JNI_LIBS := $(ALL_LIBRARIES_MODULE_NAME)
include $(BUILD_PREBUILT)

注意【LOCAL_MODULE】对应的是apk的名字

【LOCAL_PREBUILT_JNI_LIBS】对应的就是so库的位置

下面注意了,带有so库的操作流程,如果apk里面没有so库的话,此处略过:

先把带有so库的apk,进行解压,把apk里面的lib拷贝出来放在跟apk同目录下,然后设置

ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/x86_64)

因为我的so库位置在 lib/x86_64 ,如果你的位置不一样的话,替换成实际的就行

4. 修改车载系统的配置文件

位置 /home/ts/project/NewAosp/Android/packages/services/Car/car_product/build/car_system.mk

在文件里面找到 PRODUCT_PACKAGES 这个配置,进行添加

5.上面设置之后,进行系统重编,然后运行虚拟机,启动之后就可以了

【编译源码】
cd /home/ts/project/NewAosp/Android
source build/envsetup.sh
lunch sdk_car_x86_64-userdebug
make -j8
【启动模拟器】
cd /home/ts/project/NewAosp/Android
source build/envsetup.sh
lunch sdk_car_x86_64-userdebug
emulator -writable-system -netdelay none -netspeed full -no-snapshot-save -skin 2560x1600

运行之后,在这里就能看到,已经成功打到系统里面了 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

片机+ISD1760智能家用语音唤醒系统设计

在节奏过快的生活中,人们承受的精神和心理压力十分巨大,这就使得现代人都希望在当代繁忙而枯燥的工作和学习中能身心愉悦的生活。随着信息化发展水平的逐步提高,智能化系统越来越受到人们的重视。市场上普遍的闹钟只是一种到了人们设定的时间就被令人烦躁的声音而吵醒的机械化…

AIXcoder eclipse 安装使用

1. eclipse 插件安装界面打开 2. 输入aixcode 插件链接安装 aiXcoder - https://image.aixcoder.com/eclipse-update-site/选择 CodeCompletion 点击next,按照提示完成安装 3.重启eclipse 安装成功 console 出现aixcoder 的log工具栏出现aixcoder windows-> pr…

蓝牙资讯|2024年Q1全球个人智能音频设备出货量达到9000万台

Canalys 发布了最新研究报告:2024 年第一季度,全球个人智能音频设备市场呈回暖的迹象,同比增长 6%,出货量超 9000 万台。数据显示,本季度的增长主要得益于 TWS 真无线蓝牙耳机和无线头戴式耳机的强劲表现,两…

.Net Core 8.0 IIS部署遇到奇怪的部分接口报404的问题解决

本地运行没问题,部署到IIS后,部分接口报404,其它接口都正常。 经和群里讨论,大概意思是接口返回数据比较大的时候,就会出现这个问题。 查看事件查看器,发现应该是数据过大时使用了临时文件夹,…

【Vue】组件化开发

文章目录 一、介绍二、根组件 App.vue 一、介绍 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为。 好处:便于维护,利于复用 → 提升开发效率。 组件分类:普通组件、根组件。 根组件…

分布式版本控制工具软件——Git概述

目录 一、Git概述1.为什么要学习Git?(1)SCM概念(2)SCM实现 2.什么是版本控制?(1)版本控制软件的基础功能(2)集中式版本控制(3)分布式版…

CentOs7 JDK21 安装

CentOs7 JDK21 安装 准备工作 先检查系统是否之前已经安装了jdk 。如果已经安装的话需要卸载。 方式一:使用压缩包的方式 下载jdk21的压缩包 https://www.oracle.com/java/technologies/downloads/ 将下载的gz压缩包上传到服务器并解压 # 创建文件夹 (你可以自…

在npm发布自己的组件包

目录 前言 正文 npm和git的对比 Node环境的配置 具体发布步骤 ※※需要注意的是 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ni…

Allegro X PCB设计小诀窍系列--如何在Allegro X中快速将位号调整到器件中心

背景介绍:我们在进行PCB设计时,为了将位号和元器件对应,从而能够更快速准确的辨别元器件位置,通常需要将位号移动至器件中心。如果由工程师手动完成,不仅工作量大,还极易出错。而通过Allegro X PCB设计工具…

基于简单Agent对医疗数据进行分析

数据表 供应商资格审核规定.pdf 医生名录.xlsx 历史就诊记录.xlsx 患者信息名录.xlsx 药品.xlsx 药品库存管理.xlsx 采购单位基本信息.xlsx Agent测试 模型基于ChatGPT-3.5 问题:帮我找出不达标的供应商 Agent分析过程 [Thought: 0] Key Concepts: - 不达标的供…

SQL Server数据库xp_cmdshell提权笔记

文章目录 一、简介二、搭建环境三、利用条件1、查询 xp_cmdshell 是否开启,返回为1则证明存在2、判断权限是不是sa,回是1说明是sa3、开启xp_cmdshell4、关闭xp_cmdshell 四、获取数据库权限1、成功获取sqlserver,进行登陆2、开启xp_cmdshell权…

进口电动流量调节阀的选型-美国品牌

进口电动流量调节阀的选型需要综合考虑多个因素,以确保所选阀门能够满足实际应用需求。以下是选型时需要考虑的主要方面: 一、明确应用需求 工作介质:了解介质的性质,包括流体类型、温度、压力以及是否具有腐蚀性或特殊性质。流…

C语言野指针、规避野指针、assert宏断言

目录 a.野指针成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 b.规避野指针 1.指针初始化 2.小心指针越界 3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性 4.避免返回局部变量的地址 c.assert宏断言的使用 概念&#xff1…

LeetCode 两数之和 + 三数之和

两数之和 简单题 思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接…

【代码随想录】【算法训练营】【第28天】 [93]复原IP地址 [78]子集 [90]子集II

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 28,工作的周二~ 题目详情 [93] 复原 IP 地址 题目描述 93 复原 IP 地址 解题思路 前提:分割问题 思路:回溯算法,确定每次递归回溯的分割位置…

navi_cat查看数据库的连接密码

Navi_Cat 建立连接,来访问数据库。可惜,忘记了数据库密码,没事,这么搞。 首先先导出链接,再从链接里取出被加密的密码,然后找个可在线运行PHP的网站(代码在线运行 - 在线工具)&…

Vue项目安装axios报错npm error code ERESOLVE npm error ERESOLVE could not resolve解决方法

在Vue项目中安装axios时报错 解决方法:在npm命令后面加--legacy-peer-deps 例如:npm install axios --save --legacy-peer-deps 因为别的需求我把node版本重装到了最新版(不知道是不是这个原因),后来在项目中安装axi…

2024 年该如何利用 MidJourney 创作AI艺术(详细教程)

什么是 Midjourney Midjourney 是根据文本提示创建图像的生成式人工智能的优秀范例。与 Dall-E 和 Stable Diffusion 一样,它已成为最受欢迎的人工智能艺术创作工具之一。与竞争对手不同的是,Midjourney 是自筹资金和封闭源代码的,因此对它的…

BPMN开始事件-Activiti7从入门到专家(7)

开始事件类型 bpmn开始事件表示流程的开始,定义流程如何启动,在某种情况下启动,比如接收事件启动,指定事件启动等,开始事件有5种类型: 空开始事件定时器开始事件信号开始事件消息开始事件错误开始事件 继…

如何以非交互方式将参数传递给交互式脚本

文章目录 问题回答1. 使用 Here Document2. 使用 echo 管道传递3. 使用文件描述符4. 使用 expect 工具 参考 问题 我有一个 Bash 脚本,它使用 read 命令以交互方式读取命令参数,例如 yes/no 选项。是否有一种方法可以在非交互式脚本中调用这个脚本&…