由于在定制化平板项目中,默认都是横屏显示的,如果第三方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)函数内部的实现