Skip to content

Commit

Permalink
Merge pull request Tencent#777 from Tencent/dev
Browse files Browse the repository at this point in the history
prepare for v1.2.11
  • Loading branch information
lingol authored Oct 26, 2021
2 parents 200b4de + 24294f2 commit c2d53eb
Show file tree
Hide file tree
Showing 65 changed files with 2,868 additions and 321 deletions.
7 changes: 3 additions & 4 deletions Android/MMKV/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.5.10'
ext.kotlin_version = '1.5.31'

repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'com.android.tools.build:gradle:4.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Expand All @@ -24,7 +24,6 @@ task clean(type: Delete) {
delete rootProject.buildDir
}


ext {
minSdkVersion = 16
compileSdkVersion = 30
Expand Down Expand Up @@ -52,4 +51,4 @@ ext {

POM_DEVELOPER_ID = "Tencent Wechat"
POM_DEVELOPER_NAME = "Tencent Wechat, Inc."
}
}
7 changes: 5 additions & 2 deletions Android/MMKV/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ org.gradle.jvmargs=-Xmx1536m
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

VERSION_NAME_PREFIX=1.2.10
VERSION_NAME_PREFIX=1.2.11
#VERSION_NAME_SUFFIX=-SNAPSHOT
VERSION_NAME_SUFFIX=
VERSION_NAME_SUFFIX=

RELEASE_REPOSITORY_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2
SNAPSHOT_REPOSITORY_URL=https://oss.sonatype.org/content/repositories/snapshots
4 changes: 2 additions & 2 deletions Android/MMKV/mmkv/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
project(mmkv)

# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.8.0)
cmake_minimum_required(VERSION 3.10.0)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
Expand Down Expand Up @@ -53,4 +53,4 @@ target_link_libraries( mmkv
${log-lib}
core
# aes
)
)
21 changes: 16 additions & 5 deletions Android/MMKV/mmkv/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
apply from: rootProject.file('gradle/build_library.gradle')

