Skip to content

android_setup_cn

guoling edited this page Oct 22, 2024 · 30 revisions

MMKV for Android

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

Android 安装指南

基本要求

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

安装引入

  • 通过 Maven(推荐)

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

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

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

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

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

      dependencies {
          implementation 'com.tencent:mmkv-shared:2.0.0'
          // replace "2.0.0" with any available version
      }
  • 通过编译源码
    从 v1.2.9 起,MMKV 不再官方支持 armeabi 架构,另外从 v2.0 开始(以及 v1.3.5~v1.3.6)armv7API 22 及以下也不再支持。如果你需要支持 armeabi 或 armv7 或 API 22 及以下,你可以源码编译。

    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 armv7, add 'armeabi' to support armeabi
      // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
      ...
      // uncomment this line to support armeabi by using android-ndk-r16b
      // ndkVersion = '16.1.4479499'

      如果需要支持更低版本的 API,需要改根目录下的 build.gradle 里的 minSdkVersion 选项。

      ext {
          minSdkVersion = 21 // change this to whatever you like
          ....
      }
    3. 用 Android Studio 打开目录 Android/MMKV,选择 'MMKV:mmkv [buildAndPublishToLocalMaven]' gradle 任务,点击“运行”按钮开始编译。如无异常结果会放到这个目录: $HOME/.m2/repository/com/tencent/mmkv/$version。可以在你 App 的 build.gradle 加上以下几行进行验证:

      repositories {
          mavenLocal()
          ....
      }
    4. 如果你确定不需要加密功能,你可以在Core/MMKVPredef.h 文件中打开宏MMKV_DISABLE_CRYPT,以减小一些二进制大小。

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

下一步

Clone this wiki locally