由于近期的项目须要,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. 并行编程(1) - sum.msic.Unsafe 一

    相信看过java源代码的同学.对 sum.msic.Unsafe 这个类并不陌生,特别是在java.util.concurrent包有非常多的使用. sum.msic.Unsafe源代码:      ...

  2. Common webpart properties in kentico

    https://devnet.kentico.com/docs/7_0/devguide/index.html?common_web_part_properties.htm HTML Envelope ...

  3. redis主从复制,读写分离

    主从复制,读写分离 Master/Slave 是什么 master写入 slave读取 能干嘛 读写分离,更加安全,性能提升 怎么玩 一主二仆.薪火相传.反客为主 周明老师,能够把长篇大论总结的很精辟 ...

  4. 13.QT多窗口切换list

    Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); list = ...

  5. 动态连通性问题:union-find算法

    写在前面的话: 一枚自学Java和算法的工科妹子. 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera  Algorithms Part1&2 本文 ...

  6. POJ 1384 Piggy-Bank DP

    一个完全背包 很裸,对于我这种DP渣渣都能1A.. // by SiriusRen #include <cstdio> #include <cstring> #include ...

  7. Android Studio 一些注意事项(自用,不定期更新)

    1,Android Studio 版本的选择 写这篇的时候,官方版本已经到了 v3.2.0,而我习惯使用的版本是 v2.3.1,因为这个版本有自带sdk的安装版,比较方便, 同时,v2.3.1 新建项 ...

  8. CREATE TABLE 语句后的 ON [PRIMARY] 起什么作用

    CREATE   TABLE   [dbo].[table1]   ( [gh]   [char]   (10)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL ...

  9. GRpc-Proto3语法

        syntax = "proto3"; 文件的第一行指定了你使用的是proto3的语法:如果你不指定,protocol buffer 编译器就会认为你使用的是proto2的语 ...

  10. 常用的Linux命令汇总

    1. 进入某个文件夹 2.查找某个文件或内容 3.查看文件内容 4.kill进程 启动tomcat  停止tomcat 1. 进入某个文件夹 比如有个目录,路径是:   /home/user1/doc ...