我在openglES项目中使用xcode4,我已经从教程中添加了应用内购买代码:http://www.raywenderlich.com/2797/introduction-to-in-app-purchases
我添加了SystemConfiguration.framework但发生以下错误:
Ld /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest normal i386
cd /Users/Eros/Desktop/blatestDB
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator -F/Users/Eros/Desktop/blatestDB -filelist /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Intermediates/blatest.build/Debug-iphonesimulator/SLQTSOR.build/Objects-normal/i386/blatest.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AVFoundation -framework AudioToolbox -framework CoreAudio -framework CoreGraphics -framework OpenAL -lz -framework MediaPlayer -framework AVFoundation -framework GameKit -framework StoreKit -o /Users/Eros/Library/Developer/Xcode/DerivedData/blatest-acmdklrqungznggpjewgxuxqsvwo/Build/Products/Debug-iphonesimulator/blatest.app/blatest
Undefined symbols for architecture i386:
"_SCNetworkReachabilitySetCallback", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
-[Reachability startNotifier] in Reachability.o
"_SCNetworkReachabilityUnscheduleFromRunLoop", …Run Code Online (Sandbox Code Playgroud) 我需要弱化一些框架与我的目标.
但我找不到怎么做......
如果我尝试在3.2模拟器上运行我的项目,我会收到以下错误:
dyld: Library not loaded: /System/Library/Frameworks/iAd.framework/iAd
Reason : Image not found
Run Code Online (Sandbox Code Playgroud)
谢谢 !
直到iOS7,由于安全问题,Apple不支持动态链接.开发人员之间的代码重用通常依赖于静态库,静态库是作为应用程序可执行文件的一部分构建的.
在iOS8中引入扩展似乎改变了一点,因为扩展是单独的可执行文件.在扩展及其包含应用程序之间共享代码是通过框架完成的.Apple在他们的发行说明中这样说:
适用于iOS的框架.iOS开发人员现在可以创建动态框架.框架是一组代码和资源,用于封装在多个项目中有价值的功能.框架与扩展完美配合,共享主应用程序和捆绑扩展可以使用的逻辑.
重点是我的.
资料来源:https://developer.apple.com/library/content/documentation/Xcode/Conceptual/WhatsNewXcode-Archive/Articles/xcode_6_0.html#//apple_ref/doc/uid/TP40014509-SW14
此外,在扩展开发指南中,他们解释了您可以通过"嵌入式框架"在扩展和包含应用之间共享代码.
资料来源:https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1
我的问题是 - 什么是嵌入式框架,它与动态框架有什么不同,我们真的会在iOS8中看到正确的动态链接吗?我读过的所有文档似乎都含糊不清.
XCode构建设置中有三种不同的搜索路径:
任何人都可以澄清这些路径做什么以及它们用于什么?
我想在我的应用程序(Voip应用程序)中实现PushKit服务,但我有以下疑问:我看到我只能生成生产voip证书,如果我尝试在开发设备上测试voip推送通知服务,它是否有效?
这是我的实施测试:
使用这3行代码,我可以在didUpdatePushCredentials回调中获取push令牌,用于保存到我的服务器中.
PKPushRegistry *pushRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
pushRegistry.delegate = self;
pushRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
Run Code Online (Sandbox Code Playgroud)
服务器端我生成一个只有警报文本的"正常"有效负载推送通知,然后我发送到存储在我服务器中的voip令牌.
我使用带有调试日志的回调,但它们永远不会被调用!
- (void)pushRegistry:(PKPushRegistry *)registry didInvalidatePushTokenForType:(NSString *)type {
NSLog(@"didInvalidatePushTokenForType");
}
-(void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(NSString *)type {
NSLog(@"didReceiveIncomingPushWithPayload: %@", payload.description);
}
-(void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type {
if([credentials.token length] == 0) {
NSLog(@"voip token NULL");
return;
}
NSLog(@"didUpdatePushCredentials: %@ - Type: %@", credentials.token, type);
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试从我的服务器生成推送通知消息,以便先前上传的voip设备令牌,我从未通知didReceiveIncomingPushWithPayload回调,但是从服务器我得到200 ok消息(消息已成功发送)
CocoaPods问题:
我已经创建了一个与内部静态库捆绑在一起的框架,具体取决于AFNetworking和资源包(基于这两个教程来创建FWKs http://www.blackjaguarstudios.com/blog/programming/2012/11/22/xcode- 45-creating-ios-framework-and-hold-my-hand-im-3-years-old和https://github.com/bclubb/iOS-Framework)
我想创建一个podspec,以便人们只需在他们的Podfile中添加一行,如果需要,可以在pod安装时添加我的框架和AFNetworking.
这可能吗?
我有一个分享扩展的应用程序.我的应用程序取决于CocoaLumberjack/Default,我的共享扩展依赖于CocoaLumberjack/Core.当我构建时use_frameworks!,我收到以下错误:
$ rm -rf Pods Podfile.lock; pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing CocoaLumberjack (2.0.3)
Generating Pods project
Run Code Online (Sandbox Code Playgroud)
2015-10-28 10:46:04.015 ruby [53095:3440989]警告:"CocoaLumberjack.framework"的文件引用是多个组的成员("Products"和"Products"); 这表明项目格式错误.只保留其中一个组的成员资格(但目标成员资格不受影响).如果要在多个组中引用同一文件,请在同一路径中添加另一个引用.
Integrating client project
Sending stats
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 1 total
pod installed.
[!] [Xcodeproj] Generated duplicate UUIDs:
Run Code Online (Sandbox Code Playgroud)
PBXFileReference - /mainGroup/children/children:displayName:CocoaLumberjack.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:CocoaLumberjack.framework,path:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:CocoaLumberjack .framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:CocoaLumberjack.framework,道:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyProject.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:Pods_MyProject.framework,道:Pods_MyProject.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyShare.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:Pods_MyShare.framework,道:Pods_MyShare .framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:产品,赛:PBXGroup,名称:产品,sourceTree:,/产品/儿童/显示名:CocoaLumberjack.framework,explicitFileType:wrapper.frame 工作,includeInIndex:0,赛:PBXFileReference,名称:CocoaLumberjack.framework,道:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,/产品/ CocoaLumberjack.framework
这是我的Podfile:
workspace 'MyWorkspace'
xcodeproj 'MyProject/MyProject.xcodeproj'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git' …Run Code Online (Sandbox Code Playgroud) 我将swift框架导入Objective-c项目,如下所示:
@import MyFramework;
Run Code Online (Sandbox Code Playgroud)
问题是只有一些类被我导入框架的类识别.
被认可的班级:
public class RecognizedClass:UIViewController, WKNavigationDelegate, WKScriptMessageHandle
{ ... }
Run Code Online (Sandbox Code Playgroud)
这个课不是:
public class VeediUtils
{ ... }
Run Code Online (Sandbox Code Playgroud)
它们都是公共的,为什么第一个在工作区被识别而另一个没有?
另外我在头文件MyFramework-Swift.h中看到一个类
@interface RecognizedClass : UIViewController <WKNavigationDelegate, WKScriptMessageHandler>
Run Code Online (Sandbox Code Playgroud)
出现而另一个不
这是为什么?
还指出,当我将swift框架导入swift项目时,同样的过程也能正常工作
我正在开发一个用Swift编写的iOS项目,我想从常规的"app"项目中取出一些类,然后将它捆绑到一个可重用的Swift框架中(也许可以在Github和Cocoapods上公开发布) ).
我遇到了问题,因为框架看起来似乎不能有Objective-C桥接头,但为了编译我的框架代码,我需要引用几个Objective-C类(在这种情况下:Google Maps iOS SDK).
我还在我的框架项目中添加了GoogleMaps.framework作为链接库,但是,如何从Swift代码"导入"它?
使用当前工具和Swift版本甚至可以实现这一点,我该如何处理?
谢谢.
ios-frameworks ×10
ios ×7
objective-c ×5
xcode ×3
cocoapods ×2
frameworks ×2
ios8 ×2
swift ×2
bitcode ×1
weak-linking ×1
xcode7 ×1