react-native-mmkv 在 Android 项目中使用

简介: React Native 最快的键/值存储。 MMKV是微信开发的一个高效、小型的移动键值存储框架。更多信息请参见腾讯/MMKV react-native-mmkv是一个库,允许您在 React Native 应用程序中轻松使用MMKV。它提供了对原生 C++ 库的快速和直接绑定,可通过简单的 JS API 访问这些库。

image.png


MMKV


React Native 最快的键/值存储。


  • MMKV是微信开发的一个高效、小型的移动键值存储框架。更多信息请参见腾讯/MMKV
  • react-native-mmkv是一个库,允许您在 React Native 应用程序中轻松使用MMKV。它提供了对原生 C++ 库的快速和直接绑定,可通过简单的 JS API 访问这些库。


官网: github.com/mrousavy/re…


安装


yarn add react-native-mmkv


or


npm install react-native-mmkv

手动配置


MainApplication.java 中添加 // Add 标记行


import com.reactnativemmkv.MmkvModulePackage; // Add
import com.facebook.react.bridge.JSIModulePackage; // Add
public class MainApplication extends Application implements ReactApplication {
  private final ReactNativeHost mReactNativeHost =
      new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
          return BuildConfig.DEBUG;
        }
        @Override
        protected List<ReactPackage> getPackages() {
          return new PackageList(this).getPackages();
        }
        @Override
        protected String getJSMainModuleName() {
          return "index";
        }
        // Add this method here!
        @Override
        protected JSIModulePackage getJSIModulePackage() {
          return new MmkvModulePackage();
        }
      };
  // ...


项目中引入


import { MMKV } from 'react-native-mmkv'
// --- 以下代码不能在远程 debbuger 模式下运行 ---
const storage = new MMKV()
storage.set('user.name', 'Marc')
storage.set('user.age', 21)
const username = storage.getString('user.name') // 'Marc'
const age = storage.getNumber('user.age') // 21


运行


安装好 mmkv 后,执行 yarn android 命令启动项目,第一次运行项目构建过程比较慢,需要耐心等待。


如果 yarn android 运行失败


react-native-mmkv:downloadxxx FAILED 的错误一般是网络不稳定,下载对应包访问超时导致,可以更换一个更稳定,响应速度更快的站点尝试;


如果对应的包链接 (eg. github.com/react-nativ…) 可以直接在浏览器下载,可以正常下载的情况下,也可以多次执行 yarn android 命令进行重试,有时候也可以成功运行,这种情况有个前提,就是每次报错都是新的包下载异常,而不是已经安装过的或者只有一个包一直下载失败。


重试 yarn android 命令也不能解决问题的情况下,在 android 目录下执行 ./gradlew clean 以及清理 node_modules 目录,重新执行 yarnyarn android 命令;


如果还不行, 删除 /android/android/app 中的 build 文件夹,然后再执行 yarn android

PS D:\code\visitapp-rn> yarn android
yarn run v1.22.17
$ react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1168 file(s) to forward-jetify. Using 16 workers...
info JS server already running.
info Installing the app...
WARNING:: Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build to other Maven repositories.
This repository is deprecated and it will be shut down in the future.
See http://developer.android.com/r/tools/jcenter-end-of-service for more information.
Currently detected usages in: project ':react-native-camera', project ':react-native-mmkv', project ':react-native-pager-view', ...
> Task :react-native-mmkv:downloadBoost
Download https://github.com/react-native-community/boost-for-react-native/releases/download/v1.63.0-0/boost_1_63_0.tar.gz
> Task :react-native-mmkv:downloadBoost FAILED
170 actionable tasks: 4 executed, 166 up-to-date
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-mmkv:downloadBoost'.
> javax.net.ssl.SSLException: Read timed out
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 58s
error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-mmkv:downloadBoost'.
> javax.net.ssl.SSLException: Read timed out
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 58s
    at makeError (D:\code\visitapp-rn\node_modules\execa\index.js:174:9)
    at D:\code\visitapp-rn\node_modules\execa\index.js:278:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async runOnAllDevices (D:\code\visitapp-rn\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:106:5)
    at async Command.handleAction (D:\code\visitapp-rn\node_modules\@react-native-community\cli\build\index.js:192:9)
info Run CLI with --verbose flag for more details.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
复制代码


注意


mmkv 不能在 react-native-debugger 中运行,会出现如下错误


Failed to create a new MMKV instance, the native initializer function does not exist. Is the native MMKV library correctly installed? Make sure to disable any remote debugger (e.g. Chrome) to use JSI!


image.png


目录
相关文章
|
2月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
119 1
|
2月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
112 2
|
2月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
173 0
安卓项目:app注册/登录界面设计
|
3月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
50 6
|
2月前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
49 2
|
3月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
2月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
3月前
|
开发框架 Dart 前端开发
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
403 8
|
3月前
|
JavaScript 前端开发 Android开发
让Vite+Vue3项目在Android端离线打开(不需要起服务)
让Vite+Vue3项目在Android端离线打开(不需要起服务)
116 10