android {
defaultPublishConfig "StaticCppRelease"
defaultPublishConfig "DefaultCppRelease"
// defaultPublishConfig "StaticCppRelease"
// defaultPublishConfig "SharedCppRelease"

defaultConfig {
Expand Down Expand Up @@ -34,12 +35,22 @@ android {
externalNativeBuild {
cmake {
path "CMakeLists.txt"
version "3.8.0+"
version "3.18.0+"
}
}

flavorDimensions "stl_mode"
productFlavors {
DefaultCpp {
dimension "stl_mode"
ext.artifactIdSuffix = ''
externalNativeBuild {
cmake {
arguments = ["-DANDROID_STL=c++_static"]
cppFlags "-DMMKV_STL_SHARED=0"
}
}
}
StaticCpp {
dimension "stl_mode"
ext.artifactIdSuffix = 'static'
Expand All @@ -52,7 +63,7 @@ android {
}
SharedCpp {
dimension "stl_mode"
ext.artifactIdSuffix = ''
ext.artifactIdSuffix = 'shared'
externalNativeBuild {
cmake {
arguments = ["-DANDROID_STL=c++_shared"]
Expand All @@ -72,6 +83,6 @@ dependencies {
implementation 'androidx.annotation:annotation:1.2.0'
javadocDeps 'androidx.annotation:annotation:1.2.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
69 changes: 67 additions & 2 deletions Android/MMKV/mmkv/src/main/cpp/flutter-bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,42 @@
#ifndef MMKV_DISABLE_FLUTTER

# include "MMKV.h"
# include <stdint.h>
# include "MMKVLog.h"
# include <cstdint>
# include <string>

using namespace mmkv;
using namespace std;

namespace mmkv {
extern int g_android_api;
extern string g_android_tmpDir;
}

# define MMKV_EXPORT extern "C" __attribute__((visibility("default"))) __attribute__((used))

MMKV_EXPORT void mmkvInitialize(const char *rootDir, int32_t logLevel) {
MMKV_EXPORT void mmkvInitialize_v1(const char *rootDir, const char *cacheDir, int32_t sdkInt, int32_t logLevel) {
if (!rootDir) {
return;
}
if (cacheDir) {
g_android_tmpDir = string(cacheDir);
}

g_android_api = sdkInt;
#ifdef MMKV_STL_SHARED
MMKVInfo("current API level = %d, libc++_shared=%d", g_android_api, MMKV_STL_SHARED);
#else
MMKVInfo("current API level = %d, libc++_shared=?", g_android_api);
#endif

MMKV::initializeMMKV(rootDir, (MMKVLogLevel) logLevel);
}

MMKV_EXPORT void mmkvInitialize(const char *rootDir, int32_t logLevel) {
mmkvInitialize_v1(rootDir, nullptr, 0, logLevel);
}

MMKV_EXPORT void *getMMKVWithID(const char *mmapID, int32_t mode, const char *cryptKey, const char *rootPath) {
MMKV *kv = nullptr;
if (!mmapID) {
Expand Down Expand Up @@ -408,4 +429,48 @@ MMKV_EXPORT void mmkvMemcpy(void *dst, const void *src, uint64_t size) {
memcpy(dst, src, size);
}

MMKV_EXPORT bool backupOne(const char *mmapID, const char *dstDir, const char *rootPath) {
if (rootPath) {
auto root = string(rootPath);
if (root.length() > 0) {
return MMKV::backupOneToDirectory(mmapID, dstDir, &root);
}
}
return MMKV::backupOneToDirectory(mmapID, dstDir);
}

MMKV_EXPORT bool restoreOne(const char *mmapID, const char *srcDir, const char *rootPath) {
if (rootPath) {
auto root = string(rootPath);
if (root.length() > 0) {
return MMKV::restoreOneFromDirectory(mmapID, srcDir, &root);
}
}
return MMKV::restoreOneFromDirectory(mmapID, srcDir);
}

MMKV_EXPORT uint64_t backupAll(const char *dstDir/*, const char *rootPath*/) {
// historically Android mistakenly use mmapKey as mmapID
// makes everything tricky with customize root
/*if (rootPath) {
auto root = string(rootPath);
if (root.length() > 0) {
return MMKV::backupAllToDirectory(dstDir, &root);
}
}*/
return MMKV::backupAllToDirectory(dstDir);
}

MMKV_EXPORT uint64_t restoreAll(const char *srcDir/*, const char *rootPath*/) {
// historically Android mistakenly use mmapKey as mmapID
// makes everything tricky with customize root
/*if (rootPath) {
auto root = string(rootPath);
if (root.length() > 0) {
return MMKV::restoreAllFromDirectory(srcDir, &root);
}
}*/
return MMKV::restoreAllFromDirectory(srcDir);
}

#endif // MMKV_DISABLE_FLUTTER
56 changes: 54 additions & 2 deletions Android/MMKV/mmkv/src/main/cpp/native-bridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,18 @@ extern "C" JNIEXPORT JNICALL jint JNI_OnLoad(JavaVM *vm, void *reserved) {

namespace mmkv {

MMKV_JNI void jniInitialize(JNIEnv *env, jobject obj, jstring rootDir, jint logLevel) {
static string jstring2string(JNIEnv *env, jstring str);

MMKV_JNI void jniInitialize(JNIEnv *env, jobject obj, jstring rootDir, jstring cacheDir, jint logLevel) {
if (!rootDir) {
return;
}
const char *kstr = env->GetStringUTFChars(rootDir, nullptr);
if (kstr) {
MMKV::initializeMMKV(kstr, (MMKVLogLevel) logLevel);
env->ReleaseStringUTFChars(rootDir, kstr);

g_android_tmpDir = jstring2string(env, cacheDir);
}
}

Expand Down Expand Up @@ -789,6 +793,50 @@ MMKV_JNI void checkContentChanged(JNIEnv *env, jobject instance) {
}
}

MMKV_JNI jboolean backupOne(JNIEnv *env, jobject obj, jstring mmapID, jstring dstDir, jstring rootPath) {
if (rootPath) {
string root = jstring2string(env, rootPath);
if (root.length() > 0) {
return (jboolean) MMKV::backupOneToDirectory(jstring2string(env, mmapID), jstring2string(env, dstDir), &root);
}
}
return (jboolean) MMKV::backupOneToDirectory(jstring2string(env, mmapID), jstring2string(env, dstDir));
}

MMKV_JNI jboolean restoreOne(JNIEnv *env, jobject obj, jstring mmapID, jstring srcDir, jstring rootPath) {
if (rootPath) {
string root = jstring2string(env, rootPath);
if (root.length() > 0) {
return (jboolean) MMKV::restoreOneFromDirectory(jstring2string(env, mmapID), jstring2string(env, srcDir), &root);
}
}
return (jboolean) MMKV::restoreOneFromDirectory(jstring2string(env, mmapID), jstring2string(env, srcDir));
}

MMKV_JNI jlong backupAll(JNIEnv *env, jobject obj, jstring dstDir/*, jstring rootPath*/) {
// historically Android mistakenly use mmapKey as mmapID
// makes everything tricky with customize root
/*if (rootPath) {
string root = jstring2string(env, rootPath);
if (root.length() > 0) {
return (jlong) MMKV::backupAllToDirectory(jstring2string(env, dstDir), &root);
}
}*/
return (jlong) MMKV::backupAllToDirectory(jstring2string(env, dstDir));
}

MMKV_JNI jlong restoreAll(JNIEnv *env, jobject obj, jstring srcDir/*, jstring rootPath*/) {
// historically Android mistakenly use mmapKey as mmapID
// makes everything tricky with customize root
/*if (rootPath) {
string root = jstring2string(env, rootPath);
if (root.length() > 0) {
return (jlong) MMKV::restoreAllFromDirectory(jstring2string(env, srcDir), &root);
}
}*/
return (jlong) MMKV::restoreAllFromDirectory(jstring2string(env, srcDir));
}

} // namespace mmkv

static JNINativeMethod g_methods[] = {
Expand All @@ -814,7 +862,7 @@ static JNINativeMethod g_methods[] = {
{"isFileValid", "(Ljava/lang/String;Ljava/lang/String;)Z", (void *) mmkv::isFileValid},
{"ashmemFD", "()I", (void *) mmkv::ashmemFD},
{"ashmemMetaFD", "()I", (void *) mmkv::ashmemMetaFD},
{"jniInitialize", "(Ljava/lang/String;I)V", (void *) mmkv::jniInitialize},
{"jniInitialize", "(Ljava/lang/String;Ljava/lang/String;I)V", (void *) mmkv::jniInitialize},
{"getMMKVWithID", "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)J", (void *) mmkv::getMMKVWithID},
{"getMMKVWithIDAndSize", "(Ljava/lang/String;IILjava/lang/String;)J", (void *) mmkv::getMMKVWithIDAndSize},
{"getDefaultMMKV", "(ILjava/lang/String;)J", (void *) mmkv::getDefaultMMKV},
Expand Down Expand Up @@ -849,6 +897,10 @@ static JNINativeMethod g_methods[] = {
{"setWantsContentChangeNotify", "(Z)V", (void *) mmkv::setWantsContentChangeNotify},
{"checkContentChangedByOuterProcess", "()V", (void *) mmkv::checkContentChanged},
{"checkProcessMode", "(J)Z", (void *) mmkv::checkProcessMode},
{"backupOneToDirectory", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", (void *) mmkv::backupOne},
{"restoreOneMMKVFromDirectory", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", (void *) mmkv::restoreOne},
{"backupAllToDirectory", "(Ljava/lang/String;)J", (void *) mmkv::backupAll},
{"restoreAllFromDirectory", "(Ljava/lang/String;)J", (void *) mmkv::restoreAll},
};

static int registerNativeMethods(JNIEnv *env, jclass cls) {
Expand Down
Loading

0 comments on commit c2d53eb

Please sign in to comment.