2017-12-16 11:25:46 CC1991_ 阅读数 2562

       iOS开发过程中,有些时候需要生成打包.a静态库,然后拖入到项目中使用,尤其是有时候引入的一些C++编译过的第三方文件就会引起编译错误的提示,解决这种问题的方法很简单,就是把这些三方的文件打包生成.a静态库文件,这样就解决了OCC++混编引起的错误,这种解决问题的原理是.a静态库文件时编译好的二进制文件,二进制文件与二进制文件相互混编肯定没有什么问题。

       一般情况下,打包.a静态库的大概步骤分为七步分:生成创建静态库、实现需要使用的类、设置公开类的.h文件、编译打包模拟器静态库、编译打包真机静态库、合并模拟器和真机编译好的静态库、拖入需要使用的项目中测试静态库。那么下面就分模块讲解打包.a静态库文件的步骤了。

      一、生成创建静态库

1.打开Xcode,选择Create a new Xcode project新建项目,或者在已打开项目工程的情况下点击Xcode,使用快捷键command+shit+n创建新的项目;

2.创建新的项目时候,在选择类型的里面,选择iOS-->Framework&Library-->Coaoa Touch Static Library,然后点击Next即可。





      二、实现需要使用的类

1.创建静态库之后,把你想要打包成静态库的类文件都拖入到这个项目工程里面,然后把创建项目自动生成的那个类如果没有需要就把它直接删除即可;

2.如果拖入整个文件夹进去,文件夹里面的所有类文件都要放在处于一级目录下面,尽量还是不要直接拖入文件夹,一般全选所有的类文件拖入即可。


      三、设置公开类的.h文件

1.公开类的.h文件就需要添加Headers这个选项,具体步骤为:项目的TARGET-->Build Phases-->点击“+”号-->New Headers Phase
2.然后找到刚才新加的Headers子目录下面的那个"+",点击“+”号添加所有需要公开的类的.h头文件;
3.添加完所有需要公开的类的.h头文件之后,这些头文件都是处在Headers里面的Project子目录下,需要手动全选这些头文件直接拖入到上部的Public子目录下面。

4.把类的.h文件全部拖入到Public里面之后,就成功设置为公开的头文件了。









      四、编译打包模拟器静态库

1.打包编译之前需要配置一下工程文件,设置Scheme,有两个进入设置的方法,方法一:Xcode顶部菜单栏里面找到Product-->Scheme-->Edit Scheme...,找到Run-->Info里面-->Build Configuration里面选择Debug模式,选择之后点击Close;方法二:从Xcode里面直接进入,Edit Scheme...,找到Run-->Info里面-->Build Configuration里面选择Debug模式,选择之后点击Close即可。

2.设置完Scheme之后,在项目运行程序类型选项里面,选择模拟器模式,然后使用快捷键command+b编译打包模拟器静态库;

3.编译成功之后,Products中的.a文件会由红色变成黑色,这就说明编译打包的模拟器静态库打包成功。






      五、编译打包真机静态库

1.上部分模拟器静态库打包编译成功之后,仍然在项目运行程序类型选项里面,选择真机模式,然后依然使用快捷键command+b编译打包真机静态库;

2.编译成功之后,Products中的.a文件会由红色变成黑色,这就说明编译打包的真机静态库打包成功。



      六、合并模拟器和真机编译好的静态库

1.上部分真机静态库打包成功之后,在Producets里面,用鼠标单击选中右键,Show in Finder显示文件位置,然后打开编译后的模拟器和真机的.a静态库文件的位置;

2.你在Products文件了里面可以看到两个文件夹,Debug-iphoneos是真机的静态库文件位置,Debug-iphonesimulator是模拟器的静态库文件位置,然后打开电脑终端;

3.在电脑终端里面,使用命令行的方式合并模拟器静态库和真机静态库文件,具体的命令行格式为:lipo -create "真机的.a静态库路径" "模拟器的.a静态库路径" -output "合并后的.a静态库路径"  这里需要特别注意两点:真机静态库路径 和 模拟器静态库路径之间的空格,合并后的静态库名字要和模拟器和真机静态库的名字一致。)

4.如果以上操作没有出错,终端会在你指定的文件夹下生成一个合并版的.a静态库,找到你指定合并后的.a静态库存放位置,把合并之后的.a静态库拷贝出来。







      七、拖入需要使用的项目中测试静态库

1.打开你想要使用.a静态库的项目,然后把你刚才复制出来的合并之后的.a静态库和所有的生成打包之后的类的.h文件都拖入到项目中;

2.然后command+b看看是否报错,然后进行配置修改,一般没有问题,但是不排除你的文件拖入项目之后提示找不到的问题,自行排查一下即可;

