通过Finder浏览到你保存该项目的文件夹。创建三个新的文件夹:wax、scripts和Classes。

第一:首先,下载源代码的压缩包。Wax放在GitHub上(https://github.com/probablycorey/wax)

第二:现在,执行下列操作:

  ◆ 拷贝lib和bin文件夹,把它们粘贴到位于WaxApplication项目文件夹里面的wax文件夹。打开WaxApplication项目文件夹里面的wax/lib/extensions/文件夹。删除SQLite和xml文件夹,

  ◆ 将xcode-template/Classes/ProtocolLoader.h拷贝到Classes项目文件夹。

  ◆ 拷贝xcode-template/scripts/文件夹的内容,将它放到scripts项目文件夹里面。

现在用Finder选择Classes、scripts和wax文件夹,把它们拖入到Xcode项目中。

 第三:改动main.m 为如下

  //这是发生奇迹的地方!
// Wax并不使用nib文件来装入主视图,一切在AppDelegate.lua文件里面完成
#import <UIKit/UIKit.h>
#import "wax.h"
#import "wax_http.h"
#import "wax_json.h"
#import "wax_filesystem.h"
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init]; wax_start("AppDelegate.lua", luaopen_wax_http, luaopen_wax_json, luaopen_wax_filesystem, nil); int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
[pool release];
return retVal;
}

第三,删除不必要的文件

删除MainWindow.xib、WaxApplicationAppDelegate.h和WaxApplicationAppDelegate.m三个文件。打开WaxApplication/Supporting Files/WaxPallication-Info.plist,然后删除键是Main nib file base name的那一行。

第四,运行程序,我们会看到如下画面。

完成以上步骤并运行后,我遇到的如下问题:

/Desktop/WaxApplication/wax/lib/wax_server.h:46:12: Class 'HACK_WAX_DELEGATE_IMPLEMENTOR' defined without specifying a base class

源代码
// This is needed because the runtime doesn't automatically load protocols
@interface HACK_WAX_DELEGATE_IMPLEMENTOR <WaxServerDelegate> {}
@end
修改后的代码
// This is needed because the runtime doesn't automatically load protocols
@interface HACK_WAX_DELEGATE_IMPLEMENTOR : NSObject <WaxServerDelegate> {}
@end

修复方式:为  HACK_WAX_DELEGATE_IMPLEMENTOR 添加一个 NSObject 基类即可。

最终运行后效果:

注意:其它的教程中会让设置Shell脚本,但是我没有设置,也运行成功了。如果需要设置shell脚本,请参考如下步骤:

在右边窗格中,寻找Targets标题,点击WaxApplication。点击Build Phases(构建阶段)选项卡。点击Copy Bundle Resources(复制捆绑资源),清除所有lua文件。

  ◆ 在右下角,先点击Add Build Phase(添加构建阶段),再点击Add Run Script(添加运行脚本)。

  ◆ 将Shell设成/bin/zsh

  ◆ 将Shell下面的文本区域设成$PROJECT_DIR/wax/lib/build-scripts/copy-scripts.sh。

参考:Xcode 搭建Lua开发环境,基于Wax框架详解

IOS从lua动态生成类

按照上述别人的方法我是有报编译错误最终自己如下方式解决:

    1. 在xcode中新建目录wax、scripts和Classes
    2. 在下载的源码中有对应的wax、scripts和Classes这三个目录,这三个目录会有很多子目录,在xcode中需要对应也建立这些子目录
    3. 在xcode中建立好所有的目录后(包括子目录)开始引入文件,后面发现其实这边有快捷方式,直接把本地的这三个目录拖到xcode中并且在选择的时候如下勾选:
    4. 引入文件时xcode中的位置需要和源码中的文件位置一致(不一致的情况我没试过)
    5. 把引进来的.m文件全部改成非ARC模式编译可参考http://blog.csdn.net/leeafu/article/details/13093399
    6. 项目中的minizip和ZipArchive.h为解压缩类(可以替换别的解压缩类),是我自己找的,这几个类需要libz.dylib支持,否则会报错误如下:
    7. 编译,如果报头某某文件没有找到则自己去修改头文件的#import或#include
    8. 编译通过则安装成功

