Open cdoky opened 2 years ago
pod 'MMKV'
BUILD.bazel
load("@build_bazel_rules_ios//rules:framework.bzl", "apple_framework") apple_framework( name = "MMKV", srcs = glob([ "iOS/MMKV/MMKV/**/*.h", "iOS/MMKV/MMKV/**/*.hh", "iOS/MMKV/MMKV/**/*.m", "iOS/MMKV/MMKV/**/*.mm", "iOS/MMKV/MMKV/**/*.swift", "iOS/MMKV/MMKV/**/*.c", "iOS/MMKV/MMKV/**/*.cc", "iOS/MMKV/MMKV/**/*.cpp", "iOS/MMKV/MMKV/*.h", "iOS/MMKV/MMKV/*.mm", "iOS/MMKV/MMKV/*.hpp", ]), platforms = {"ios": "8.0"}, public_headers = [ "iOS/MMKV/MMKV/MMKV.h", "iOS/MMKV/MMKV/MMKVHandler.h", ], sdk_dylibs = [ "c++", "z", ], sdk_frameworks = ["CoreFoundation"], visibility = ["//visibility:public"], xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD": "gnu++17", "CLANG_CXX_LIBRARY": "libc++", "CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF": "NO", }, deps = ["//Pods/MMKVCore"], )
output
Undefined symbols for architecture x86_64: "_MMKVLogWithLevel(mmkv::MMKVLogLevel, char const*, char const*, int, char const*, ...)", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) +[MMKV initializeMMKV:logLevel:] in libMMKV_objc.a(libMMKV.o) +[MMKV initializeMMKV:groupDir:logLevel:] in libMMKV_objc.a(libMMKV.o) +[MMKV mmkvWithID:cryptKey:relativePath:mode:] in libMMKV_objc.a(libMMKV.o) -[MMKV onMemoryWarning] in libMMKV_objc.a(libMMKV.o) +[MMKV didEnterBackground] in libMMKV_objc.a(libMMKV.o) +[MMKV didBecomeActive] in libMMKV_objc.a(libMMKV.o) ... "mmkv::ThreadLock::initialize()", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) "mmkv::ThreadLock::lock()", referenced from: mmkv::ScopedLock<mmkv::ThreadLock>::lock() in libMMKV_objc.a(libMMKV.o) "mmkv::ThreadLock::unlock()", referenced from: mmkv::ScopedLock<mmkv::ThreadLock>::unlock() in libMMKV_objc.a(libMMKV.o) "mmkv::ThreadLock::ThreadLock()", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::actualSize()", referenced from: -[MMKV actualSize] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::mmkvWithID(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, mmkv::MMKVMode, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from: -[MMKV initWithMMapID:cryptKey:relativePath:mode:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::containsKey(NSString*)", referenced from: -[MMKV containsKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::isFileValid(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)", referenced from: +[MMKV isFileValid:relativePath:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::minimalInit(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::setLogLevel(mmkv::MMKVLogLevel)", referenced from: +[MMKV setLogLevel:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getValueSize(NSString*, bool)", referenced from: -[MMKV getValueSizeForKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::enumerateKeys(void (NSString*, bool*) block_pointer)", referenced from: -[MMKV enumerateKeys:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::initializeMMKV(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, mmkv::MMKVLogLevel)", referenced from: +[MMKV initializeMMKV:logLevel:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::clearMemoryCache()", referenced from: -[MMKV clearMemoryCache] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::removeValueForKey(NSString*)", referenced from: -[MMKV removeValueForKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::setIsInBackground(bool)", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) +[MMKV didEnterBackground] in libMMKV_objc.a(libMMKV.o) +[MMKV didBecomeActive] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::checkReSetCryptKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*)", referenced from: -[MMKV checkReSetCryptKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::registerLogHandler(void (*)(mmkv::MMKVLogLevel, char const*, int, char const*, NSString*))", referenced from: +[MMKV registerHandler:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::writeValueToBuffer(NSString*, void*, int)", referenced from: -[MMKV writeValueForKey:toBuffer:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::checkContentChanged()", referenced from: -[MMKV checkContentChanged] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::removeValuesForKeys(NSArray*)", referenced from: -[MMKV removeValuesForKeys:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::registerErrorHandler(mmkv::MMKVRecoverStrategic (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, mmkv::MMKVErrorType))", referenced from: +[MMKV registerHandler:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::unRegisterLogHandler()", referenced from: +[MMKV unregiserHandler] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::unRegisterErrorHandler()", referenced from: +[MMKV unregiserHandler] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::registerContentChangeHandler(void (*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))", referenced from: +[MMKV registerHandler:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::unRegisterContentChangeHandler()", referenced from: +[MMKV unregiserHandler] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(NSObject<NSCoding>*, NSString*)", referenced from: -[MMKV setObject:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(bool, NSString*)", referenced from: -[MMKV setBool:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(double, NSString*)", referenced from: -[MMKV setDouble:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(float, NSString*)", referenced from: -[MMKV setFloat:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(int, NSString*)", referenced from: -[MMKV setInt32:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(unsigned int, NSString*)", referenced from: -[MMKV setUInt32:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(long long, NSString*)", referenced from: -[MMKV setInt64:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::set(unsigned long long, NSString*)", referenced from: -[MMKV setUInt64:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::sync(mmkv::SyncFlag)", referenced from: -[MMKV sync] in libMMKV_objc.a(libMMKV.o) -[MMKV async] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::trim()", referenced from: -[MMKV trim] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::close()", referenced from: -[MMKV close] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::count()", referenced from: -[MMKV count] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::reKey(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: -[MMKV reKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::mmapID()", referenced from: -[MMKV initWithMMapID:cryptKey:relativePath:mode:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::onExit()", referenced from: +[MMKV onAppTerminate] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::allKeys()", referenced from: -[MMKV allKeys] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getBool(NSString*, bool)", referenced from: -[MMKV getBoolForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::clearAll()", referenced from: -[MMKV clearAll] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::cryptKey()", referenced from: -[MMKV cryptKey] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getFloat(NSString*, float)", referenced from: -[MMKV getFloatForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getInt32(NSString*, int)", referenced from: -[MMKV getInt32ForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getInt64(NSString*, long long)", referenced from: -[MMKV getInt64ForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getDouble(NSString*, double)", referenced from: -[MMKV getDoubleForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getObject(NSString*, objc_class*)", referenced from: -[MMKV getObjectOfClass:forKey:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getUInt32(NSString*, unsigned int)", referenced from: -[MMKV getUInt32ForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::getUInt64(NSString*, unsigned long long)", referenced from: -[MMKV getUInt64ForKey:defaultValue:] in libMMKV_objc.a(libMMKV.o) "mmkv::MMKV::totalSize()", referenced from: -[MMKV totalSize] in libMMKV_objc.a(libMMKV.o) "openssl::MD5(unsigned char const*, unsigned long, unsigned char*)", referenced from: md5(NSString*) in libMMKV_objc.a(libMMKV.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Error in child process '/usr/bin/xcrun'. 1
这个问题我也遇到了... 巧不巧.....哈,老哥 这个问题你最后解决了吗?
@Jacky-LinPeng 没解决, 放弃了
@Jacky-LinPeng 没解决, 放弃了
我觉得是MMKV那个podspec有点问题... 用PodToBUILD引用MMKV也是有问题...
我改成用:MMKV.framework 就可以了
pod 'MMKV'
BUILD.bazel
``` load("@build_bazel_rules_ios//rules:framework.bzl", "apple_framework") apple_framework( name = "MMKV", srcs = glob([ "iOS/MMKV/MMKV/**/*.h", "iOS/MMKV/MMKV/**/*.hh", "iOS/MMKV/MMKV/**/*.m", "iOS/MMKV/MMKV/**/*.mm", "iOS/MMKV/MMKV/**/*.swift", "iOS/MMKV/MMKV/**/*.c", "iOS/MMKV/MMKV/**/*.cc", "iOS/MMKV/MMKV/**/*.cpp", "iOS/MMKV/MMKV/*.h", "iOS/MMKV/MMKV/*.mm", "iOS/MMKV/MMKV/*.hpp", ]), platforms = {"ios": "8.0"}, public_headers = [ "iOS/MMKV/MMKV/MMKV.h", "iOS/MMKV/MMKV/MMKVHandler.h", ], sdk_dylibs = [ "c++", "z", ], sdk_frameworks = ["CoreFoundation"], visibility = ["//visibility:public"], xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD": "gnu++17", "CLANG_CXX_LIBRARY": "libc++", "CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF": "NO", }, deps = ["//Pods/MMKVCore"], ) ```output
``` Undefined symbols for architecture x86_64: "_MMKVLogWithLevel(mmkv::MMKVLogLevel, char const*, char const*, int, char const*, ...)", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) +[MMKV initializeMMKV:logLevel:] in libMMKV_objc.a(libMMKV.o) +[MMKV initializeMMKV:groupDir:logLevel:] in libMMKV_objc.a(libMMKV.o) +[MMKV mmkvWithID:cryptKey:relativePath:mode:] in libMMKV_objc.a(libMMKV.o) -[MMKV onMemoryWarning] in libMMKV_objc.a(libMMKV.o) +[MMKV didEnterBackground] in libMMKV_objc.a(libMMKV.o) +[MMKV didBecomeActive] in libMMKV_objc.a(libMMKV.o) ... "mmkv::ThreadLock::initialize()", referenced from: +[MMKV initialize] in libMMKV_objc.a(libMMKV.o) "mmkv::ThreadLock::lock()", referenced from: mmkv::ScopedLock