我正在开发一个用Swift编写的iOS项目,我想从常规的"app"项目中取出一些类,然后将它捆绑到一个可重用的Swift框架中(也许可以在Github和Cocoapods上公开发布) ).
我遇到了问题,因为框架看起来似乎不能有Objective-C桥接头,但为了编译我的框架代码,我需要引用几个Objective-C类(在这种情况下:Google Maps iOS SDK).
我还在我的框架项目中添加了GoogleMaps.framework作为链接库,但是,如何从Swift代码"导入"它?
使用当前工具和Swift版本甚至可以实现这一点,我该如何处理?
谢谢.
我正在使用iOS8动态框架,我自己构建并在我的iOS应用程序中链接.它在模拟器和设备上工作正常,但在尝试为其存档Release版本时,我不断收到此错误:
代码签名错误:找不到匹配的配置文件:没有任何有效的配置文件允许指定的权利:com.apple.developer.ubiquity-kvstore-identifier,keychain-access-groups,com.apple.developer.icloud-container-identifiers ,com.apple.developer.icloud-services,com.apple.security.application-groups,com.apple.developer.ubiquity-container-identifiers.CodeSign错误:SDK'iOS 8.3'中的产品类型'Framework'需要代码签名
在应用程序目标 - >构建阶段 - >嵌入框架 - >框架链接在那里,并选中"复制代码签名"复选框.
在框架目标 - >构建设置 - >我已将Provisioning Profile设置为"Automatic",对于Code Sign Identity,在Release下,我正在使用"iOS Distribution"
我有3个不同的应用程序目标,需要构建此框架.
我糊涂了:
框架是否需要在开发人员中心注册自己的AppID?
框架是否需要它自己的配置文件?
框架可以使用iOS应用目标中的相同Entitlements文件吗?
谢谢.
我在Xcode 4上安装关于iOS应用程序的quartzcore很麻烦.我只是找不到答案:怎么办?因为当我尝试将Quartzcore添加到项目的目标时,似乎我只能添加一个Mac OS X框架.关于iOS框架所能做的就是创建一个.
我想创建一些使用@IBDesignable
和@IBInspectable
标签的自定义视图.我已将这些添加到我的框架中,然后将我的框架链接到我的测试应用程序.但是Designables从未出现在StoryBoard中.
如何使用@IBDesignable
和@IBInspectable
从外部框架创建自定义视图?
您可以使用@IBDesignable
,并@IBInspectable
在从非嵌入式框架的应用程序?
谢谢.
我正在探索使用react-native创建一个iOS框架(android库)的可能性,该框架可以分发,并且可以通过包含构建应用程序时与应用程序集成.
例如,维护单个代码库为ios创建一个".framework",或者为android(基本上编译代码而不是反应组件代码)创建.jar作为开发人员社区的分发.
我以前能够毫无问题地提交我的申请.我工作流程中唯一改变的部分是使用Sourcetree.在将更新提取到以下框架后,我在提交到iOS App Store时收到此警告.我还收到一封电子邮件,其中包含:
非PIE二进制 - 可执行文件'Payload/myapp.app/Frameworks/Alamofire.framework'不是位置独立可执行文件.请确保您的构建设置已配置为创建PIE可执行文件.有关更多信息,请参阅技术问答QA1788 - 构建独立位置的可执行文件
非PIE二进制 - 可执行文件'Alamofire.framework'不是位置独立可执行文件.请确保您的构建设置已配置为创建PIE可执行文件.有关更多信息,请参阅技术问答QA1788 - 构建独立位置的可执行文件
等等...
有问题的框架是:
我已经阅读了Apple Technical QA文章,手动设置这些框架的所有部署目标和我自己的项目无济于事.有没有人见过这个问题,能够解决它?
更新:
我可以确认这些警告不会影响提交审批流程.我提交了我的应用程序以供公开发布,尽管有警告,它仍然获得批准.现在我只是对Apple的结局以及对框架开发人员意味着什么感到好奇.
我有一个iOS应用程序,包括一个应用程序,一堆我的自定义框架,以及一堆第三方framweorks:
App
MyFramework1
MyFramework2
AFNetworking.framework
Mantle.framework
..
Run Code Online (Sandbox Code Playgroud)
我得到错误"在框架模块中包含非模块化头",具有以下结构:
App/AppDelegate.m
#import <MyFramework2/MyFramework2.h>
MyFramework2/MyFramework2.h
#import "MyClass.h"
MyClass.h
#import <Mantle/Mantle.h> <-- Error happens here
Run Code Online (Sandbox Code Playgroud)
MyFramework2建立本身.
尝试构建应用程序失败,并在导入Mantle.h的行中出现 " 在框架模块中包含非模块化头文件" 错误.
如果我在.m
文件中导入Mantle.h,这个问题就消失了,但我不能这样做,因为我的类继承自MTLModel
Mantle中定义的.
此问题已在此处解决,但它不是特定于Swift的.
建议有(1)确保所有自定义框架标题都是公共的.他们是.(2)转到"目标"下的"构建设置",并设置"允许框架模块中的非模块化包含" YES
.
有谁知道为什么会这样,以及如何解决它?将"允许非模块化包含在框架模块中"设置为"YES"是否为良好做法?为什么这是一个错误?
谢谢.
我正在构建一个iOS静态库(根据https://github.com/jverkoey/iOS-Framework).我依靠SBJson和AFNetworking.我想包括这些库,以避免版本问题和安装简单; 为此,我需要为这些库添加前缀以避免命名冲突.
如何以简单的方式为其他静态库添加前缀?
理想情况下,它将成为我构建过程的一部分.不太理想,但可接受的是关于如何以理智的方式重构和重命名的提示.
我最近不得不复制我自己的框架,以便能够从本地watchOS 2扩展链接它们,因为平台是不同的.因此,对于每个框架,XI都有一个X-watchos对应物.在模拟器中以及直接构建到我的设备时,一切正常,直到我尝试归档,我才得到这个链接错误:
我运行lipo -i
了构建的watchOS框架,果然,它的拱门是arm7
而arm64
不是armv7k
.
当我进一步查看构建的目录时,我注意到了这一点:
两个版本都是同一文件的符号链接,并且因为它们具有相同的产品名称,所以它们被覆盖.我可以让他们有不同的名字,但这会让import
他们真的很麻烦.
请注意,这不是第三方框架的问题,因为Carthage
它已经在不同的目录中构建它们.
编辑08/22/2015:我已经提交了一个示例项目的雷达:http://www.openradar.me/22392501
编辑08/24/2015:这已在Xcode 7 Beta 6发行说明中作为已知问题得到承认:
编辑09/9/2015:Xcode 7.1 Beta发行说明提示这是固定的,但我还没有确认.
我有一个用Objective-C编写的现有项目.我想在该项目中使用位于Swift 的Daniel Gindi的iOS Charts库.我怎样才能做到这一点?
将swift框架导入到objective-c项目中是相关的,但在我的情况下,我通过Cocoapods 按照此处的说明安装它.
在那个问题中,他至少能够导入标题,但在我的情况下,我无法.
第1步:创建Objective-C单视图项目.
第2步:创建Podfile并添加以下行 -
use_frameworks!
pod 'Charts'
Run Code Online (Sandbox Code Playgroud)
第3步:安装pod
步骤4:尝试在ViewController.h中导入图表,@import Charts
但此时会出错.错误是 - Module Charts not found
ios-frameworks ×10
ios ×7
xcode ×5
swift ×3
objective-c ×2
android ×1
app-store ×1
clang ×1
codesign ×1
frameworks ×1
ibdesignable ×1
ios-charts ×1
ios-library ×1
quartz-core ×1
react-native ×1
storyboard ×1
watchos ×1
watchos-2 ×1
xcode6 ×1
xcode7 ×1