本文主要内容 静默安装 apk安装流程简析 installd进程意义 最近工作上遇到静默安装相关的内容,顺便学习一下apk安装的知识 静默安装 静默安装是指apk无感安装,不需要用户确认。...安装流程简析 PackageManager是一个抽象类,应用调用pm安装apk,这中间会发生跨进程调用,因为pms是运行在system进程中的。...之前绑定的服务,在此处主要有两个功能,一是解析apk中的基本信息,比如包名、版本号、安装位置等 pkgLite = mContainerService.getMinimalPackageInfo(origin.resolvedPath...installPackageLI方法非常长,它需要验证apk的签名文件,并且详细解析apk中的所有activity、service等信息并加以保存,方法非常非常的长 //收集签名并验证 try {.../包名 目录)。
有时候我们需要查看打出的apk包中AndroidManifest.xml文件,但是打开之后发现是一大堆的乱码,这个时候就需要用工具来解决这个乱码问题了,下面介绍一下使用AXMLPrinter2.jar工具转码流程
1.相关软件包及文件下载 下载地址:adb软件包及批量安装apk包的py文件.zip 2.测试环境 Win7 64位 Python 3.3.2 3.用法及代码show 用法: 把.apk...包放入apk目录下,然后进入到install_apk_once_many.py所在目录,运行程序: python install_apk_once_many.py 运行结果: ?...subprocess.PIPE, shell=True, universal_newlines=True) try: p.communicate() if p.returncode: print('运行出错...) fail_cnt = 0 # 统计安装成功的包数 pass_cnt = 0 # 统计安装失败的包数 fail_list = [] # 存放安装失败的包文件名 for...filename in filename_list: if os.path.splitext(filename)[1] == '.apk': # 判断是否是apk包 print('正在安装
一个APK文件就是ZIP包,其中包含了组成你的应用的所有文件,比如Java类文件,资源文件,和一个包含被编译资源的文件。...避免抽取Native库 在APK中存储未压缩的so文件,并且在Manifest文件的中设置android:extractNativeLibs为false,这会防止在安装时PackageManager...将APK中的so文件拷贝到文件系统,避免这种拷贝会让应用在做增量更新时的更新包更小。...维持多个小的APK包 你的APK会包含用户下载了但从未使用的内容,比如地区或语言信息(译注:比如我是中国人,我就不会用到其他语种的资源)。...为了给用户创建小的下载包,你能把你的应用拆分成多个APK,这些APK的差别在于一些因素(比如屏幕大小或者GPU纹理支持)。 当一个用户下载了应用,设备根据自身的特性和设置获取正确的APK。
image.png 下载Android SDK • 去该网址下载 http://tools.android-studio.org/index.php/sdk/ ?...image.png • 看自己的安卓手机的版本号是多少,比如是安卓7.0,这对应API level 24,勾选相应的选项(因为生成的APK要安装在你的手机上,并能运行,一定要选择和自己手机一致的SDK,...image.png • 再按Ctrl + Shift +B 选中Android ->Switch Platform 之后会进行编译和配置,稍微等待一会 ?...image.png • 再点 Player Settings 更改你APP包的名字。之后点build,选中要存放apk的路径,就会生成安卓的安装包.apk了。...切记,一定要更改默认的包的名字,随便改为一个名字都行。否则会报错的。 ? image.png
使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小。 native code的部分,大多数情况下只需要支持armabi与x86的架构即可。...生成APK的时候,aapt工具本身会对png做优化,但是在此之前还可以使用其他工具如tinypng对图片进行进一步的压缩预处理。
起因 上周在做安卓系统的厂家推送功能,某些机型无法离线厂推,所以准备解包apk看一下打包参数是否出问题。...序言 在Android开发中,可能需要从我们自己的应用跳转到别的应用的界面,但是在不知道别的应用的包名以及类名的情况下,是很难做到这一点的,有个最简单的方法就是下载应用的apk文件,然后修改后缀名为zip...AXMLPrinter2.jar是一款常用的apk反编译工具,主要用于反编译apk文件,包括包名、版本号和图标等信息,可以用AXMLPrinter2对androidmanifest.xml反编译进行明文查看...使用方法 1、 下载工具AXMLPrinter2.jar工具 地址:https://code.google.com/archive/p/android4me/downloads 2、 将要查看的AndroidManfist.xml...这是因为没有安装Java环境或未配置环境变量导致的。 安装JDK 首先先来回顾下安装JDK的过程 1.
本文是对 Analyze Your Build with APK Analyzer 的翻译。 Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。...(译注:AndroidManifest.xml、resources.arsc本来是二进制形式显示的,APK Analyzer能够解析并显示这些文件的内容) 对比两个APK。...(译注:新版APK和旧版APK之间文件大小的差异) 这里有3种方法访问APK Analyzer: 拖拽APK到Android Studio的编辑窗口。 切换到Project视图,并且双击APK文件。...译注:APK Analyzer是让我们更有效地制定减包方案的实用工具,它能够让我们发现使得APK变大的元凶。 查看文件和大小信息 APK就是一个zip包。...Referenced Method列是DEX文件中引用的全部方法,它包含了你定义的方法、依赖的library、定义在标准Java和Android包中的方法。
(输入完毕后,会自动弹出 .bash_profile 文件的编辑窗口) ⑤ 在.bash_profile文件中输入: export PATH=${PATH}:/Users/wei/Library/Android.../sdk/tools:/Users/wei/Library/Android/sdk/platform-tools 注意:中间需要使用 : 分隔符 /Users/wei/Library/Android.../sdk/tools:android sdk tools的目录 /Users/wei/Library/Android/sdk/platform-tools:android sdk platform-tools...Mac查看sdk的安装路径 ? 第一步.png ? 第二步.png
用VSCode作为python的IDE,VSCode会提示安装pylint。pylint是python代码风格控制插件,如果你写的代码不符合常见风格,就会报错。...使用pip安装pylint时往往会报错,如图所示 ? 怎么解决呢?根据错误提示(红色字体第3行),找到路径中的__int__文件,打开。大约在75行,将utf-8改为gbk,这样就OK了。 ? ?
.content.FileProvider uri content://com.***.***.update_app.file_provider/download/update/***.apk from..."); } return intent; } 测试通过,完美安装,没有出现解析失败问题 代码: <!....content.FileProvider" android:authorities="包名.file_provider" android:exported...> android:name=".UpdateService"/>//从源码下载的升级下载安装apk的服务 <!...Log.d(TAG, "download url is " + downloadUrl); Log.d(TAG, "download apk
类简介 PackageParser.java Android 安装一个APK的时候首先会解析APK,而解析APK则需要用到一个工具类,这个工具类就是PackageParser 为了让咱们更好的理解谷歌的安卓团队对...这些"分割"APK的必须都是有效的安装,同时必须满足下面的几个条件: 所有的APK必须具有完全相同的软件包名称,版本代码和签名证书 所有的APK必须具有唯一的拆分名称 所有安装必须包含一个单一的APK...// APK安装包中 保内广播的Action public ArrayList protectedBroadcasts; // APK安装包中 依赖库的名字...一个包由一个"基础"APK和多个"拆分"APK构成。 这个类其实就是通过解析APK而对应的一个"包"的类,这个包代表一个磁盘上的APK安装包。...它自动会检测安装包的模式的是单一APK或者集群APK模式。 这样就可以对"集群APK"的安装包进行理性的检查,比如会检查"base APK"和"拆分APK"是否具有相同的包名和版本号。
前言 阅读本文前最好阅读Android PMS处理APK的复制这篇文章,因为它和本篇文章本来是一篇文章,由于公号文章的字数限制,被拆分为了两篇文章,这一篇我们接着来学习PMS处理APK的安装。...检查APK是否存在,如果存在就获取此前没被改名前的包名并在注释1处赋值给PackageParser.Package类型的pkg,在注释3处将标志位replace置为true表示是替换安装。...在注释4处将临时文件重新命名,比如前面提到的/data/app/vmdl18300388.tmp/base.apk,重命名为/data/app/包名-1/base.apk。...更新该APK对应的Settings信息,Settings用于保存所有包的动态设置。 如果安装成功就为新安装的应用程序准备数据,安装失败就删除APK。...2.总结 本文和上一篇文章Android PMS处理APK的复制主要讲解了PMS是如何处理APK复制和安装的,主要有几个步骤: 1.
在华为手机可以安装,却在oppo手机无法安装,这是怎么回事呢? 原来在打包问题上 之前仅仅只勾选了第二个,现在把两个都勾上,然后打包安装到oppo手机,完美解决!
安装包,解析这个目录下的所有APK安装包。...同样也执行例行检查,比如检查"base APK"和"拆分APK"是否有相同的安装包包名和版本号。...安装流程详解9——PackageParser解析APK(上)中 五、PackageParse#parseMonolithicPackage(File, int)方法解析 下面我们依次讲解下上面的其他三个方法..."Failed adding asset path: " + apkPath); } return cookie; } 这个方法主要让AssetManager和安装包的路径的关联...这里大家重点关注下 addAssetPath 方法,在Android系统中安装包路径和AssetManager的关联是使用AssetManager#addAssetPath(String) 十六、PackageParse
安装之前判断是否有root权限,如果有root权限就静默安转,如果没有就利用意图进行安装。...源码参考地址 /** * * @author Javen * @since 2016/05/24 */ public class ApkController { /** * 描述: 安装...return false; Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW..."); intent.addCategory("android.intent.category.DEFAULT"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK...); intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
App不但要求功能完善,其他方面也得综合考虑,比如APK安装包的文件大小就是很重要的因素。具备同样功能的两个安装包,一个很大很占用空间,另一个较小不怎么占空间,用户的选择结果自然不言而喻。...首先看allowBackup,该属性若设置true,则允许用户备份APK安装包和应用数据,以便在刷机或者数据丢失后恢复应用。...时便会自动移除无用的资源文件。...之所以提供x86架构的so文件,是为了能够在电脑的模拟器上运行App,开发阶段当然无所谓安装包大小,正式发布就得考虑给APK瘦身,因此正式版本的安装包建议移除非ARM架构的so文件。... abiFilters "arm64-v8a", "armeabi-v7a" // 保留这两种指令架构的so文件 } } } 添加so过滤配置后再导出安装包
apk,实际就是一个zip包,大家可以修改后缀解压后查看,LZ解压的如下: ? 所有的Android应用程序都要求用一个证书进行数字签名,Android系统不会安装没有进行签名的App。...平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间是以Debug状态进行编译的,因此ADT会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名...如果你不小心采用了不同的证书,那么系统会要求你的应用程序采用不同的包名,在这种情况下手机相当于安装了一个全新的应用程序。...7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。...:在这里我们可以知道这个东西是谷歌针对Android7.0推出的新的签名方案,也就是说,当you的app需要兼容7.0时,才会遇到这个东西。