首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实现Android APK瘦身99.99%

摘要: 如何瘦身是 APK 的重要优化技术。APK 在安装和更新时都需要经过网络下载到设备,APK 越小,用户体验越好。...本文作者通过对 APK 内在机制的详细解析,给出了对 APK 各组成成分的优化方法及技术,并实现了一个基本 APK 的最小化过程。 正文: 高尔夫运动中,分数最小者胜出。...优化为 786 Kb(削减 50%) 我们已经实现APK 规模减半,并未对我们的 APP 有任何可见的影响。 ?...优化为 108 Kb(削减 87%) 天哪,我们刚刚实现了近十倍的削减,即从 786Kb 削减到 108Kb。唯一可见的更改是工具条(Toolbar)的颜色,现在它使用了缺省的 OS 主题。 ?...对于正常类,Proguard 可自动实现混淆功能,但是考虑到Activity类名会通过Intents唤醒,因此缺省情况下不要混淆Activity的名字。

1.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

一款 APK怎么诞生的?

64K 引用限制,当 type_ids、method_ids 或者 field_ids 超过 65536(64 * 1024)的时候,需要进行 dex 分包,为了 Dex 的数量尽可能少,我们需要尽量实现...编译完之后,可以在 ApplicationTaskManager#createTasksForVariantScope 中找到创建这些 Task 相关的代码,也就意味着顺藤摸瓜找到这些 Task 的真正实现逻辑...顺着代码逻辑,我们找到最终真正实现这个逻辑的是:GenerateBuildConfig 这个 task,GenerateBuildConfig 是继承自 BaseTask,这里有个小技巧是,Task 中真正的执行逻辑都是在带着...2.3 获取所有 task 对应的类名 看到上面的例子,可能有些人会抛出一个疑问就是那我们怎么确定构建中执行的 task 具体对应哪个类呢,这里提供一个小技巧,其实我们可以在 taskGraph 构建完成之后...四、手动构建 APK 最后我们通过命令行来手动打包一个可执行的 APK,能让我们对 APK 构建的理解更加深入。

82930

如何读取APK的Activity(Python实现)

对此,本文简单介绍小编调研和实现的历程,最后使用python脚本实现相关功能。 二、通过什么方式获取Activity 1. adb adb是我们日常工作每天都会接触的,也是最简单有效。...4.Android APK逆向解析 通过工具对应用市场的APP进行反编译或者逆向工程,可以从APK中获取相关信息(比如清单文件AndroidManifest.xml里面的package、versionName...[48qxcpj15s.png] 三、确定获取Activity的思路和技术方案 通过对目标和方法的分析,我们确定的大致思路:实现通过任意市场APP的APK文件,都要能获取应用相关的基本信息。...文件和apk文件反编译成可阅读的格式,主要涉及java代码和AndroidManifest.xml查看。...同时其功能实现不依赖于GUI,可以将其封装进脚本,用于编写自动化工具去解析和执行,这对于构建自动化测试或者自动打包流程等非常有用。 5.

2.6K30

Android逆向|修改apk资源实现去广告

0x01实验一:开屏广告去除 开屏广告选取的apk是火柴人,初次安装上apk,打开之后截图如下 ? ? 不难发现,初次打开apk的界面并不是我们游戏界面,而是广告界面。...对于这种开屏广告的分析,首先我们可以将apk拖入AndroidKiller中,查看AndroidManifest.xml配置文件, 在这里我们需要学习一个知识点,apk的启动界面是在AndroidManifest.xml...我们只需要修改apk主界面的activity为我们的初次打开界面即可。...0x02实验二:弹窗广告去除 弹窗广告选取的apk是laserdraw,初次安装上apk之后,在我们进行绘画的时候总是会出现一个弹窗广告,该apk的最下面也会有广告显示,而且每次打开一个界面都会弹出一个广告...本次实验就是要去除掉该apk的弹窗广告。

4.3K50

.apk反编译_apk反编译教程

APK、Dalvik字节码和smali文件 APK文件 大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮...APK能看到的是(Google Play下载的完整版版本): Where’s My Water.zip\ •asset\ •...但是,注意的是最终我们修改APK需要操作的文件是.smali文件,而不是导出来的Java文件重新编译(况且这基本上不可能)。...三、smali文件内容具体介绍 下面开始进一步分析smali中的具体例子,取鳄鱼小顽皮中的WMWActivity.smali来分析(怎么获得请参考下一节的APK反编译之二:工具介绍,暂时先介绍smali...5-6行定义的是接口信息:这个WMWActivity实现了一个com.burstly.lib.ui这个package下(一个广告SDK)的IBurstyAdListener接口。

9.4K30

Android实现apk插件方式换肤的实例讲解

皮肤就是apk,是一个资源包,包含了颜色、图片等。 3.什么样的控件应该进行换肤? 包含背景图片的控件,例如textView文字颜色。 4.皮肤与已安装的资源如何匹配?...skinFactory); } } 2.需要换肤的控件收集到一个容器中并且不更改自己的逻辑直接换肤(例如:不用在每个需要换肤的空间里面加上: “ app:…… ” 自定义控件属性) 思考: (1)安装的apk...创建SkinManager去获得皮肤apk,app通过SkinManager获取皮肤apk (1)加载皮肤包(loadSkin):通过反射获得AsserManager的addAssetpath()方法,...再通过这个方法获得皮肤apk,从而实例化skinResource;再通过PackageManager.getPackageArchiveInfo(path,PackageManager.GET_ACTIVITIES...).packageName;获得皮肤包名 (2)获取颜色(getColor):判断skinResource是否为空;拿到res的名字,eg:通过“colorAccent”去寻找id Android实现apk

