a 首先要根据要求安装最新的android SDK,目前我的版本要求 SDk 17才能顺利进行
b 一定要配置好环境变量,把SDK's tools and platform-tools 目录配置到你的环境变量中去,
另外还要把ANT也要配置到系统环境变量中去,如
;%JAVA_HOME%\bin;%ANT_HOME%\bin
2、cordovan300的插件可以用命令行远程从git添加,也可以下载下来从本地用命令行添加,两种方法的命令
是一样的,只需要把最后参数的远程地址改成本地路径即可
3、npm install -g cordova@XXXXX 可以指定要安装的cordova版本
4、把老版本的300以前开发的程序升级到300的注意事项
a 需要新建一个cordova项目
b 把seerts里的>Cordova是一个广泛使用的Hybrid开发框架,它提供了一套js和Native交互规范
在Cordova的 SystemWebViewEngine 类中可以看到
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
if ((BuildVERSIONSDK_INT < BuildVERSION_CODESJELLY_BEAN_MR1)) {
Logi(TAG, "Disabled addJavascriptInterface() bridge since Android version is old");
// Bug being that Java Strings do not get converted to JS strings automatically
// This isn't hard to work-around on the JS side, but it's easier to just
// use the prompt bridge instead
return;
}
webViewaddJavascriptInterface(new SystemExposedJsApi(bridge), "_cordovaNative");
}
因此当Android系统高于42时,Cordova还是使用 addJavascriptInterface 这种方式,因为这个方法在高版本上安全而且简单,低于42的时候,用什么方法呢?
答案是 WebChromeClientonJsPrompt 方法
WebView可以设置一个 WebChromeClient 对象,它可以处理js的3个方法
onJsAlert
onJsConfirm
onJsPrompt
这3个方法分别对应js的 alert 、 confirm 、 prompt 方法,因为只有 prompt 接收返回值,所以js调用一个Native方法后可以等待Native返回一个参数。下面是 cordovajs 中的一段代码:
/
Implements the API of ExposedJsApijava, but uses prompt() to communicate
This is used pre-JellyBean, where addJavascriptInterface() is disabled
/
moduleexports = {
exec: function(bridgeSecret, service, action, callbackId, argsJson) {
return prompt(argsJson, 'gap:'+JSONstringify([bridgeSecret, service, action, callbackId]));
},
setNativeToJsBridgeMode: function(bridgeSecret, value) {
prompt(value, 'gap_bridge_mode:' + bridgeSecret);
},
retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
}
};
然后只要在 onJsPrompt 方法中使用 CordovaBridge 来处理js的prompt调用
/
Tell the client to display a prompt dialog to the user If the client returns true, WebView will assume that the client will handle the prompt dialog and call the appropriate JsPromptResult method
<p/>
Since we are hacking prompts for our own purposes, we should not be using them for this purpose, perhaps we should hack consolelog to do this instead!
/
@Override
public boolean onJsPrompt(WebView view, String origin, String message, String defaultValue, final JsPromptResult result) {
// Unlike the @JavascriptInterface bridge, this method is always called on the UI thread
String handledRet = parentEnginebridgepromptOnJsPrompt(origin, message, defaultValue);
if (handledRet != null) {
resultconfirm(handledRet);
} else {
dialogsHelpershowPrompt(message, defaultValue, new CordovaDialogsHelperResult() {
@Override
public void gotResult(boolean success, String value) {
if (success) {
resultconfirm(value);
} else {
resultcancel();
}
}
});
}
return true;
}1 设置android手机为USB调试模式。步骤: menu--->设置 --->应用程序 --->开发 , 选择USB调试
2 用USB连接手机和电脑,并确保成功。步骤: 在windows下执行c:adb devices, 查看手机是否已经连接成功。
3 设置应用程序为调试模式。 *** 作: 编辑AndroidManifestxml 增加调试参数android:debuggable="true", 如下:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
4 执行真机调试 *** 作:ECLIPSE调试对话框中,Target窗口中选择Manual,点击debug按钮,选择真机设备,开始调试。
注:不管是否启用ECLIPSE环境,任何Android软件只要在真机上运行发生异常,都可以在命令行窗口下查看具体异常信息:
执行:adb logcat 可以查看到更多的系统异常消息。在这些消息中要注意查看Caused by:打 头的行,这些行指明了在哪行代码出的错误
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)