首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apkbuilder在某些文件上速度太慢

apkbuilder在某些文件上速度太慢
EN

Stack Overflow用户
提问于 2014-06-18 01:21:12
回答 2查看 160关注 0票数 0

我的JNI .so libray用apkbuilder打包apk需要8-10秒。该库大小约8MB,主要用C++编写。

为了澄清这个问题,我做了以下测试。

1)其他.so库

我用大约10MB的其他.so替换了.so库,大部分都是用C语言写的。令人惊讶的是,使用新的.so需要1.5秒,这也是一个用于相同CPU架构的JNI库。

2)虚拟文件

我在我的libs/armabi-v7a目录中放置了一个名为xxx.so的虚拟文件。需要1秒。

3)不同的CPU架构

我所有的arm/x86/mips的.so库都需要8-10秒。

4)伪造

我用十六进制编辑器在带有随机值的随机位置编辑了我的.so库。这也需要8-10秒。

为什么只有我的.so库需要这么长时间才能用apkbuilder打包到apk中?有什么方法可以加速我的.so库的这个过程吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-18 02:54:59

APK文件本质上只是一个ZIP文件,而.so文件是在没有任何APK特定处理的情况下添加到其中的。所以最有可能的原因是apkbuilder试图压缩你的.so文件,这需要一些时间,而另一个.so文件是不可压缩的,只是存储它。

AFAICS唯一能加速这个过程的方法是改变apkbuilder源码,使其始终存储而不是压缩.so文件。

票数 2
EN

Stack Overflow用户

发布于 2014-06-18 19:16:43

我发现ZipOutputStream花了大部分时间来压缩.so文件。

Android ApkBuilder使用的是压缩级别9,它的压缩率最高,但性能最慢。如果我将这个级别更改为3,整个性能会有很大的提高,但会有一点压缩比损失。

您可以通过修复sdklib源代码来更改此级别。在SignedjarBuilder.java (com.android.sdklib.internal.build)中,找到'mOutputJar.setLevel‘并更改所需的级别。然后创建sdklib.jar并将其复制到Android SDK目录(android_sdk/tools/lib)

你可以在这里下载源代码:https://android.googlesource.com/platform/tools/base/+/master/sdklib/src/main/java/com/android/sdklib/build/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24269803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档