Android 10.0第三方app根据包名设置为横屏显示

wuchangjian2021-11-16 12:09:45编程学习

由于在定制化平板项目中,默认都是横屏显示的,如果第三方app是竖屏显示显得非常不协调,所以根据客户要求修改
第三方app竖屏的也要修改成为横屏显示,由于没有源码
所以只有在PMS 解析app的时候来设置屏幕旋转方向

PackageParser解析APK 的
所以我们就从这里入手
路径:frameworks\base\core\java\android\content\pm\packageparser.java
1、PackageParse#parsePackage(File, int)方法解析
如果是目录则调用parseMonolithicPackage(File,int)方法,如果不是目录,是文件则调用parseClusterPackage(File,int)

2.PackageParse#parseMonolithicPackage(File, int)方法解析

首先 判断是不是mOnlyCoreApps,mOnlyCoreApps该标示表明解析只考虑应用清单属性有效的应用,主要为了创建一个最小的启动环境,如果该标示为true则表示为轻量级解析,调用parseMonolithicPackageLite来进行解析

其次 如果mOnlyCoreApps不为空,则new了一个AssetManager对象

再次 调用parseBaseApk()方法解析一个apk并生成一个Package对象

最后 给pkg的codePath赋值

这里面涉及了两个方法分别是parseMonolithicPackageLite(apkFile, flags);和parseBaseApk(),

3.PackageParse#parseMonolithicPackageLite(File, int)方法解析
主要解决三个问题:
parseApkLite(File,int)函数内部的实现

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。