首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

[Android技术专题]APK瘦身看这一篇文章就够了

之前我在微信群里面有说到,随着Android开发越来越成熟,关于Android方面的技术文章越来越多,作为开发者不缺资源,缺乏的是系统的知识和指导,对于学生和上班族来讲,更缺乏筛选信息的时间。从某个角度来讲,精心筛选整理网络上的优质文章,如果需要学习某方面的知识只需要看这一篇文章就够,那意义会比写一篇纯技术文章会有价值得多。 出于能够更便捷、高效获取优质资源的角度考虑,写一系列专题的想法就诞生了,结合自己阅读过的技术文章和实际工作经验,将平时收集的优质技术文章按照某个方面整理成一系列的专题,比如APK瘦身、插件化、程序架构、性能优化、自定义view、增量升级、移动开发各种技术解决方案等。这是我目前能够想到的除了写书之外最值得做的一件事情了。 这个系列从APK瘦身专题开始,后面会不定期推出其它专题,发过的专题也会不断更新。

02

[Bazel]自定义工具链

本文会讲述 Bazel 自定义工具链的两种方式,Platform 和 Non-Platform 方式。会存在这两种方式的原因是 Bazel 的历史问题。例如,C++ 相关规则使用 --cpu 和 --crosstool_top 来设置一个构建目标 CPU 和 C++ 工具链,这样就可以实现选择不同的工具链构建 C++ 项目。但是这都不能正确地表达出“平台”特征。使用这种方式不可避免地导致出现了笨拙且不准确的构建 APIs。这其中导致了对 Java 工具链基本没有涉及,Java 工具链就发展了他们自己的独立接口 --java_toolchain。因此非平台方式(Non-Platform)的自定义工具链实现并没有统一的 APIs 来规范不同语言的跨平台构建。而 Bazel 的目标是在大型、混合语言、多平台项目中脱颖而出。这就要求对这些概念有更原则的支持,包括清晰的 APIs,这些 API 绑定而不是分散语言和项目。这就是新平台(platform)和工具链(toolchain) APIs 所实现的内容。

03

快速缓解 32 位 Android 环境下虚拟内存地址空间不足的“黑科技”

背景 随着微信新业务的不断增长,因 32 位设备上虚拟内存地址空间限制导致的内存分配失败问题也越来越突出。目前市场上的存量 32 位设备数量仍然较多,且预计还会继续存在一段时间。为了保障微信在这些设备上的可用性,我们尝试了一些常规优化手段,前期收效是显著的,但随着业务规模和数量的增长,虚拟内存的消耗速度越来越快,常规优化手段的收益也越来越低。要在这种趋势下继续缓解内存不足的问题,在常规优化手段的基础上就还需要一些能快速见效的办法,即标题里提到的“黑科技”。 这里还要特别感谢 simsun 大佬参与方案预研

05
领券