I have a standalone iOS project that currently needs to be converted into a framework. My goal is to directly integrate this native project into a KMM (Kotlin Multiplatform Mobile) setup, where the Android side has already been accomplished with build scripts. As a git submodule, the project can operate independently and also function as a component within the KMM project.
Now, I'm focusing on the iOS part. I've defined a podspec via a Gradle script and attempted to use it in an empty project through CocoaPods dependency.
Pod::Spec.new do |s| s.name = 'UoocOnlines' s.version = '1.0.0' s.summary = 'UoocOnlines' s.homepage = 'http://www.example.com' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'Uooc' => 'vicky leu' } s.source = { :path=> '.'} s.ios.deployment_target = '12.0' s.static_framework = true # 源代码 s.source_files = 'UoocOnlines/AllClassFiles/**/*.{h,m,swift}' s.public_header_files = 'UoocOnlines/AllClassFiles/**/*.h' # 排除文件 s.exclude_files = 'UoocOnlines/*.{plist}' s.preserve_paths = 'AllClassFiles/**/*.{h,m,swift}' # 图片资源 s.resource_bundles = {'UoocOnlines' => ['UoocOnlines/*.{xcassets}', 'UoocOnlines/Lottie*/**/*.{json,png}', 'UoocOnlines/*.{lproj}', 'UoocOnlines/*.{html,mp3}', 'UoocOnlines/Plv/**/Resources/*.{bundle}'] } s.requires_arc = true # 公共头文件导进组件.pch文件中 s.prefix_header_contents = <<-PCH #ifndef PCH_FILE_IMPORTED_SUCCESSFULLY #define PCH_FILE_IMPORTED_SUCCESSFULLY #endif #import "UoocOnlines-Bridging-Header.h" #import "HNHTTPRequestManager.h" #import <YYText/YYText.h> PCH # 依赖系统Frameworks s.ios.frameworks = 'Foundation', 'UIKit', 'CoreFoundation', 'CoreTelephony', 'QuartzCore', 'CoreData' # 依赖系统动态.tdb s.libraries = 'z', 'sqlite3', 'c++' s.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited)' } s.pod_target_xcconfig = {'GCC_C_LANGUAGE_STANDARD' => 'gnu99','GCC_CXX_LANGUAGE_STANDARD' => 'gnu++14' } s.swift_version = '5.0' # other links flags | bitcode s.xcconfig = { "OTHER_LDFLAGS" => "-ObjC", "ENABLE_BITCODE" => "NO"} # 依赖 s.dependency 'Masonry' s.dependency 'SVGAPlayer' s.dependency 'Protobuf'end
Upon inspecting the Build Settings of the 'UoocOnlines' target within the Pods Project in Xcode, I found:
'Precompile Prefix Header' is set to 'YES''GCC_PRECOMPILE_PREFIX_HEADER' is 'YES'Furthermore, it indicates that:
'GCC_PREFIX_HEADER' is set to '${PODS_TARGET_SRCROOT}/UoocOnlines/Supporting Files/UoocOnlines-prefix.pch'Indeed, within the 'Pods/Development Pods/UoocOnlines/Supporting Files/' directory, I find the 'UoocOnlines-prefix.pch' file which was defined via prefix_header_contents.
However, the macro 'PCH_FILE_IMPORTED_SUCCESSFULLY' that I defined in the pch file does not seem to be taking effect in other header files within this pod.
#ifdef PCH_FILE_IMPORTED_SUCCESSFULLY#error "pch import success!"#else#error "pch import failure!"#endif
xcode build alway get pch import failure!