Skip to content

android_setup_cn

guoling edited this page Mar 15, 2024 · 23 revisions

MMKV for Android

MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Win32 / POSIX 平台,一并开源。

Android 安装指南

基本要求

  • MMKV 支持 API level 16 以上平台;
  • MMKV 需使用 NDK r16b 或以上进行编译 (通过源码引入 MMKV 的话)

安装引入

  • 通过 Maven(推荐)

    从 v1.2.8 起, MMKV 迁移到 Maven Central。老版本 (<= v1.2.7) 仍然在 JCenter。

    1. 在 App 模块的 build.gradle 文件里添加:

      dependencies {
          implementation 'com.tencent:mmkv:1.3.4'
          // replace "1.3.4" with any available version
      }

      Gradle 在编译工程的时候会自动从 maven 仓库下载 AAR 包。

    2. MMKV 默认以静态库形式链接 libc++。这个库如果动态链接,会额外占用 2MB 空间(解压后)。如果你已经有其他库引入了 libc++_shared.so,并且你确保他们的库没有版本兼容问题,你可以使用动态链接 libc++ 的 MMKV,以进一步减少安装包大小:

      dependencies {
          implementation 'com.tencent:mmkv-shared:1.3.4'
          // replace "1.3.4" with any available version
      }
  • 通过编译源码
    从 v1.2.9 起,MMKV 不再官方支持 armeabi 架构。如果你需要支持 armeabi,你可以源码编译。

    1. 获取 MMKV 源码:

      git clone https://github.com/Tencent/MMKV.git
      cd mmkv
    2. 通过 Android Studio 的 SDK Manager 安装最新的 NDK。
      注意:从 NDK r17 开始, Android 官方不再支持 ARMv5 (armeabi) 架构。如果你的 App 还需要支持 armeabi,那么你需要安装 NDK r16b 来编译 MMKV。并且需要从文件 Android/MMKV/mmkv/build.gradle 里反注释这两行:

      // uncomment this line to support armeabi
      // abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
      ...
      // uncomment this line to support armeabi by using android-ndk-r16b
      // ndkVersion = '16.1.4479499'
    3. 用 Android Studio 打开项目目录 Android/MMKV 即可编译 MMKV,你也可以从命令行编译:

      cd Android/MMKV
      ./gradlew build
    4. 如果你确定不需要加密功能,你可以在Core/MMKVPredef.h 文件中打开宏MMKV_DISABLE_CRYPT,以减小一些二进制大小。

    5. 如果你确定不需要 MMKV for Flutter 功能,你可以在Core/MMKVPredef.h 文件中打开宏MMKV_DISABLE_FLUTTER ,以减小一些二进制大小。

下一步