Android So 体积优化

作者: 珍惜Any | 来源:发表于2021-11-19 10:10 被阅读0次
# 关闭C++特性
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")

# 控制符号的可见性
set(CMAKE_C_FLAGS_RELEASE     "${CMAKE_C_FLAGS_RELEASE}   -fvisibility=hidden")
set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=hidden")
set(CMAKE_C_FLAGS_RELEASE     "${CMAKE_C_FLAGS_RELEASE}   -fvisibility-inlines-hidden")
set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility-inlines-hidden")

# 删除调试符号
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")

# 开启空间优化
if (APPLE)
  set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Oz")
  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Oz")
else ()
  set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os")
  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os")
endif ()

# 使用gc-section优化,以函数为单位而非文件
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections -fdata-sections")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ffunction-sections -fdata-sections")
set(CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS}    -Wl,--gc-sections")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--gc-sections")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections")

# 使用icf优化
set(CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS}    -Wl,--icf=safe")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--icf=safe")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--icf=safe")

# 使用LTO
set(CMAKE_C_FLAGS_RELEASE     "${CMAKE_C_FLAGS_RELEASE}     -flto=full")
set(CMAKE_CXX_FLAGS_RELEASE   "${CMAKE_CXX_FLAGS_RELEASE}   -flto=full")
set(CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS}    -flto=full")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -flto=full")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=full")

相关文章

  • Android So 体积优化

  • 4. armeabi,armeabi-v7a,arm64-v8a

    最近,我们公司的APP,要做包体积的优化,其中一个方面就是so包的优化。对于so包的知识点,不是很清楚,特地来整理...

  • IOS App体积优化篇

    接上篇《Android App体积优化篇 》IOS的App的体积过大达到了ipa安装包达到了84.1M的体积,提出...

  • Android App安装包瘦身计划

    Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文...

  • 【性能优化】Android apk体积优化

    ### 背景 随着业务快速发展,各种业务功能上线,版本不断迭代,apk体积也越来越大。apk体积过大,一方面会消耗...

  • Android studio 中build.gradle的配置

    指定文件名称 Android studio默认会有so文件进行压缩优化,加入以下配置可以不压缩so 忽略链接错误 ...

  • Android 包体积优化实战

    看似尋常最奇崛,成如容易卻艱辛。北宋.王安石   最近由于项目需要,做了一些削减包体积的工作,由于之前项目已经进行...

  • Android应用包体积优化

    前言 我司某产品产品从立项至今已经有三个年头,三年中的功能迭代导致项目中积累了大量过时的功能,把研发人员带到了业务...

  • Android包体积优化指南

    Android 安装包主要由 libs(就是so文件)、assets、res以及code组成。大部分应用中,这些内...

  • Android App体积优化篇

    最近在进行App包的体积优化觉得有点意义于是想记录下来分享给大家 需求是这样的:最近项目在进行但是有客户以及产品提...

网友评论

    本文标题:Android So 体积优化

    本文链接:https://www.haomeiwen.com/subject/yaustrtx.html