如何减小 web-RTC 库的大小?
Posted
技术标签:
【中文标题】如何减小 web-RTC 库的大小?【英文标题】:How to reduce the web-RTC library size? 【发布时间】:2017-03-11 04:33:38 【问题描述】:我按照 quick blox 给出的说明进行操作,如下所示: https://quickblox.com/developers/Sample-webrtc-android
dependencies
compile 'com.quickblox:quickblox-android-sdk-videochat-webrtc:3.3.0'
最初我的 apk 大小是 9MB,但是当我在我的应用程序中集成 quickblox 视频聊天时,由于以下平台的不同 .so 文件,apk 大小增加到 45 MB:
>arm64-v8a
>armeabi-v7a
>x86
>x86_64
libraries - libjingle_peerconnection_so.so
有什么方法或建议可以减少 apk 的大小吗?
【问题讨论】:
有什么解决办法吗?我也需要同样的解决方案 你在使用 webrtc 的哪些模块?是否有任何特定的单个模块或多个模块? WEBRTC模块有核心模块、用户模块、消息模块、内容模块、聊天模块和videochat-webrtc模块。 【参考方案1】:我查看了 QuickBlox 提供的示例代码,发现您最多可以保存 10 MB 的 apk,但您必须构建 4 个 apk。您可以查看gradle file
/*There is code for excluding some native libs (it useful if you need reduce apk size and want
build apk only for specific platform). This method allows you to achieve savings about 10MB
of apk's size (but you need build 4 different apks). */
packagingOptions
exclude '**/armeabi-v7a/libjingle_peerconnection_so.so'
exclude '**/arm64-v8a/libjingle_peerconnection_so.so'
exclude '**/x86_64/libjingle_peerconnection_so.so'
exclude '**/x86/libjingle_peerconnection_so.so'
关于多个 APK
不同的 Android 手机使用不同的 CPU,这些 CPU 反过来支持 不同的指令集。 CPU和指令的每种组合 sets 有自己的应用程序二进制接口,或 ABI
armeabi-v7a
arm64-v8a
x86_64
x86
这些是ABI
构建 4 个 apk 意味着您可以分别为这 4 个 ABI 创建 apk。主要思想是不包含不适用于特定 ABI 的库,从而通过仅包含该 ABI 所需的库来减小大小
例如
splits
abi
enable true
reset()
include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
更新:
如何将多个 APK 上传到 PlayStore?
已经在 SO 上提出了这个问题。请检查此question
【讨论】:
这看起来是正确的解决方案。你能解释一下构建“4个不同的apks”吗?我会立即给予赏金。谢谢你的回答:) @RanjithKumar 我添加了关于构建 4 个不同 apk 的解释。请检查 感谢更新的答案。今晚我会检查并提供赏金。请给我时间检查一下 感谢您的努力 @VenSan 我没有尝试过,但他们似乎支持 ios。有一个look【参考方案2】:如果您想为您的应用程序添加视频通话或音频通话功能,则必须添加这些文件。 随着缩小你的 apk 大小,有很多关于它的文章,但没有太多关于带有 quickblox 的 jnilibs 的文章。
Google Developer Docs on shrinking size
希望对你有帮助。
【讨论】:
常见应用程序大小缩减的答案。这个问题询问了特定的库大小。以上是关于如何减小 web-RTC 库的大小?的主要内容,如果未能解决你的问题,请参考以下文章