需要明确的框架概念

时间:2016-02-04 12:40:16

标签: ios objective-c frameworks

附加代码:http://speedy.sh/xTEp8/XYZFrameworkDemo.zip

我创建了一个框架名称ABCFramework.framework,其中包含我的Constant.h文件,其中我将MACRO用于我的代码中。 对于Ex:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
   <Worksheet ss:Name="test">
     <Table>
       <Row>
         <Cell>
           <Data ss:Type="String">First</Data>
         </Cell>
       </Row>
     </Table>
   </Worksheet>
 </Workbook>

不是我有以下问题。

1) 请解释我如何分发我的ABCFramework.framework,以便它可以在simmulater和Iphone设备中使用,因为直到现在我必须单独使用我想要使用它的示例代码。

2) 如果开发人员在他的代码中导入我的ABCFramework.framework并且他想用自己的WEBURL更改Constant.h WEBURL怎么做?

#define     WEBURL @"www.google.com/api"

添加聚合目标并运行脚本

#define     WEBURL @"www.google.com/api" //SDK URL

#define     WEBURL @"www.yahoo.com/api" //USER URL TO BE ADD?

我收到此错误/

xcodebuild -target ABCFramework -sdk Debug-iphonesimulator
xcodebuild -target ABCFramework -sdk Debug-iphoneos
rm -rf "$SRCROOT/products" mkdir -p "$SRCROOT/products/ABCFramework"
lipo -create "$SOURCE_ROOT/build/Release-iphonesimulator/ABCFramework" "$SOURCE_ROOT/build/Release-iphoneos/ABCFramework" -o "$SOURCE_ROOT/products/ABCFramework/ABCFramework"
cp -r "$SOURCE_ROOT/build/Release-iphoneos/include/ABCFramework" "$SOURCE_ROOT/products/ABCFramework/include"

注意:我创建ABCFramework的项目是XYZFrameworkDemo

1 个答案:

答案 0 :(得分:2)

1)要创建一个适用于模拟器和设备的通用框架,您必须单独构建它们,然后使用lipo命令合并它们。您可以通过创建聚合目标并在模拟器中构建一次代码并在设备上构建一次来完成此操作。您将Run脚本阶段添加到聚合目标以构建模拟器和设备版本,这些版本将进入各自的文件夹,然后使用lipo命令合并它们。

xcodebuild -target ABCFramework -sdk iphonesimulator
xcodebuild -target ABCFramework -sdk iphoneos
rm -rf "$SRCROOT/products"
mkdir -p "$SRCROOT/products/ABCFramework"
lipo -create "$SOURCE_ROOT/build/Release-iphonesimulator/ABCFramework" "$SOURCE_ROOT/build/Release-iphoneos/ABCFramework" -o "$SOURCE_ROOT/products/ABCFramework/ABCFramework"
cp -r "$SOURCE_ROOT/build/Release-iphoneos/include/ABCFramework" "$SOURCE_ROOT/products/ABCFramework/include"

2)构建后,您无法在框架中更改宏。您必须提供api或导出变量才能从集成框架的应用程序中设置此属性。