标签: ios-frameworks

Xcode 4:框架本地化不起作用

我正在使用Xcode 4开发自己的框架,我在两个示例应用程序(一个控制台和Mac OS X Cocoa应用程序)中使用它.

我正在尝试向框架添加本地化,​​所以我创建了两个版本的Localizable.strings文件(en和fr版本),但每次我尝试从示例应用程序打印本地化字符串时,我只会获得其技术名称.例如,在框架代码中包含以下行:

NSLog(NSLocalizedString(@"LOC_TEST", nil));
Run Code Online (Sandbox Code Playgroud)

我只"LOC_TEST"在输出中显示...

然而,本地化与Cocoa应用程序本身一起工作正常(意味着Cocoa应用程序的本地化字符串被正确显示).

本文之后,我尝试在框架的plist文件中添加本地化:

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>fr</string>
</array>
Run Code Online (Sandbox Code Playgroud)

但它没有改变任何东西......

我错过了什么?

xcode frameworks localization xcode4 ios-frameworks

7
推荐指数
2
解决办法
3306
查看次数

轻松检测我是否使用旧版iOS不可用的框架

在马拉松编码会话之后,我添加了太多代码而没有跟踪所有内容,我现在有一个应用程序,可能有一些iOS 5.0和5.1特定的枚举,调用和框架,但是,我希望我的应用程序支持iOS回到4.3 .

我希望有一种简单的方法可以将Xcode设置为编译,就好像它正在编译iOS 4.3一样,这样我就会得到所有需要调整的违规代码的错误,和/或者可选择编码的iOS版.

我以为我会通过使用编译器选项得到它:

-D__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_3
Run Code Online (Sandbox Code Playgroud)

但最终会在系统头文件中产生错误,而不是我的代码.

鉴于大多数枚举和框架都将其可用性包含在头文件中,我不得不认为有一种简单的方法可以满足我的需求.

有没有人设法做这样的事情,而不是使用旧的SDK下载旧的Xcodes?在那里,我可能会遇到在Lion下无法正常运行的Xcodes问题(这就是我正在运行的).

更新:好像我无法在Lion上安装Xcode 3.2.6.我现在必须找到Snow Leopard Mac,除非我找到使用编译器选项或强制Xcode使用旧SDK的方法......

以下是@ mattjgalloway的答案为我做的一个示例:

Lumin App Group

/Users/mz/Dev/Working/Lumin/Lumin/MyUIScreen.m

  • "亮度"已被弃用:太新了!
  • "亮度"已被弃用:太新了!
  • "亮度"已被弃用:太新了!
  • "亮度"已被弃用:太新了!

/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController+Share.m

  • 'TWTweetComposeViewController'已被弃用:太新了!
  • 'TWTweetComposeViewController'已被弃用:太新了!
  • 'TWTweetComposeViewController'已被弃用:太新了!

/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController.m

  • 'scrollView'已被弃用:太新了!
  • 'connectionWithMediaType:'已弃用:太新了!
  • 'connectionWithMediaType:'已弃用:太新了!
  • 'AVCaptureDeviceSubjectAreaDidChangeNotification'已被弃用:太新了!
  • 'setSubjectAreaChangeMonitoringEnabled:'已被弃用:太新了!

非常好.

我将以下内容放在项目的.pch文件中,并计划对所有项目执行此操作:

#if DEBUG
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#import "MJGAvailability.h"
#endif
Run Code Online (Sandbox Code Playgroud)

对于任何项目,我现在都会根据我目标最早的iOS自动查看SDK问题.虽然仍然可能有SDK更改,但我至少知道大多数旧版iOS发布的框架添加内容.

xcode ios ios-frameworks

7
推荐指数
1
解决办法
2081
查看次数

UICollectionView,来自注册为单元格的框架目标的nib在运行时失败

我有一个在xib中绘制的UICollectionViewCell,并伴有swift类文件.这两个文件是我的应用程序的UI框架目标(称为SomeUI)的一部分.

