android PackageManager
文章平均质量分 82
kc专栏
深入探索android Framework层代码,博客持续更新中!!!
展开
-
Android6.0 PackageManagerService dex优化
一、代码Android6.0 PackageManagerService dex优化是在scanPackageDirtyLI函数中,代码如下: if ((scanFlags & SCAN_NO_DEX) == 0) { int result = mPackageDexOptimizer.performDexOpt(pkg, null /* in原创 2016-11-29 16:14:10 · 2686 阅读 · 1 评论 -
PackageManagerService启动源码分析
了解了Android系统的启动过程的读者应该知道,Android的所有Java服务都是通过SystemServer进程启动的,并且驻留在SystemServer进程中。SystemServer进程在启动时,通过创建一个ServerThread线程来启动所有服务,本文主要介绍Android服务中PackageManagerService服务启动过程。首先介绍一些PackageManagerS转载 2015-05-06 10:14:09 · 1494 阅读 · 0 评论 -
PackageManagerService(Android5.1)深入分析(一)构造函数
PackageManagerService比较长,我们挑主要的内容讲:一、SystemServer创建PackageManagerService先来看下其在SystemServer的创建: mPackageManagerService = PackageManagerService.main(mSystemContext, installer,原创 2016-01-12 10:47:55 · 3824 阅读 · 0 评论 -
PackageManagerService(Android5.1)深入分析(二)处理permission文件
PackageManagerService的构造函数中,调用了SystemConfig的getSystemPermissions方法来获取系统的permission列表。下面我们就分析下如何从系统文件中获取permission。一、分析构造SystemConfig构造函数我们先来分析下SystemConfig类的构造函数 SystemConfig() {原创 2016-01-12 17:31:35 · 2662 阅读 · 0 评论 -
PackageManagerService(Android5.1)深入分析(三)扫描应用目录
PackageManagerService的构造函数中调用了scanDirLI方法来扫描某个目录的apk文件。我们先来看看这个函数: private void scanDirLI(File dir, int parseFlags, int scanFlags, long currentTime) { final File[] files = dir.listFiles()原创 2016-01-13 16:20:01 · 5643 阅读 · 2 评论 -
PackageManagerService(Android5.1)深入分析(四)安装应用
一、安装的Activity在Android,通过发送Intent可以启动应用的安装过程,如下所示:Uri uri = Uri.fromFile(new File(filename));Intent inent = new Intent(Intent.ACTION_VIEW);intent.SetDataAndType(uri, application/vnd.android.packa原创 2016-01-15 09:18:11 · 7019 阅读 · 1 评论 -
Android6.0关于预置三方app卸载(一) copy到data/app下
我们知道每个手机会预装一些三方的应用,但我们需要用户把这些应用删除的权限。这可怎么操作呢,我们在编译的时候可以把应用放在data/app下,但是这样的话,手机一恢复出厂设置预留应用就没有了。一、安装预置应用方法这里提供一个思路,把预留应用放在system/third-app下,然后在第一次开机的时候把这些应用copy到data/app下,当然要在PKMS扫描data/app之前,这原创 2016-09-22 10:58:55 · 9166 阅读 · 9 评论 -
Android6.0 PKMS扫描目录和调用接口安装应用的区别
android安装应用分两种,一种是直接调用PKMS的接口安装,另一种是扫描目录安装,比如系统开机的时候会扫描data/app目录进行安装。一、调用installPackageAsUser函数安装我们先来看调用接口应用安装应用,都会通过如下函数,这个函数先会通过传进来的uid来判断是否是adb安装的,然后创建了一个InstallParams对象这个对象是HandlerParams的原创 2016-11-04 07:15:29 · 4553 阅读 · 0 评论 -
Android PKMS拦截adb安装应用
我们再PKMS汇总拦截adb 安装的应用,在分析PKMS的时候我们也知道,在installPackageAsUser有如下代码,代表是adb安装的。 if ((callingUid == Process.SHELL_UID) || (callingUid == Process.ROOT_UID)) { installFlags |= PackageMan...原创 2019-01-22 15:09:02 · 3094 阅读 · 0 评论 -
Android6.0关于预置三方app卸载(二) 调用接口安装
之前的博客也分析过如何安装三方app,是在第一次开机时将system/third-app下面的apk文件copy到data/app下。这样apk卸载后,恢复出厂设置又能安装上。但是会低概率的出现有的app安装有问题,不知道什么原因,具体是应用启动的时候加载资源出了问题,后续我们再深入资源系统研究下,这里先给出一个临时方案。就是模仿installPackageAsUser接口来安装应用,就是先c原创 2016-11-15 11:23:44 · 1388 阅读 · 0 评论 -
Android6.0 PackageManagerService的mSettings、mPackages变量分析
这篇博客我们来分析下mSettings核mPackages变量。一、mSettingsmSettings在PKMS的构造函数中创建,这里mPackages变量传进去,仅仅是作为lock使用 public PackageManagerService(Context context, Installer installer, boolean facto原创 2016-11-21 16:25:25 · 2185 阅读 · 1 评论 -
Android6.0 PackageManagerService卸载应用
PKMS中卸载应用是通过deletePackage函数来执行,这个函数主要是调用了一些Observer回调,然后调用了deletePackageX函数。 public void deletePackage(final String packageName, final IPackageDeleteObserver2 observer, final int user原创 2016-11-21 17:05:46 · 3585 阅读 · 0 评论 -
Android6.0关于预置三方app卸载(三) 扫描system/third_app目录
之前两篇博客分析了三方应用如何安装的问题,但是两个方法都有问题1.调用接口安装的,可能Launcher启动后还没安装完。2.而copy到data/app下又会有两份apk问题。这篇博客我们用另一种方法,就是放在system/third_app下,开机的时候直接扫描这个目录。然后我们在data/system下建一个xml文件,当应用卸载的时候,我们再xml上记录该应用被卸载了,当再次开机...原创 2019-01-22 15:09:08 · 4595 阅读 · 1 评论 -
将三方apk放到固定目录
在Android系统中想要把apk文件放到固定目录中,有两个方法1. 使用PRODUCT_COPY_FILES变量在Android.mk,使用如下PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/NotePadPlus.apk:system/third_app但是会出现如下错误build 时想要copy apk,但是出现下面...原创 2019-01-22 15:09:14 · 2161 阅读 · 0 评论 -
Android6.0 PackageManagerService 安装lib
之前在PKMS预装三方应用时,放在system/third_app下面扫描出现了很多错,原因就是对安装lib和oat文件不熟悉。这篇博客就分析下这两项。一、安装lib库安装lib库代码,主要代码都在scanPackageDirtyLI函数中,先是调用了derivePackageAbi,这个函数中就把lib库的路径创建好了,也把lib库copy到这个目录下,然后后面会调用Instal原创 2016-11-28 15:27:51 · 2060 阅读 · 0 评论 -
Android查询 每个进程的权限
有时候我们需要看某个app是否有某个权限,下面我们有两个方法可以确定该应用是否有该权限 方法一:比如:我们想看文件浏览器是否有media_rw的权限,我们就先看ps,找到文件浏览器的pidu0_a31 6653 217 702776 60112 SyS_epoll_ b6d21408 S com.android.fileexplorerroot 6681 ...原创 2016-02-02 10:14:10 · 5665 阅读 · 0 评论