ios wax热更新之安装wax(xcode7.3.1)的更多相关文章

  1. ios WaxPatch热更新原理

    以下是引用他人文章内容: 为什么需要 WaxPatch 很多情况下,已经在 AppStore 上线的应用需要紧急缺陷修复,此时便需要使用某些技术手段,使应用程序能够动态下载补丁,进行缺陷修复. 什么是 ...

  2. uniapp中IOS安卓热更新和整包更新app更新

    在App.vue中 onLaunch: function() { console.log('App Launch'); // #ifdef APP-PLUS this.getVersion(); // ...

  3. 移动端APP热更新方案(iOS+Android)

    出自:http://www.cnblogs.com/Creator/p/7007694.html 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙 ...

  4. ios app 实现热更新(无需发新版本实现app添加新功能)

    目前能够实现热更新的方法,总结起来有以下三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的iOS应用 ios app可以在运行时从服务器拉取最新的js文件到 ...

  5. 移动端热更新方案(iOS+Android)

    PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5% ...

  6. ios app 实现热更新(无需发新版本号实现app加入新功能)

    眼下可以实现热更新的方法,总结起来有下面三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的ios应用 ios app能够在执行时从server拉取最新的js ...

  7. APP热更新方案

    为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App.测试.向各个应用市场和渠道换包.提示用户升级.用户下载.覆盖安装. 重 ...

  8. APP热更新方案(转)

    本文转载自[http://creator.cnblogs.com/] 博客地址:Zealot Yin 为什么要做热更新 当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就 ...

  9. ionic2新手入门整理,搭建环境,创建demo,打包apk,热更新,优化启动慢等避坑详解

    onic官方文档链接:http://ionicframework.com/docs/ 如果是新的环境会有很多坑,主要是有墙,请仔细阅读每个步骤 文档包含以下内容: l  环境搭建 l  创建demo并 ...

随机推荐

  1. tomcat JNDI 设置

    一.在Spring配置文件中的配置   <bean id="dataSource" class="org.springframework.jndi.JndiObje ...

  2. 小技巧-a标签去除蓝圈

    可以看到,蓝色的边框破坏了页面的整体美感,很多时候我们都是不需要的.通过设置相应的css可以去除点击过后的蓝色边框. map area { outline: none; } 效果如图,点击过后厌人的蓝 ...

  3. 爆料喽!!!开源日志库Logger的剖析分析

    导读 Logger类提供了多种方法来处理日志活动.上一篇介绍了开源日志库Logger的使用,今天我主要来分析Logger实现的原理. 库的整体架构图 详细剖析 我们从使用的角度来对Logger库抽茧剥 ...

  4. AMD正式公布第七代桌面级APU AM4新接口

    导读 本月5日,AMD正式公布了入门级的第七代桌面级APU为Bristol Ridge,在性能和能效方面较上一代产品拥有显著提升.AMD同时确认Zen处理器和新APU(Bristol Ridge)都将 ...

  5. [BZOJ1901]Zju2112 Dynamic Rankings

    [BZOJ1901]Zju2112 Dynamic Rankings 试题描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i ...

  6. 用int类型表示最大公倍数

    代码 #include<stdio.h> #include<stdlib.h> #include<limits.h> int main(void) { int m, ...

  7. mysql 将指定列的浮点数转化为整数

    mysql 将指定列的浮点数转化为整数: update A set B =  cast(B as decimal(10,0))  -- 或者 update A set B = round(B,0) 例 ...

  8. 一个IP多个https站点配置

    在一台主机上放置一个https网站,究竟该怎么配置?对于IIS和Apache以及Nginx等不同的服务器,方法是不同的,网上有很多教程,在此就不再赘述了. 至于一台主机,如何配置多个https网站呢? ...

  9. 3.2---最小栈(CC150)

    //思路:入栈时不是最小值,永远都没机会成为最小值. import java.util.Stack; class MinStack { private Stack<Integer> sta ...

  10. vb.net 控件(包括字体)随窗体按比例缩放

    Public Class frmDl Dim x As Single = 0 Dim y As Single = 0 Private Sub frmDl_Load(ByVal sender As Sy ...