- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想包括 .a
插件 iOS 端的文件。下面是我的文件结构。
现在,当我尝试通过 vendored_libraries
添加 .a 文件时在 podspec
, pod install 成功完成。当我编译代码时,我得到 Library Not Found -lAccuraFace
我尝试在 Pod 目标的构建阶段的 Link Binary With Libraries 部分添加 .a 文件。还是一样,我如何定义 podspec 以自动包含和链接 .a 文件。
这是我的插件 podspec 文件
Pod::Spec.new do |s|
s.name = 'accuraemirates'
s.version = '0.0.1'
s.summary = 'A new Flutter plugin.'
s.description = <<-DESC
A new Flutter plugin.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.public_header_files = 'Classes/*{.h}'
s.private_header_files = 'Classes/CodeScan/**/*{.h,.cpp,.a}'
s.platform = :ios, '8.0'
s.preserve_paths = 'opencv2.framework'
s.xcconfig = {
'OTHER_LDFLAGS' => '-framework opencv2 -lAccuraFace',
}
s.ios.vendored_frameworks = 'opencv2.framework', "CoreVideo.framework", "Foundation.framework", "CoreGrpahics.framework",
"Accelerate.framework", "CoreMedia.framework", "CoreImage.framework", "QuartzCore.framework", "AudioToolbox.framework", "CoreData.framework", "SystemConfiguration.framework"
s.ios.vendored_libraries = 'Classes/Framework/*{.a}', "libz.1.dylib", "c++", "stdc++"
# Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
s.swift_version = '5.0'
end
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) do |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
end
generated_key_values
end
target 'Runner' do
use_frameworks!
use_modular_headers!
# Flutter Pod
copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end
# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'
# Plugin Pods
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
.a
来自
podspec
的图书馆flutter 插件上的文件。
最佳答案
终于找到问题了。。
Pod::Spec.new do |s|
# other obvious values
s.source_files = 'Classes//*{.h,.a,.swift,.mm,.m,.hpp}'
s.resources = 'Resources//'
s.static_framework = true
s.public_header_files = "Classes/VideoCamera/VideoCameraWrapperDelegate.h", "Classes/VideoCamera/VideoCameraWrapper.h",'Classes/.h',
s.private_header_files = 'Classes/CodeScan//{.h,.cpp,.hpp}'
s.platform = :ios, '8.0'
s.preserve_paths = 'opencv2.framework', 'Classes/Framework/.a'
s.xcconfig = {
# here on LDFLAG, I had to set -l and then the library name (without lib prefix although the file name has it).
'OTHER_LDFLAGS' => '-framework opencv2 -lc++ -lAccuraFace -lAccuraEmirate -lDocRecog -lz',
'USER_HEADER_SEARCH_PATHS' => '"${PROJECT_DIR}/.."/',
"LIBRARY_SEARCH_PATHS" => '"${PROJECT_DIR}/.."/*',
}
s.vendored_frameworks = 'opencv2.framework' # Various framworks you need
# Here the name of the library can include lib as the file name has it too.
s.vendored_libraries = 'AccuraFace','libAccuraEmirate','libDocRecog'
end
OTHER_LDFLAGS
和
vendored_libraries
.尽管我有相同的文件,但它们需要带或不带 lib 前缀的名称。奇怪但有效。
关于flutter - 如何通过 podspec 在 flutter 插件上添加 .a 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62144692/
所以我在 swift (xcode 7) 中有一个项目,它有一堆框架目标,我想要一个 podspec 作为子规范,包括所有这些框架。 当我创建一个 podspec 并将一堆子规范添加到示例项目时,示例
我一直在关注this guide在我的 CocoaPods 上获得一个项目。我目前在测试 部分并收到错误: [!] No podspec found for `AppUpdateTracker` in
我有一个由 CI 系统自动构建的开源库,并由 CI 本身自动部署在主干/ cocoa pod 中。 我想减少库版本中人为错误的可能性。 目前,当新版本准备好时,我必须进入 podspec 并手动修改
Google Analytics for iOS 3.09 的 podspec 文件来自此处: https://github.com/CocoaPods/Specs/blob/master/Specs
我正在尝试研究如何将头文件添加到特定的 Podspec。我目前必须手动将文件拖到 Xcode 中的 Pod 组中才能构建它。否则它会提示找不到头文件。我想把这一步从构建过程中去掉。我仍在学习在 Coc
我正在编写我的第一个 pod 规范,虽然我已经设法编写了一个通过验证的规范并且 pod install 似乎安装了 pod 好的实际源文件在我的工作区中无处可寻。这是我的播客文件: platform
我有这样的结构 target_files/ ├──target1/ ├──target2/ └──target3/ 例如,我只想包含“target2”并排除其他目标。我如何编写 spec.exclud
我正在尝试创建私有(private) pod。 我做了什么: * 在正确的分支创建并推送 repo * 创建podspec 现在我正在努力进行 podspec 验证。 BKit.podspec Pod
我有一个 Xcode 项目 (foo),它使用一些重要的构建前/后构建步骤构建静态库 (libfoo.a)。传统上,当我在另一个项目中使用这个库时,我将 foo.xcodeproj 添加为我的主项目中
我正尝试在 this tutorial 之后创建一个 cocoa pod .我在执行以下命令时卡住了: pod repo push RWPodSpecs RWPickFlavor.podspec 问题
我正在尝试为以下项目创建 Podspec:https://github.com/sincerely/shiplib-ios-framework Pod Lint 通过并正在将文件添加到项目中,但它不会
我的 podspec 需要一个静态库 (OpenSSL)。为方便起见,我将库与 pod 一起运送。 静态库包含: 二进制文件:MyPod/openssl/bin/libcrypto.a 和 MyPod
我正在构建一个 cocoapod 并想为 Alamofire 添加依赖项,因为我的 pod 将发出一些请求。 在尝试将我的 cocoapod(具有 Alamofire 依赖项)集成到我们的主应用程序后
如何在 podspec 中指定依赖项的本地路径? 像:s.dependency 'MyLibrary', :path => '../MyLibrary' 谢谢 最佳答案 您应该使用 :path您的 P
我的应用程序使用本地框架/Library/Frameworks/iTunesLibrary.framework。 然后我收到这些错误消息: - ERROR | [xcodebuild] someFi
我的 podspec 文件看起来像: Pod::Spec.new do |s| s.name = "MyLib" s.version = "5.0.0" ...
我有一些非常相似的应用程序。因此,我想创建一个或一些包含所有常见可重用代码的私有(private) Pod。我的第一个版本包含一些使用 AFNetworking 的网络功能,还使用 Keychai
我有一个库的公共(public)分支,该库已存在于 CocoaPods/Specs 中。在 Podfile 中,我可以通过执行以下操作来引用此 fork pod: pod 'CoolLibrary',
环境:vagrant + virtualbox Kubernetes:1.14 docker 18.06.3~ce~3-0~debian 操作系统:debian 拉伸(stretch) 我有优先类(c
我现在正在使用 cocoapods,我想在我的项目中添加本地 pod 依赖项,例如: s.dependency = 'my pod', :path => '' 但我认为不可能,有什么想法吗? 最佳答案
我是一名优秀的程序员,十分优秀!