解决一下几个问题:
1.生成device和simulator通用的.a文件
2.debug版应用程序调用debug版.a,release版应用程序调用release版.a
由于iOS生成的库的属性比较多,因此开发人员需要对静态库进行必要的管理。我只是提供了一种我认为比较不错的办法,可以相对提高一些效率,如果读者有更好的办法,望读者不吝赐教,哈哈!
1.假设生成的库的名称是libTest.a
2.添加一个Run Script,如图所示
3.在Shell中添加以下命令,用于生成device和simulator通用的.a文件。
lipo -create "Build/Products/Release-iphonesimulator/${EXECUTABLE_NAME}" "Build/Products/Release-iphoneos/${EXECUTABLE_NAME}" -output "Build/Products/merge-Release/${EXECUTABLE_NAME}"
lipo -create "Build/Products/Debug-iphonesimulator/${EXECUTABLE_NAME}" "Build/Products/Debug-iphoneos/${EXECUTABLE_NAME}" -output "Build/Products/merge-Debug/${EXECUTABLE_NAME}"
另外,在和Release-iphoneos同级的目录下创建两个文件夹:merge-Debug和merge-Release,分别用于保存合成后的debug版的通用文件和release版的通用文件。其中${EXECUTABLE_NAME}就是生成的目标文件的名称,即libTest.a。
4.把merge-Debug或merge-Release中的任意一个文件夹中的libTest.a拖入要使用的工程中。注意两点:a.不勾选拷贝libTest.a的选项,这样如果libTest有变化只要重新编译即可。如果选择拷贝的话,每次编译完之后还需要把生成的libTest.a重新拖入要使用的工程,比较麻烦;b.工程中的libTest.a文件只是一个名称而已,即使文件不存在也是没有关系的(如果有第5步存在)
5.在Library Search Path中添加merge-Debug和merge-Release的路径