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

车载开发之预置无源码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 := CarNaviALL_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

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

相关文章:

  • 【JavaScript】【分享】关于this
  • CSS实现一个雨滴滑落效果
  • 新奇css模板
  • Java/Golang:活用interface,增加程序扩展性
  • 堆和栈的空间利用率
  • 2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏
  • 怎么建设高性能多核DSP+FPGA实验室?一起来河北工程大学看看
  • HTML中Canvas关键知识点总结
  • 一场决定未来的战役,又是梦想起航的地方
  • 【玄机-应急平台】第六章 流量特征分析-蚂蚁爱上树
  • kubernetes负载均衡---MetalLB
  • STM32项目分享:智能家居语音系统
  • python基于flask写后端接口、python接收请求、python作为服务端提供接口、python接收json数据或数组
  • JVM学习-JVM运行时参数
  • 24.6.2(动态开点线段树)
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • android 一些 utils
  • C# 免费离线人脸识别 2.0 Demo
  • Fastjson的基本使用方法大全
  • Java 最常见的 200+ 面试题:面试必备
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PermissionScope Swift4 兼容问题
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Zepto.js源码学习之二
  • 爱情 北京女病人
  • 大快搜索数据爬虫技术实例安装教学篇
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 跳前端坑前,先看看这个!!
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 云大使推广中的常见热门问题
  • - 转 Ext2.0 form使用实例
  • 阿里云ACE认证之理解CDN技术
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Java NIO(一)FileChannel
  • # Kafka_深入探秘者(2):kafka 生产者
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (10)ATF MMU转换表
  • (27)4.8 习题课
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (力扣)循环队列的实现与详解(C语言)
  • (六)激光线扫描-三维重建
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • .axf 转化 .bin文件 的方法
  • .NET BackgroundWorker
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • @AutoConfigurationPackage的使用