A. apicloud不能编译提示:不是有效的apicloud项目,我是新手
修改C:\Windows\System \drivers\etc\hosts文件,用记事本打开。加入下面的文本,保存后重启浏览器即可#appleGoogleMap . . . maps-api-ssl.google.com . . . maps.gstatic.com . . . mts .google.com . . . mts .google.com . . . khms .google.com . . . khms .google.com
B. 获取apicloud编译的是正式版还是测试版
1、模块上传到网站。 (控制台 --> 模块 --> 自定义模块) 2、把使用模块的js代码widget 包上传到网站 (控制台 --> 代码 -->上传代码) 3、本地测试,还是云编译 :(本地测试,是不包含模块的, 需要云编译, 勾选模块, 云编译,扫描生成的二维码 安装)...
C. APICloud 社区ios编译失败 怎么办
最近公司有使用APICloud发开的需求,需要我这边提供一些模块包得封装。因为没有也是刚接触APICloud,所以也就在看官方文档 。下面讲一讲我再使用过程中得一点点东西。
首先,下载官方SDK,下载最新版本的模块开发SDK,找到里面的MolesDevProject_iOS.zip,这里面包含MoleDemo、MolesDevProject和说明文件。MoleDemo是一个官方的模块包封装和静态库生成的工程。MolesDevProject则是可以让我们自己调试的工程。
模块类实现
2.1. 新建模块类
新建一个UZMoleDemo类,继承于UZMole类,其中UZMole类为模块的基类。模块开发过程中文件命名时提倡加前缀,以避免和其它模块冲突。
2.2. 模块生命周期
当前端js中调用模块方法时,模块首先会被初始化,引擎会调用其 - (id)initWithUZWebView:(UZWebView *)webView 方法;
当模块所在的页面被销毁时,引擎会调用其 - (void)dispose 方法。
2.3. 启动方法
如果模块需要在应用启动的时候就执行一些操作,那么首先得在mole.json里面配置launchClassMethod,例如配置的方法为launch,然后在模块里面实现该方法,当应用启动时该方法就会被执行。
+ (void)launch{
//在mole.json里面配置的launchClassMethod,必须为类方法,引擎会在应用启动时调用配置的方法,模块可以在其中做一些初始化操作;下面代码为注册一个实现了UIApplicationDelegate协议方法的对象,该对象中方法就会在需要的时候被调用,通过此方式可以实现第三方应用回调url解析、推送等常用功能
//UZApphandler 基础Object基类 可以做一些需要AppDelegate 实现的初始化 如初始化推送的AppKey等等
// UZAppHandler *appHandler = [[UZAppHandler alloc] init];
// [theApp addAppHandle:appHandler];
}
2.4. 方法调用
实现 - (void)showAlert:(NSDictionary *)paramDict 方法,用于显示一个对话框,该方法需要在mole.json里面配置,然后在前端js里面才可以调用该方法。
如果前端调用该方法时传入了一个function,那么在这里可以通过cbId字段获取该function对应的id,然后在需要的时候把数据通过该function回调给js。
- (void)showAlert:(NSDictionary *)paramDict {
_cbId = [paramDict integerValueForKey:@"cbId" defaultValue:-1];
NSString *message = [paramDict stringValueForKey:@"msg" defaultValue:nil];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:message delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert show];
}
2.5. 回调
我们在这里实现UIAlertViewDelegate中的 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 方法,将用户点击的按钮index回调给js端,代码如下:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (_cbId >= 0) {
NSDictionary *ret = @{@"index":@(buttonIndex)};
[self sendResultEventWithCallbackId:_cbId dataDict:ret errDict:nil doDelete:YES];
}
}
当然,也可以定义自己的方法method,同时要修改mole.json的配置 注意不要[+]以及引号的英 汉。{
"name":"moleDemo",//模块包名一致
"class":"UZMoleDemo",//模块类名
"methods":["showAlert","method"],//自己定义的方法名
"launchClassMethod":"launch"//是否执行launc类方法
}
找到widget目录下html目录里面的mole-con.html,我们在这里面调用showAlert等方法,如下
var param = {
msg:"Hello App!"
};
var demo = api.require('moleDemo');//模块包名称 (mole.json 这里 模块包名称 三者要一致)
demo.showAlert(param, callBack);//传参数调用方法 和回调
function callBack(ret, err){
var msg;
if (ret.index == 0){
msg = "点击了第一个按钮";
} else {
msg = "点击了第二个按钮";
}
api.toast({
msg:msg
});
}
调试好了之后,把添加 修改的文件 加入MoleDemo的静态库工程(也可以自己创建),去掉没用的,选择iOS device编译,复制静态库文件。 创建文件夹名称和模块包一致,里面在创建target文件夹,把静态库文件粘贴进来,加入用到了第三方的Framework和bundle束也放进来。 target同级目录粘贴mole.json文件,返回压缩成zip文件. 获取在apicloud创建的应用的Id 修改widget下config.xml 顶部的id,复制压缩widget文件。在apicloud控制台,转到该应用,选择代码部分,上传widget.zip 跳转模块中自定义模块上传模块包,名称必须和模块包名称一致。保存 编译,如果没有意外,你就能扫二维码 下载安装你的应用到手机了。 这里默认的时apicloud提供的证书,加入要改自己的就看证书栏目,都有教程的。Mark!
D. apicloud云编译后的包,后台可以运行吗
按顺序学这些:流程控制语句、类和对象、接口和抽象类、多态、封装、继承、数组、集合、IO编程、线程 ,再学JavaWeb,又习惯称Java企业级应用(Java EE), Java EE的基础是servlet,学好servlet之后,你就去学jsp,jsp的实质就是servlet, 再学...
E. apicloud 开发 能用么
分享一下APICloud的使用体验:
一直在做PC端的HTML5开发,之前也用过Phonegap,一直关注Hybird开发的发展。前几天看到APICloud,试用了一下,整体感觉不错,我的看法如下:
优点:
1、方案完整,简化,上手快。因为有Phonegap的基础,了解概念花了不到两个小时,做出第一个小App花了一天半。
2、IDE整合做的不错,直接连接云端,SVN代码同步,直接连接手机App Loader真机调试,Log可以通过IDE输出,比模拟器真实,直观。
3、云编译很方便,跨平台打包,直接生成二维码,我的小App做完打包,直接发二维码给朋友用。
4、手机底层硬件/组件调用API很实用,测了一些,比如语音识别,都不错。
5、文档完备,相比开源项目往往缺乏文档,信息需要东拼西凑来说,APICloud的文档比较集中和全面。
缺点:
1、缺乏常见模式App的完整框架Demo,比如:一个带头部信息,底部导航和侧边菜单的应用框架用APICloud的UI组件怎么写,页面间跳转和参数传递怎么写,这些都是动手开发之前最先要解决的问题。Demo App里的组件示例有用,但是框架和基本流程要先跑起来。
2、UI组件不够丰富(也可能是我了解还不够),我尝试写测试App的时候最先考虑用APICloud提供的UI组件,但是发现很散且不成体系,无奈只好用JQMobi搭建了UI框架,虽然知道既然APICloud宣称可以实现原生App体验,像我这样使用第三方JS框架的方式肯定是不推荐的。
3、IDE联机调试的Log输出不稳定,经常断线。
4、文档层次和细致程度还不够。文档现在的层次有点混乱,不好定位信息,最好分一下类别,比如媒体类,通讯类,等等。另外还有一些API没有说明文字。
总结:
由于只试用了两天,具体底层API是否可以很好的支持常见功能还没能完整测试。但是就我用到的部分,可以说已经很好用的,比Phonegap易学易用,很方便。对于应用类App开发来说绝对是利器,尤其是对我这样PC端HTML5开发很熟但是手机原生开发不熟的人,入门成本基本为0。所以,很棒,加油!
F. APICloud平台云编译失败的原因是什么
编译失败只有2种原因:1.证书信息不符。2.widget文件夹中含有中文名的文件。