1可以分析它的源码学习这套框架
- A 增加 四个文件管理 API wx.getSavedFileList、wx.getSavedFileInfo、wx.removeSavedFile、wx.openDocument 详情
- A 增加 四个数据管理 API wx.removeStorage、wx.removeStorageSync、wx.getStorageInfo、wx.getStorageInfoSync 详情
- A 新增 四个交互反馈 API wx.showToast、wx.showModal、wx.hideModal、wx.showActionSheet 详情
- A 新增 选择地理位置 API wx.chooseLocation 详情
- A 新增 获取图片信息 API wx.getImageInfo 详情
- A 新增 两个设备 API wx.getSystemInfoSync、wx.makePhoneCall 详情
- A 新增 绘图 API wx.canvasToTempFilePath 详情
- A 新增 音频媒体 API wx.createAudioContext 详情
- A 新增 开放能力 API wx.checkSession 详情
- A 新增 wx.navigateBack delta 参数,支持多层级返回 详情
- A 新增 wx.sendSocketMessage、wx.onSocketMessage 支持收发 ArrayBuffer 数据类型
- A 新增 getCurrentPages() 方法, 获取页面栈 详情
- A 新增 Page.onReachBottom() 方法,监听页面到达底部 详情
- A 新增 事件对象增加 changedTouches 列表,反应手指触摸位置的变化 详情
- A 新增 组件 详情
- A 新增 多点触摸 详情
- A 新增 disable-scroll 属性 详情
- A 新增
bindload 事件返回图片宽高 详情 - A 新增
嵌套 功能 详情 - A 新增 controls autoplay 属性 详情
- A 新增 支持设置弹幕、发送弹幕 详情
- A 新增 播放类事件和接口 详情
- A 新增 WXML wx:key 支持,提升列表渲染时性能 详情
- A 新增 WXML 关键字、数据路径计算 详情
- U 新增 app.json tabBar 属性 position 用于指定显示位置 详情
- F 修复 wx.navigateTo api 超过 5 个页面,调用失败无返回的问题
- U 修复
设置 display: flex 失效的问题 - F 修复 text-align:center、text-align:right 不支持的问题
- F 修复 聚焦时异常的问题
- F 修复
base64 图片显示的问题 - F 修复 动态节点更新导致表单组件重置问题
- F 修复 使用 rpx 单位部分手机出现边框显示不全的问题
- F 修复 不同页面中相同的 canvas-id 共享同一个绘图上下文的问题
- F 修复 page 里面的属性对象内的 function 失效的问题
- F 修复 wx.drawCanvas 在 canvas 宽高为 0 的情况下画不出来的问题
- F 修复 wx.request header 设置 'Content-Type' 异常的问题
- D 即将移除 App.prototype.getCurrentPage 详情
- D 即将移除组件:
- D 即将移除 action 属性
破解方式:把相应的文件做个替换就行。
当前文件可破解版本:v0.10.102800
mac上:
找到开发工具的程序,右击"显示包内容":
Resources/app.nw/app/dist/components/create/createstep.js
Resources/app.nw/app/dist/stores/projectStores.js
Resources/app.nw/app/dist/weapp/appservice/asdebug.js
Resources/app.nw/app/dist/common/assdk/storageSdk.js
window上:
安装完后,一般是放在这个目录里:C:Program Files (x86)Tencent微信web开发者工具
找到相应文件再替换:
package.nw/app/dist/components/create/createstep.js
package.nw/app/dist/stores/projectStores.js
package.nw/app/dist/weapp/appservice/asdebug.js
破解的时候,把整个代码大概浏览了一遍,自己折腾了下。(因为之前写过react + flux的代码,所以对这个项目的结构非常熟悉。)
主要的修改,如果你有兴趣可以浏览下:
1、asdebug.js修改
(1)搜索"域名"两个字,找到类似域名校验出错等字眼的那一个function 把整个function内部的内容都注释掉,直接return true;
这个主要是为了去掉安全域名的限制
(2)搜索"URL 域名不合法,请在 mp 后台配置后,重启项目继续测试" 跟上面一样,把前面if改成if(false)
这个修改主要是为了去掉websocket的安全名限制
(3)搜索"__wxConfig.isTourist",把它改成false
这个修改是为了去掉游客身份。
2、projectStores.js
(1)搜索"setProjectConfig: function" 这个函数的定义
把"i = e.isTourist"(不一定是i和e,不同的js格式化工具可能会有不一样的结果)这一小段注释掉,把下方的第一个if(i) { ... }整块注释掉。
这一个用来判断是否是游客身份,是的话直接返回。但我们不想只是游客身份,所以这里我们不能让它返回,整个注释掉就行了。
(2)在上面这个函数从上往下找try catch,把找到的第一个整块注释掉 然后把它下方的第一个if改成if(true),if里的第一行var赋值语句的等号后面直接改成{Setting: {MaxLocalstorageSize: 10}},因为在dist/common/assdk/storageSdk.js里有对这个值的引用,如果这里没有设置这个MaxLocalstorageSize的话,wx.setStorage会保存失败,wx.setStorageSync会报错。
另外这里设置成if(true)是因为我们在创建项目时随便填appid,所以网络请求返回肯定是error,这里的JSON.parse结果在if里是通不过的。我们把这一整段注释掉,不去管网络返回的error。进if后会在本地存储新建项目的信息。
这个地方的修改比较复杂,截图如下:
3、createstep.js
(1)搜索"当前开发者未绑定此 appid"
把第一个if及周边的东西都注释掉,只执行下一个if。
这个地方是创建的时候,返回用户信息的地方,上面说过我们创建时返回的肯定是error,所以这里自然也拿不到用户信息,反而是一个用户appId错误提示,所以这里我们动点手脚,把这个判断都注释掉,让它只执行用户信息返回的成功代码,同时我们创建一个假的用户信息object。
这个修改比较复杂,截图如下:
网络请求的接口,微信做了一些安全限制,要破解才能给任意地址发请求。websocket的接口也是一样。本项目的破解文件已经解决了这些问题。
另外,创建出来的demo项目中,调用wx.login是不能成功的,所以改了demo的代码,在app.js里直接给globalData.userInfo赋值即可。
init: function() { this.globalData.userInfo = { "nickName": "jason", "avatarUrl": "http://wx.qlogo.cn/mmopen/icSHGibMIMB82jDEHibGFA1s6dhwMibWrQAPeRvT2w2y2rpZVM5l3BftVEr3rTgX4fXDlznnMmZY0zYtgkfFw7L3o9r0tTblGTxB/0", "gender": 1, "province": "广东", "city": "深圳", "country": "中国", }; }, |
然后在onLaunch里调用一下init()就ok
几个问题说明
-
MaxRequestConcurrent报错的问题
这个在本项目的破解文件里已经直接覆盖了,不会报这个错了。
(修改:asdebug.js里,搜MaxRequestConcurrent,很简单,直接把它设置成固定数字即可) -
页面切换时会出现route错误的问题
这个可能是开发工作自身的bug,用一段时间后就会这样,目前还没发现原因,不过解决这个问题很简单,关掉,重新再开就好了。 -
Failed to load resource: net::ERR_NAME_NOT_RESOLVED
这个问题gavinkwoe的项目中也说明了,主要是由于代理导致的,打开ide,菜单上选"动作"->"设置",选直连就行