遇到的一些问题心得

一. 项目的版本管理。

1、GNU 风格的版本号命名格式 :
主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]]
Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]
示例 : 1.2.1, 2.0, 5.0.0 build-13124

2、Windows 风格的版本号命名格式 :
主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]
Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]]
示例: 1.21, 2.0


我们开发中,一般使用三个字段即可 主版本号 . 子版本号 . 修正版本号

有大的架构调整、大量的功能重写,无法向后兼容,升级主版本号;

有一些功能的修改、增加,可以向后兼容,升级子版本号;

有一些bug的修改,升级修正版本号。

另外对项目最好做trunk和tags的管理,已发布出去的版本,放入tags目录,以主版本号 . 子版本号的形式保存。



二. 使用已有的项目进行重开发时,特别是SDK,最好保持以前的方法、接口的不变,需要添加、修改的功能,另起类、方法实现。

这样可以保持对旧版本调用的兼容性,已使用旧版本SDK的app,不需要修改以前对SDK的调用方式,集成方便。


三. http get请求时,其中的参数,如果包含中文或者特殊字符,需要进行urlEncode。

比如 “中国”按照utf-8编码转化后为 “%e4%b8%ad%e5%9b%bd”


四. IOS中开发SDK时,对外提供.a文件时,一般是真机和模拟器会单独提供一个包。

这样就会出现一些问题,APP在使用的时候,如果不断的在模拟器和真机之间切换,就需要重新引用SDK包,比较麻烦。

在xcode中还有个奇葩的事是:在修改了新的引用后,项目配置里并没有删除旧的库文件路径。


遇到的一些问题心得_第1张图片


先引用模拟器的版本:


删除模拟器版本,添加真机版本后:


这时xcode没有删除模拟器的路径,导致编译时,还是去链接模拟器的库,出现链接错误。


所以,一般的解决办法是,把模拟器和真机版本放到一个库里



五. IOS中,三方库的问题

IOS开发中,经常使用到第三方库,比如jsonkit,asi等。如果是app自己使用是没有什么问题的,但是开发sdk时,就需要注意了。

因为我们的sdk会集成到app中,我们使用的第三方库和app使用的第三方库就会冲突。

解决办法主要有两个:

(1) 我们对开源的第三方库进行重命名,包括类名、enum、一些宏。

    这种方法的优点是,以后我们的三方库的使用,完全跟app分割了,不用产生冲突。但这种方法也有几个缺点:一是修改的工作量比较大,很繁琐;二是集成到app后,仍然保留了三方库的重复实现,增大app体积,特别是在使用了比较多三方库的情形下。

(2) 将三方库以.a静态库的方式提供。

优点:解决了代码重复的问题,同时不用繁琐的修改类名等等。这样也会有一个隐患,那就是app在使用我们一样的第三方库的时候,修改了库的实现,如果仅仅是增强了实现或者添加新的接口,到没问题,但如果是修改了原有接口的实现,那就悲催了。


原则上的话,还是采用第二种方式,那个隐患问题,可以在和app集成的时候去协调解决。

你可能感兴趣的:(遇到的一些问题心得)