由于近期的项目须要,Hybrid开发成为我開始学习的新知识。非常早之前就了解到两个开发框架--BeeFramework 和 Samurai,可是由于本人一直没有闲暇去研究,所以就一直搁置一旁了。近期才開始进行深入的学习,但事实上也就是入个门而已。

我是个纯OC开发人员,之前对XML和CSS并没有什么基础,在此就简单总结一下我初学Bee遇到的困难和问题吧。日后能够用来回想,或者让其它想要学习的人也有所參考。

为什么会选择用Bee而不用Samurai呢?事实上不是由于Bee比Samurai强大,论强大和“新”来说,Samurai应该是比Bee要更优的。

我选择Bee的理由是由于当前项目须要用到,而Bee已经更新了非常久,基本稳定了,而Samurai还在成长。为了避免由于它的更新给我带来很多其它的麻烦。所以我决定先用Bee,以后也会去学习使用Samurai。

说的有点啰嗦了。言归正传。

Bee: https://github.com/gavinkwoe/BeeFramework

Samurai:https://github.com/hackers-painters/samurai-native

  • BeeFramework 简单介绍

    github:BeeFramework is a semi-hybrid framework that allows you to create mobile apps using Objective-C and XML/CSS for the iPhone and iPad and more, created and maintained by Gavin.Kwoe and QFish.

    BeeFramework是一个iOS应用开发框架,由国内开发人员郭虹宇创立而且在Github上开源。

    经过一年多的发展,BeeFramework在Github上,得到了广泛关注。有1000多的star数和400多的fork数。

    BeeFramework是一个semi-hybrid(半混合)框架,运用XML、CSS、Objective-C构建iOS应用。基于MVC。而且适用于大型App的开发。已经有诸如QQ空间、屈臣氏中国等相当成熟的产品。

    Bee的具体说明文档在项目的document文件夹下–developer_manual

  • 新建Bee项目
  • 第一次尝试

    我使用的BeeFramework版本号是0.6.0,不同版本号可能会有一些差别。

    以往新建一个project一样新建了一个Bee的Demo,并导入了framework文件夹和services文件夹。编译发现#import <libxml/tree.h>报错,错误原因是:'libxml/tree.h' file not found。这个问题事实上非常好解决。到网上搜一下就会得到答案。在Xcode4.2之后,能够在加入了libxml2.dylb之后。点击左上角的project。然后进行Build Settings(这里无论是Project还是targets都行)。找到Search Paths选项卡,其下有Header Search Paths条目。双击debug选项。加入/usr/include/libxml2即可了。

    然而这个问题攻克了以后就会出现ARC的问题。



    由于新建的project是ARC的,而Bee的文件是MRC的。

    我做了这个操作,把全部文件都加上了-fno-objc-arc

    可是又出现了新的问题。



    到这里我没有继续,由于这样的方式实在是太繁琐了,我觉得这应该不是正确的做法。当然也在交流群中咨询过高手、大神们,总之这个做法我放弃了。

    后来我看了一篇博客,也主要是这篇博客攻克了我的问题。之前 别人给的意见没有听懂的也在这个博客中得到了答案。

博客地址:http://syxiaqj.github.io/2014/02/28/bee-learning-1/#0-tsina-1-24637-397232819ff9a47a7b7e80a40613cfe1 作者:浪花一朵朵

  • 第二次尝试

    參照博客内容,我做了准备工作:

    1.下载BeeFramework

    2.下载Bee项目模板:Bee-Xcode-Template-master

    3.下载工具:xproj(作者QFish),用来批量进行ARC、非ARC混编的shell脚本。

然后開始新建项目

1.安装Bee项目模板
解压Bee-Xcode-Template-master。终端cd到该文件夹,执行下面命令
    sh install.sh
2.新建Bee项目

运用模板新建的Bee项目,project框架已经基本有了。

编译一下会发现项目有错误,提示Bee.h引用找不到。由于还没有吧BeeFramework框架加入进来。

3.加入BeeFramework

在project中加入BeeFramework框架项目中的 framework 文件夹

4.批量加入`-fno-objc-arc`

由于BeeFramework是一个非RAC的框架,如今Xcode5.0以后新建的project。都默认是ARCproject,所以须要对BeeFramework进行混编处理。

framework文件夹下的全部文件都须要在Build Phases中加入-fno-objc-arc,可是文件非常多,一个个加入会比較麻烦。要么用command或shift。可是我们还有个小工具能够用。xproj

具体用法在github中有,或者能够參考上面提到的博客。

当然还能够通过CocoaPods来管理BeeFramework。

此时再次编译执行。就会发现没有错误了,可是界面上什么都没有。

下一步就是来写界面了。

新建xml文件,这个在Bee的模板里面有。

xml本人不是非常精通,先写这么多,我继续研究研究去。

~第一次用markdown写博客,格式还不是非常会处理。见谅。~

初识BeeFramework的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. HDU 5171

    这道题本来很水,以前做过一样的,斐波那契数列,用矩阵快速幂的方法求,本来很水,以前做过很多次,为毛做的时候没想到T_T #include <iostream> #include <c ...

  2. poj1035Spell checker

    暴力解决. 先把字典里的每一个单词的长度存起来.在查找的时候.就比較长度,在多一个少一个之间找, #include<stdio.h> #include<string.h> #i ...

  3. xml与json格式互转

    最近要整一些报文测试的事情,可当前项目的请求报文格式却不统一,有XML也有JSON,为了一致性,决定统一用JSON格式处理. xmltodict : Makes working with XML fe ...

  4. Chrome插件开发新手教程

    近期在用百词斩这个站点来学单词,感觉非常不错,就是在回想单词列表的时候仅仅有单词和意思.却没有读音.感觉非常不方便,思来思去,想到了Chrome插件能够胜任这个工作.于是小小的研究了一下. Chrom ...

  5. IOS写一个能够支持全屏的WebView

    这样来写布局 一个TitleView作为顶部搜索栏: @implementation TitleView - (id)initWithFrame:(CGRect)frame { self = [sup ...

  6. Boost库编译后命名方式

    Boost官网的<Geting Started On Windows>(http://www.boost.org/doc/libs/1_38_0/more/getting_started/ ...

  7. 云:VMware

    ylbtech-云:VMware VMware总部位于美国加州帕洛阿尔托 ,是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案,企业通过数据中心改造和公有云整合业务,借助企业安全转 ...

  8. Python使用functools模块中的partial函数生成偏函数

    所谓偏函数即是规定了固定参数的函数,在函数式编程中我们经常可以用到,这里我们就来看一下Python使用functools模块中的partial函数生成偏函数的方法 python 中提供一种用于对函数固 ...

  9. ROS命令参考

    前言:整理一些ROS常用命令,参考自:<ROS机器人编程>. 一.ROS执行命令 二.ROS信息命令 三.ROS catkin命令 四.ROS功能包命令 -END-

  10. POJ 1466 最大独立点集

    思路:匈牙利 n-ans/2; // by SiriusRen #include <cstdio> #include <cstring> #define N 505 using ...