49020

浅谈安卓apk加固原理和实现

代码被反编译对于apk的开发者和使用者而言十分苦恼。apk加固、防止反编译此时显得尤为重要。虽然有好多给apk加固的第三方,可能并不需要自己做apk加固,但是了解apk加固原理还是很有必要的。...本文主要向大家介绍apk加固原理和简单实现。...目录: 一、apk常见加固方式 二、apk加固原理 三、apk加固实现 四、apk该方式加固后缺陷 一、apk常见加固方式 (1)代码层级加密--代码混淆 代码混淆是一种常用的加密方式。...三、apk加固实现 准备: SourceProject: 需要加密源程序,自定义application为: com. targetapk MyApplication,主activity为: com. targetapk.MainActivity...以上就是apk加壳实现整个过程。实现起来基本没什么问题,需要注意的点是源工程有多dex问题:源程序中有多个dex的时候,多个dex同时一块压缩成TargetApk.zip,然后其他步骤不变。

3K30

IPTV电视直播系统apk运营—怎么让视频更流畅

很多IPTV电视直播系统运营者都会有这样的疑问:怎么才能让视频更流畅的播放? 这里小编就可能影响APK播放视频流畅度的原因做简单分析。...视频源的清晰度和流畅度 我们知道视频的 清晰度和大小和视频的码率有关,如果运营者自己的源本身就是码率高的,而且在VLC等常用播放器中都可以流畅播放的话,那么在电视盒中如果其他条件都是比较好的话,那么就可以实现清晰流畅播放...播放器性能 很多IPTV电视直播系统的APK软件商的播放器是自己研发的,但是也不排除有些是用的开源的系统,相比开源系统播放器,自主研发的会在很多方面做改进,尤其是已经在市场上使用几年的播放器,对盒子的适配播放等方面都有优势

1.3K40

逆向APK进行smali注入实现“秒破WIFI”

AutoConnectActivityWithStateList这个类进行了多次调用,看来AutoConnectActivityWithStateList类是个非常关键的环节,我们不如直接找到这个类的实现代码进去看看...TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z move-result v0 if-nez v0, :cond_0 这是一个非常关键的方法的实现...(真搞不懂java弹个对话框怎么要用到这么多方法,这里怀念一下windows的MessageBoxA。) 插入过后就是对整个代码进行编译打包的工作了,不要以为这个活就干完了,真正闹心的还在后面呢!...只有少数APK会成功打包。后来我专门研究了一下这个问题,主要其实是资源出的错,当然前提是要先把smali代码编译过去,剩下再解决资源的问题。本例中的这个APK也是有报错的,好在还不多,都一一解决了。...先别急,我们还要对这个APK进行签名,否则安装不了。 ? OK,我们下面安装这个APK,来看看效果。 ?

1.3K60

APK安装流程详解9——PackageParser解析APK(上)

