将第三方库ZXing导入Xcode

3
我尝试过多种方法将第三方库“ZXing”导入我的iOS应用程序,但都很麻烦或者根本无法工作。如果有人能建议我到底是哪里出了问题,或者更好的导入类似ZXing这样的库的方法,我会非常感激。
一定有更简单的方法!!!
以下是我做的事情及结果:
MyGreatApp的目录结构(撰写时)
/MyGreatApp/MyGreatApp.xcworkspace (main workspace that compiles the
   application)
 /MyGreatApp/Projects/MyGreatApp/MyGreatApp.xcodeproj   
 /MyGreatApp/Projects/MyGreatApp/(All source code for MyGreatApp)   
 /MyGreatApp/Projects/other-inhouse-project/other-inhouse-project/other-inhouse-project.xcodeproj
 /MyGreatApp/Projects/other-inhouse-project/other-inhouse-project/(Source
   code for other-inhouse-project)   
 /MyGreatApp/Projects/other-inhouse-project/RestKit/RestKit.xcodeproj 
 /MyGreatApp/Projects/other-inhouse-project/RestKit/(source code for  
   restKit)

将ZXing项目添加到工作区:

从git hub下载项目:https://github.com/TheLevelUp/ZXingObjC(最新版本)

将项目复制到/Projects(在svn仓库中)。

打开MyGreatApp工作区,“添加文件” -> 选择“ZXingObjC.xcodeproj”。

将编译后的库(libZXingObjC-iOS.a)添加到MyGreatApp构建阶段,从ZXing产品拖放。添加ZXing所需的框架。

在头搜索路径和库搜索路径中添加ZXing的路径。"$(PROJECT_DIR)/../../Projects/ZXingObjC-2.2.6/ZXingObjC"。使用$(PROJECT_DIR)使路径相对,并在所有构建机器上正常工作。

更改ZXing构建设置以不使用arm64体系结构,因为我们目前由于旧的restKit库不支持它。

为了使其他配置能够构建,我找到的唯一解决方案是向ZXing项目添加具有完全相同名称的配置,即添加QA(PAT12),QA(PAT14)等等。(这不是理想的)

结果:

项目编译并正常工作,但以上步骤需要花费相当长的时间。

编译ZXing不会产生错误警告。

可以使用

将ZXing文件添加到MyGreatApp项目中(使用项目编译的文件):

从git hub下载项目:https://github.com/TheLevelUp/ZXingObjC(最新版本)

将ZXingObjC文件夹拖放到Xcode中。在单击“添加”之前,请确保选中“复制项目”。

添加ZXing所需的框架。

必须更改ZXing源代码的行以允许其编译(不确定这样做的结果是什么,此处提供一些信息:https://github.com/TheLevelUp/ZXingObjC/issues/118

@property (nonatomic, strong) /*__attribute__((NSObject))*/ dispatch_queue_t captureQueue;

结果:

项目编译并且“似乎”可以正常运行(对Hacking ZXing源代码感到有些担心)

编译时产生了大约180个错误警告。

无法使用

使用CocoaPods添加ZXing项目:

按照CocoaPods网站的说明进行安装。

尝试在与MyGreatApp.xcproject相同的目录中创建Podfile,但这导致编译器出错,“pod install”命令在与我的项目相同的文件夹中创建了一个新的xcworkspace文件(我们已经在其他地方有一个)

尝试在与MyGreatApp.xcworkspace相同的目录中创建Podfile,但这导致pod install命令无法工作

结果:

无法使用CocoaPods进行安装。

无法使用


如果您有任何帮助或建议来添加ZXing到我的项目,请告诉我,将非常感激。


根据您的手动安装:不使用arm 64是必要的吗?此外,我没有理解关于ZXing配置的最后一步,您能否再解释一下? 当我跳过这两个步骤时,尝试使用框架中的类时会出现“文件未找到”和“未知类型名称”的错误。 - BoazGarty
2个回答

2
如果您想将第三方API添加到您的项目中,请按照以下步骤进行:
  • 首先将第三方库复制到您的项目中。
  • 然后转到 TARGETS -> Build Phases -> Link Binary with Libraries
  • 单击 "+" 符号。
  • 添加其他项并从您放置它的项目中进行选择。
这是向项目中添加任何第三方API的最佳方法。
希望这可以帮助大家。

这基本上就是我在示例1中所做的(将ZXing项目添加到工作区中:),最终它确实起作用了,但我遇到了许多问题。我不得不更改头文件和库搜索路径,更改ZXing的构建架构,并添加新配置以与我的匹配,否则档案文件无法正常工作。当你这样做时,第三方库在文件系统中相对于你自己的项目在哪里? - Mike

0
长话短说,我开始使用Alcatraz(Xcode的包管理器),它有一个很好的插件叫做KFCocoaPodsPlugin。它使您能够轻松处理cocoapods,因为现在似乎您在使用cocoapods时做错了什么。它将为您设置工作区,并创建podfile模板。
我强烈建议同时使用Cocoapods + Alcatraz这两个工具。这会让生活变得更加轻松。
附言:请确保在podfile开头添加以下内容:
platform :ios, '7.0'

我强烈怀疑我的Cocoa Pods问题是因为我的工作区/项目结构没有按照它所期望的方式设置。我在一个父目录中有xcworkspace文件,在一个名为'Projects'的子目录中有所有的xcproject文件(以及源代码)(请参见目录结构)。具有多个项目的工作区在文件系统上通常如何安排? - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接