android-即时应用程序低于4mb的困难.如何减少apk大小

android-即时应用程序低于4mb的困难.如何减少apk大小,第1张

概述我在将APK降到4mb以下时遇到了困难.检查生成的即时应用APK之后我看到com.google.android.gms.internal几乎是1.4mb.我只是无法找到这么大块的原因.必须是某种依赖.我的基本清单文件如下所示:dependencies{api"com.android.support:design:$rootProject.supportLib"api"co

我在将APK降到4mb以下时遇到了困难.
检查生成的即时应用APK之后
我看到com.Google.android.gms.internal几乎是1.4mb.
我只是无法找到这么大块的原因.必须是某种依赖.

我的基本清单文件如下所示:

dependencIEs {API "com.androID.support:design:$rootProject.supportlib"API "com.androID.support:support-fragment:$rootProject.supportlib"API "com.androID.support:appcompat-v7:$rootProject.supportlib"API "com.androID.support:recyclervIEw-v7:$rootProject.supportlib"API "com.androID.support:cardvIEw-v7:$rootProject.supportlib"API 'com.androID.support.constraint:constraint-layout:1.0.2'API "com.Google.code.gson:gson:$rootProject.gson"API "com.Google.firebase:firebase-core:$rootProject.Googlelibs"API "com.Google.firebase:firebase-ads:$rootProject.Googlelibs"API "com.Google.firebase:firebase-appindexing:$rootProject.Googlelibs"API "com.Google.androID.gms:play-services-auth:$rootProject.Googlelibs"API "com.androID.support:multIDex:$rootProject.multIDex"API "com.github.bumptech.glIDe:glIDe:$rootProject.glIDe"annotationProcessor "com.github.bumptech.glIDe:compiler:$rootProject.glIDe"API "com.loopj.androID:androID-async-http:$rootProject.asynchttp"API "org.greenrobot:eventbus:$rootProject.greenRobotEventBus"API "com.vincentbrison.openlibrarIEs.androID:dualcache:$rootProject.dualcache"API('com.crashlytics.sdk.androID:crashlytics:2.6.8@aar') {    transitive = true;}

解决方法:

我刚刚做完同样的事情,并将Instant Apps的大小从13MB增加到4MB.

经过如此多的头痛和无数小时的努力之后,我发现以下软件包的大小取决于您所包含的依赖项.

> com.Google.androID.gms.internal
> androID.support.v4.internal
> androID.support.v7.internal

例如,如果排除广告依赖关系,内部大小将至少减少500kb. AndroID支持库也是如此,不包括CardVIEw,而是看到支持的内部尺寸缩小.

我将逐步列出我在大型应用程序的多功能Instant Apps模块中遇到的所有麻烦:

仅在主应用程序中使用的移动依赖项

在您的情况下,以下2个项目对于Instant App绝对没有用,而只能在Main App中使用:

API "com.Google.firebase:firebase-appindexing:$rootProject.Googlelibs"API "com.androID.support:multIDex:$rootProject.multIDex"

将它们移至主应用程序,如果代码与您的视图耦合在一起,但必须修复它,则移动Appindexing可能会很困难.就我而言,我必须从基本模块中的视图实例化AppIndexing,因此我使用otto(EventBus)进行了此 *** 作.在基本模块中创建一个事件,将其触发并捕获到Main App的AppIndexing帮助器类中.

从所有程序包中明确排除Google支持小组

它可能看起来很荒谬,但它的大小可以说明一切,使用显式排除项更改所有Google / AndroID支持依赖项:

API("com.androID.support:design:$rootProject.supportlib") {    exclude group: 'com.androID.support'}API("com.androID.support:support-fragment:$rootProject.supportlib") {    exclude group: 'com.androID.support'}API("com.androID.support:appcompat-v7:$rootProject.supportlib") {    exclude group: 'com.androID.support'}API("com.androID.support:recyclervIEw-v7:$rootProject.supportlib") {    exclude group: 'com.androID.support'}API("com.androID.support:cardvIEw-v7:$rootProject.supportlib") {    exclude group: 'com.androID.support'}API('com.androID.support.constraint:constraint-layout:1.0.2') {    exclude group: 'com.androID.support'}API("com.Google.firebase:firebase-core:$rootProject.Googlelibs") {    exclude group: 'com.androID.support'}API("com.Google.firebase:firebase-ads:$rootProject.Googlelibs") {    exclude group: 'com.androID.support'}API("com.Google.firebase:firebase-appindexing:$rootProject.Googlelibs") {    exclude group: 'com.androID.support'}API("com.Google.androID.gms:play-services-auth:$rootProject.Googlelibs") {    exclude group: 'com.androID.support'}

为每个模块启用Proguard

正如其他人提到的,enable proguard for each module.proguard减少了我们原来的13MB的大约25%.

排除即时应用程序中不会使用的功能

登录:

对于我们来说,Instant App不需要登录功能.因此,我将与登录/身份验证相关的所有内容移到了主应用程序,并使用事件总线在基本模块中需要的地方触发了 *** 作.例如,基本模块中包含导航抽屉中的“登录/注销” *** 作(在Instant App中隐藏但在Main应用程序中可见).因此,我为每个事件触发一个事件,并在Main App Module中捕获该事件以显示“登录屏幕”或进程注销.

这使我可以从基本模块中排除com.Google.androID.gms:play-services-auth依赖项,从而进一步减少了gms内部结构的大小.

广告:

我们仅出于尺寸目的将广告从基本模块移至主应用程序.我们使用类似的技术(事件总线)进行了此 *** 作,以调用从基本模块渲染广告,并通过助手类在Main App中进行实际渲染.

这使我们可以删除com.Google.firebase:firebase-core和com.Google.firebase:firebase-ads

附言:功能排除完全取决于您的需求/意愿/妥协.我们做出这些决定是因为我们希望所有创收功能都可以在Instant App中使用.因此,只要我们能赚钱,我们就不会在意广告或登录.

希望这可以帮助.

总结

以上是内存溢出为你收集整理的android-即时应用程序低于4mb的困难.如何减少apk大小全部内容,希望文章能够帮你解决android-即时应用程序低于4mb的困难.如何减少apk大小所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1081023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存