它既能解析一个"单一"APK文件,也能解析一个"集群"APK文件(即一个APK文件里面包含多个APK文件)。...一个"集群"APK有一个"基准"APK(base APK)组成和其他一些"分割"APK("split" APKs)构成,其中这些"分割"APK用一些数字来分割。...它自动会检测安装包的模式的是单一APK或者集群APK模式。 这样就可以对"集群APK"的安装包进行理性的检查,比如会检查"base APK"和"拆分APK"是否具有相同的包名和版本号。...()方法来获取一个ApkLite对象,然后用这个ApkLite对象构造一个PackageLite对象 所以正在这个函数里面要解决三个问题 1、parseApkLite(File,int)函数内部的实现...下面我们来看下parseBaseApk(res, parser, flags, outError)的具体实现: 十一、PackageParse#parseBaseApk(Resources,XmlResourceParser

5.6K10

细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4

简介 大部分开发者对apk签名还停留在APK v2,对APK v3和APK v4了解很少,而且网上大部分文章讲解的含糊不清,所以根据官网文档重新整理一份。...apk签名从APK v1到APK v2改动很大,是颠覆性的,而APK v3只是对APK v2的一次升级,APK v4则是一个补充。...APK v1的缺点就是META-INF目录下的文件并不在校验范围内,所以之前多渠道打包等都是通过在这个目录下添加文件来实现的。...Android 9 支持 APK 密钥轮替,这使应用能够在 APK 更新过程中更改其签名密钥。为了实现轮替,APK 必须指示新旧签名密钥之间的信任级别。...所以APK v4与APK v2或APK v3可以算是并行的,所以APK v4签名后还需要 v2 或 v3 签名作为补充。

5K10

【译】使用 APK Analyzer 分析你的 APK

Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。使用APK Analyzer不仅能够减少你花在debug上的时间,而且还能减少你的APK大小。...使用APK Analyzer,你能够实现: 查看APK中文件的绝对大小和相对大小。(译注:相对大小指的是该文件占整个APK大小的百分比) 理解DEX文件的组成。...(译注:新版APK和旧版APK之间文件大小的差异) 这里有3种方法访问APK Analyzer: 拖拽APK到Android Studio的编辑窗口。 切换到Project视图,并且双击APK文件。...在菜单栏中选择Build > Analyzer APK,并且选择APK。 注意:当使用APK Analyzer分析debug的APK,请使用Build > Build APK生成的APK。...比如,你能看到library中的AndroidManifest.xml是怎么合入最后的AndroidManifest.xml的。 另外,这种显示形式提供了lint的能力,会在右上角显示警告、错误提示。

2.4K50

apk 反编译(使用android逆向助手,进行反编译apk,查看apk源码)

第一步:下载逆向助手 第二步:将apk文件拷贝到逆向助手的apktool目录,在逆向助手的apktool目录下按住shift同时点击鼠标右键,选择“在此处打开命令窗口,即CMD” 第三步:在cmd命令行中输入命令...apktool d -f 应用程序名,得到以apk名字命名的文件夹,里面可以直接看到res目录下的资源文件和Android的清单文件,但是看不到Java文件 第四步:双击打开Android逆向助手....exe,选中“提取dex”操作,然后将lib\apktool目录下的apk拖动到源文件中;点击“操作”,得到dex文件 第五步:选中“dex转jar”操作,然后将得到的dex文件拖动到源文件中;点击

3.1K10

【Android 逆向】APK 加壳脱壳现状 | 判断 APK 是否加壳 | APK 逆向流程

文章目录 一、APK 加壳脱壳现状 二、判断 APK 是否加壳 三、APK 逆向流程 一、APK 加壳脱壳现状 ---- 加壳覆盖率很高 : 当前的应用 , 基本上 90% 都会加壳 , 各大加固厂商..., 基本都 提供免费的加壳服务 ; 很难找到不加壳的应用 ; 脱壳场景 : 竞品分析 : 分析竞品 APK 时 , 如果对方加壳 , 需要 先脱壳 , 然后才能分析 ; 恶意操作分析 : 恶意应用一般都会加壳..., 并且加的壳都很特殊 , 需要 先进行脱壳 , 然后才能进行恶意代码分析 ; 二、判断 APK 是否加壳 ---- 如何判断一个 Android 应用是否加壳 : 直接解压观察 : 将应用 APK...; GDA 分析 : 使用 GDA 分析 APK 文件 , 将 APK 文件直接拖动到 GDA 中 , 就会进行自动分析 ; 三、APK 逆向流程 ---- 检测加壳 : 使用检测工具 如 GDA 等..., 判断 APK 文件是否加壳 ; 根据加壳的相关指纹信息 , 判断加的是哪种壳 ; 脱壳 : 针对 APK 加壳类型 , 进行 脱壳 ; 反编译 : 使用 反编译工具 如 ApkTool , JEB

2.9K20
领券