在我的集合视图的视图控制器中(在app目标中),我将nib注册为集合视图单元格.我的视图控制器代码如下;

import UIKit
import SomeUI

let reuseIdentifier = "Cell"

class ACollectionViewController: UICollectionViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.collectionView.registerNib(UINib(nibName: "JamesTheCollectionViewCell", bundle: NSBundle(identifier: "SomeUI")), forCellWithReuseIdentifier: reuseIdentifier)
    }

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
        return 1
    }

    override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

    override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as JamesTheCollectionViewCell
        cell.titleLabel.text = "yippee"
        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

在nib中,单元格视图已正确设置其自定义类; JamesTheCollectionViewCell在模块SomeUI中.

xcode中的单元xib的screengrab

虽然Xcode似乎对这个设置很满意,但是在运行时我得到一个错误,因为找不到JamesTheCollectionView.swift中定义的类.

Interface Builder文件中的未知类_TtC19collectionViewThing26JamesTheCollectionViewCell. …

xcode ios ios-frameworks uicollectionview swift

7
推荐指数
1
解决办法
1869
查看次数

如何为支持iOS 7+的swift项目创建框架?

我需要为我们计划在组织中的多个iOS项目中使用的共享公共实用程序集创建一个框架.实用程序类是用swift编写的,框架需要支持iOS 7及更高版本的项目.我正在使用Xcode 6.1.1.

我尝试创建一个'Cocoa Touch Framework'和'Cocoa Touch Static Library',似乎无法让它适用于iOS 7版本.

使用'Cocoa Touch Framework',我收到一条警告,'嵌入式dylibs /框架仅在iOS 8或更高版本上运行',虽然我可以让它运行,但在iTunesconnect步骤中它失败了,错误是项目的部署目标不能小于8.0(我的是7.0).

我尝试使用'Cocoa Touch Static Library'并使用http://www.raywenderlich.com/65964/create-a-framework-for-ios中给出的步骤,但它只是不使用swift文件构建.当我删除所有swift文件并添加Obj-C文件时,它可以正常工作.

任何帮助是极大的赞赏.如何为支持iOS 7+的swift项目创建框架?

谢谢

ios-frameworks swift

7
推荐指数
2
解决办法
2315
查看次数

npm发布模块包括iOS框架.当npm安装该模块时,iOS框架已损坏

这是最奇怪的问题,只发生在npm模块中的一个iOS框架上(我注意到).

当点击框架(在npm发布之前)时,我看到:

frameworkname.framework
|
- Headers (dir)
- frameworkname
- Versions (dir)
    |
    -A (dir)
    -Current (dir)
Run Code Online (Sandbox Code Playgroud)

我将此模块发布到私有npm服务器.当我安装npm模块时,框架已损坏.我知道了:

frameworkname.framework
|
- Headers (dir) MISSING
- frameworkname MISSING
- Versions (dir)
    |
    -A (dir)
    -Current (dir) MISSING
Run Code Online (Sandbox Code Playgroud)

阅读http://www.raywenderlich.com/65964/create-a-framework-for-ios后,看起来丢失的文件是符号链接.有没有其他人见过这种行为?如何防止符号链接在npm过程中丢失?

frameworks ios npm ios-frameworks

7
推荐指数
1
解决办法
123
查看次数

如何将包含pod的框架添加到另一个项目中

我正面临一个问题,并搜索了很多但没有找到任何解决方案.

我创建了一个使用MQTTKitSwift框架,"我使用它添加到我的框架中CocoaPods.

现在我创建了一个将使用上述框架的示例应用程序.

然后我创建了一个工作区,并将xcodeproj文件framework以及示例应用程序添加到工作区.

但现在我无法framework在我的示例应用程序中使用它.

我收到错误没有这样的模块MQTTKit在我的内部framework.

但是framework如果build它分开的话没有错误吗?

这个pods或其他东西有什么问题吗?