3.然后在你需要使用的具体地方,引入需要使用的.h文件,然后进行测试使用即可。到此,.a静态库的制作介绍完了。






       到此为止,生成.a静态库文件的步骤就全部结束了,同时也是本人2017年写的最后一篇博客,要想了解更多分享知识,咱们来年继续探讨交流,本人微信公众号也会不间断更新不同技术分享,欢迎大家关注!




2016-12-01 16:09:25 mofengluo 阅读数 230

网上很多教程-自己操作一遍整理了一下 。

我们在开发iOS的工作中可能会自己开发一些.a静态库或者打包一下别人的第三方类库包装成自己的.a文件。有时候我们引入一些C++编译的第三方文件时可能会出现编译的错误,但是我们如果打包成.a静态库时就很少会出现OC与C++混编的错误,原因很简单.a静态库文件是编译好的二进制文件,二进制文件与二进制文件互相混编当然没有什么问题。好那么接下来我们开始学习打包吧!

1.项目创建

2.生成一个.a文件 ;.h文件创建方法

3.m文件实现方法

4.command+B前 修改这个地方

5.。。。。。


6.看图介绍

7.生成的Debug和Release的a文件(iphoneos和iphonesimulator 真机和模拟器)

8.终端运行 将真机与模拟器a文件合并成一个a文件(合并成功文件大小是原文件的两倍大小)


9.添加到项目中去

2016-07-06 11:45:57 kangguang 阅读数 304

Code Sign error: No matching provisioning profile found: Your build settings specify a provisioni...

iOS打包发布的时候,一直提示这个错误,更换证书和描述文件也不能解决,后来采用下面的方法解决

1.找到项目中的**.xcodeproj文件,右键打开包内容;

2.然后找到project.pbxproj文件,双击打开;

3.再然后,搜索“PROVISIONING_PROFILE",找到以它开头的都删了

删完以后你就会发现错误提示没了,那么就运行工程,联网情况下Xcode会自己

下载并安装provisioning profile文件;那么一切都ok了!!




2017-08-09 09:37:21 fuemocheng 阅读数 6590

1、Unity 下打包


Bulid Failed

Assets/Plugins/uLua/x86_64/ulua.dll would be copied to /ulua.dll

Plugin ‘ulua.dll’ is used from several locations:
Assets/Plugins/uLua/x86_64/ulua.dll would be copied to /ulua.dll
Assets/Plugins/uLua/x86/ulua.dll would be copied to /ulua.dll
Please fix plugin settings and try again.

UnityEditor.Modules.DefaultPluginImporterExtension:CheckFileCollisions(String)
UnityEditorInternal.PluginsHelper:CheckFileCollisions(BuildTarget) (at /Users/builduser/buildslave/unity/build/Editor/Mono/Plugins/PluginsHelper.cs:25)
UnityEditor.HostView:OnGUI()

解决:
http://doc.ulua.org/article/faq/pluginuluadllisusedfromserverallocations.html

Plugin ‘ulua.dll’ is used from serveral locations
Assets/Plugins/xxx/ulua.dll would be copied to /ulua.dll 解决方案:

如果是32位Unity编辑器,删掉x86_64目录,如果是64位编辑,删除x86目录即可。


DXT5 compressed textures are not supported when publishing to iPhone

Bulid Success 但仍然有错误,这些问题可能导致游戏闪退

DXT5 compressed textures are not supported when publishing to iPhone
Assets/FX/textures/daoguang/daoguang_00019.dds
Included from scene:
UnityEditor.HostView:OnGUI()

DXT5 纹理压缩时不支持发布iPhone

暂时解决方案:
删除这种纹理贴图



2、Xcode下编译


Signing for “Unity-iPhone” requires a development team. Select a development team in the project editor.

Code signing is required for product type ‘Application’ in SDK ‘iOS 10.3’

原因:
没有在Signing team里面添加签名信息

解决:
xcode7.0开始就可以免证书真机调试
Unity发布至IOS的流程(踩坑记录)
xcode8.2 免证书手机调试详解


ld:’/…/Libraries/Plugins/uLua/iOS/libulua.a(array.o)’ does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

iOS中关于bitcode没有被包含的解决方法:http://www.jianshu.com/p/9eb11e365312
Xcode7 does not contain bitcode. 的错误:http://blog.csdn.net/lwuit/article/details/48783885


‘XXXX’ was compiled with optimization - stepping may behave oddly; variables may not be available

工程在编译之后被优化了,所以导致单步的时候程序表现异常,变量也都不能访问了。这是由于编译的时候选择的是 release,而 release 的时候是会做很多优化,导致上述结果。

解决方法

http://blog.csdn.net/zhyl8157121/article/details/48780897

把编译方式改为Debug。
1、
这里写图片描述
2、
这里写图片描述
3、
这里写图片描述


ios9.2 之静态库

阅读数 372

没有更多推荐了,返回首页