Overlay之在android studio虚拟机上的运行

本文详细阐述了在Android Studio虚拟机中如何使用overlay资源替换,包括包签名匹配、模块安装、权限设置、AndroidManifest.xml的系统签名添加,以及overlay机制的工作原理。重点讨论了overlay文件夹在不同设备上的路径差异和权限问题。
摘要由CSDN通过智能技术生成

查看了网上很多的资料,全部是大同小异,使用mk文件,创建的替换文件放到/vendor/overlay。

但是在android studio的虚拟机里面,却没有权限进行文件的编写,就是没有-w权限。所以现在进行总结一下。

对于android studio中进行Overla资源替换。首先需要保证包签名相同,然后需要先将overlay等替换的模块进行安装,就是将对应模块在虚拟机中进行安装。如图所示:

先安装overlay_green、overlay_red等替换的资源,然后在安装app模块。对于安装信息查询,可以在虚拟机路径或者设备路径/data/system/overlays.xml文件中查询。如下图:

packageName:替换文件的包名称--->overlay_red
targetPackageName:替换资源的包文件--->app
其他自行查看;


在原模块中(app),需要在AndroidManifest.xml文件中加上系统签名,否则可能出现java.lang.NoSuchMethodError:.....................异常;

系统签名如下:android:sharedUserId="android.uid.system

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ivi.setting"
    android:sharedUserId="android.uid.system">

包依赖为framework.jar,这个需要在build.gradle文件中添加。

当上述所有确定之后,就可以使用overlay机制进行主题切换。

通过对比真实设备和虚拟机设备,发现一个问题。我用的是android 11的设备,是可以在/vendor文件夹里面发现overlay文件夹的,但是在虚拟机中同路径下是没有看见overlay文件夹的。这个是什么原因暂时还没有发现,只能期待其他人来解答了。虽然虚拟机中没有这个路径,但并不影响上述的实现,因为最后文件是通过包名来查找,所以不会影响。

 overlay安装包路径,不同设备可能不同。

手动创建overlay文件夹,显示为只读,不可创建,使用了adb root && adb remount也不行。

我自己本人用的是vivo,上面是有这个文件的,但是也不能在这个文件夹里进行修改;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值