ios mqtt ios-frameworks swift

7
推荐指数
1
解决办法
5018
查看次数

iOS9:在Simulator和Device中使用动态框架

我创建了一个动态可可框架,我希望在我的应用程序中使用它.

在为实际设备构建框架之后,我将其带到了应用程序.我只能在该设备上运行该应用程序.

当我尝试在模拟器上运行它时,框架文件无法识别.我收到错误消息: 'ViewController' is unavailable: cannot find swift for declaration for this class

我尝试构建iPhone 6模拟器的框架并在iPhone 6模拟器上运行应用程序,但同样的问题仍然存在.

如何创建/构建一个我可以带入任何应用程序并能够在模拟器和设备上使用它的框架?

ios-frameworks swift ios9 swift2

7
推荐指数
1
解决办法
3831
查看次数

在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败

TL;博士

将嵌入式框架与其他框架链接,并且required code signature missing在设备上构建和运行时不要将其他框架与您的应用程序相关联.

描述:

建立:

我的设置非常简单(Swift 2.3和Xcode Xcode 8.0; Build版本8S162m):

  • 使用Carthage(0.17.2)我用8.0和更高版本构建了Other.frameworkxcodebuildTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS
  • MyApp嵌入了My.framework.
  • 应用程序和框架项目位于一个Xcode工作区下.
  • 只是Other.framework链接到My.framework(这意味着,MyApp根本没有链接到Other.framework).这里的要点是,MyApp不需要使用Other.framework API.

问题:

一切似乎工作正常,直到我在设备上构建和运行应用程序.该应用程序已启动,并且该过程因以下Xcode错误而中止:

dyld: Library not loaded: @rpath/Other.framework/Other  
  Referenced from: /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/My  
  Reason: no suitable image found.  Did find:  
  /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other: required code signature missing for '/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other'  
Run Code Online (Sandbox Code Playgroud)

我检查了Other.framework的签名,看起来对我来说很好.此外,

解决方案(解决方法)

MyAppOther.framework链接.可怕......这感觉很糟糕.

将完全相同的二进制 …

xcode xcodebuild ios ios-frameworks swift2

7
推荐指数
1
解决办法
2204
查看次数

无法生成(在归档时)位码束,因为静态框架(.framework)是在没有完整位码的情况下构建的

我们正在尝试在我们的静态框架中完全启用Bitcode,但是在将应用程序与框架集成时,尽管我们能够在模拟器或设备上构建它,但是在归档应用程序时收到以下错误。

ld: bitcode bundle could not be generated because '.framework/p-iOS(PTFWOperationPrepareTransaction.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '.framework/p-iOS' for architecture armv7
Run Code Online (Sandbox Code Playgroud)

我们已经验证了位码状态,otool -l Versions/A/p-iOS | grep __bitcode并且似乎已正确启用 在此处输入图片说明

以下是我们在框架端针对比特码的项目设置, 在此处输入图片说明

以下是我们在应用程序端的位项目设置, 在此处输入图片说明

谦虚的要求: 请检查以上屏幕截图中的设置,因为我们已经检查了所有与SO相关的查询,因此请不要将其作为参考。 在此处输入图片说明

另外,我们已经尝试使用静态库,框架和位码来解决问题。

提前致谢。

xcode ios ios-frameworks bitcode xcode9

7
推荐指数
1
解决办法
1461
查看次数

框架是在没有完整bitcode的情况下构建的 - 已经启用了Framework bitcode

在存档我的应​​用程序时出现此错误.使用的框架是我自己的.所以我交叉检查.框架中的Bitcode已启用.不知道为什么我会遇到这个问题.这些是我的框架中的构建设置:

在此输入图像描述

我按照这个链接但没有奏效.试图在框架的项目中设置-fembed-bitcode(不是目标,而是项目,因为建议在链接中)设置.

xcode ios ios-frameworks

7
推荐指数
2
解决办法
2144
查看次数