在android模拟器调用JavaScript与phonegap
我是phonegap和android开发新手。 我可以知道如何在模拟器上debuggingjavascript错误吗? 我听说过亚行可能知道如何在Windows 7系统上使用和安装它? 我有一个jsonp调用ajax但没有模拟器上的响应。 不过,我可以在Windows上用浏览器调用ajax。 我可以知道哪里出了错?
通过在JavaScript中调用console.log(),您至less可以将debugging内容logging到adb控制台。 也许这就够了?
要使用adb查看日志输出,请导航到您的SDK platform-tools /目录并执行:
adb logcat
请参阅logcat命令行工具
2016年11月更新:看起来像这不工作了。
最简单和最强大的方法之一是使用http://debug.phonegap.com (它使用Weinre在后台,如果你在意)。 你刚才
- 选一个随机的string,比如
r4nd0m
, - 在您的
index.html
注入<script src="http://debug.phonegap.com/target/target-script-min.js#r4nd0m"></script>
- 请访问
http://debug.phonegap.com/client/#r4nd0m
,您将立即debugging您的移动Web应用程序。
你可以做的事情 (类似于Firebug或Web Inspector):
- 查看和更改DOM
- 编辑CSS
- 用于实时debugging并远程运行Javascript的控制台。
- 其他的东西,如:存储,资源,时间表,简介等
您现在可以使用Chrome开发工具远程debuggingAndroid Phonegap应用程序! 我在这里写下了说明: 使用Chrome开发工具远程debuggingPhonegap应用程序
Android模拟器的步骤:
- 导航到桌面计算机上的Chrome浏览器中的chrome:// inspect /。
- 在“设备”选项卡上findAndroid模拟器,然后单击“检查”链接
另请参阅远程debuggingAndroid设备入门
我build议jsconsole 。 它可以让你注入任何JavaScript的页面,并提供一个基本的控制台。 有一个很好的远程debugging教程。
是的,你有console.log的日志错误,并显示Eclipse中的LogCat标签。 在那里,Web控制台消息(包括JS错误)将显示出来。 这是一个有点冗长,所以你必须过滤,只显示Web控制台标签,但它运作良好。 在这里描述: 显示CONSOLE.LOG输出和JAVASCRIPT错误与PHONEGAP ANDROID / ECLIPSE
我发现这适用于在Windows 7上通过Eclipsetesting应用程序时为Android / Phonegapdebuggingjavascript错误。
只需转到窗口>显示视图>其他…
然后selectAndroid文件夹下的LogCat 。
刚join的窗口/选项卡是Android模拟器发送日志和错误消息的地方。 你可以分离这个窗口并把它放在Eclipse IDE之外(我觉得这很有用)。 您还可以通过select窗口右上angular的5个彩色字母中的任何一个来控制您看到的错误types。
要隐藏无用的信息,以便只看到错误,请确保只有(E)被选中。 我个人也喜欢select(W)警告select以及(E)错误。
希望有所帮助!
有(最后)一个工具可用于Android的适当的JavaScriptdebugging – http://www.jshybugger.org/
特征:
- 添加/删除/启用/禁用行断点
- 观看表情
- 步入/结束/结束
- 暂停例外
- 调用堆栈导航
- 局部variables检查
- 远程控制台
- JavaScript语法和运行时错误报告
- 查看/编辑/删除本地存储项目
- 查看/编辑/删除会话存储项目
- 查看/编辑/删除WebSQL数据库logging(观看video)
- 查看页面资源(图片,脚本,HTML)
- 远程控制台支持增强(堆栈跟踪)
- debugging器:增强对象检查
- debugging器:有条件的断点
- debugging器:继续在这里
我很容易分两步解决。
更改日志logging的级别
在config.xml中添加这一行
<log level="DEBUG"/>
运行科多瓦日志
这是一个bat文件,你可以运行并跟踪所有的日志消息到你的phonegap项目,然后导航到\platforms\android\cordova
然后打开log.bat
,现在可以使用命令行模拟你的应用程序
cordova emulate
并且日志将显示在打开log.bat
时popup的cmd中
如果您愿意在某处设置NodeJS ,则可以使用John Boxall的iBug进行一些扩展debugging,尽pipe这是为iPhonedevise的,但我已经在Android上进行了testing,并且工作正常。 这基本上是移动设备的萤火虫。 我指向我的fork导致节点改变了很多,约翰的代码不会运行在一个现代nodeJS上,所以我修补了它在nodeJS 0.2.3上运行,在更新版本的nodeJS上运行YMMV。
如果你使用console.log
你可以做简单的打印语句。 以及使用adb
查看它们,您可以在设备上使用日志查看器并在其中查看日志。 更多信息: http : //www.technomancy.org/android/javascript-debugging/
捕获exception并在控制台中显示的最佳解决scheme是:
window.onerror = function(msg, uri, line) { console.log(msg + uri + line); }
在Eclipse中,你可以添加一个钩子到android模拟器后退button,并在飞行中检查一个值。 添加onBackPressed
事件pipe理器,并从那里调用JavaScript控制台。 从eclipsedebugging的angular度来看,你将把一个String
variables的值改为你想要检查的值,并通过调用super.loadUrl
把它传递给你的应用程序。
请参阅下面的代码。 不要忘记从DDMS视图启用应用程序的debugging
public class MyActivity extends DroidGap { private String js = ""; @Override public void onBackPressed() { //add a breakpoint to the follow line //and change the value for "js" variable before continuing execution super.loadUrl("javascript:console.log(" + js + ")"); return; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setBooleanProperty("keepRunning", false); super.setIntegerProperty("splashscreen", R.drawable.splash); super.loadUrl("file:///android_asset/www/index.html", 20000); } }
如果您使用的是Phonegap Build,并希望使用Chrome控制台进行debugging,那么这里有一个可行的解决scheme。 可以使用USBdebugging来debuggingWebViews( https://developer.chrome.com/devtools/docs/remote-debugging#debugging-webviews )
首先,确保你的widget标签包含xmlns:android =“http://schemas.android.com/apk/res/android”;
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="me.app.id" version="1.0.0">
然后添加以下内容
<gap:config-file platform="android" parent="/manifest"> <application android:debuggable="true" /> </gap:config-file>
它适用于Nexus 5,Phonegap 3.7.0。
<preference name="phonegap-version" value="3.7.0" />
在Phonegap Build中构build应用程序,安装APK,将手机连接到USB,在手机上启用USBdebugging,然后访问chrome:// inspect。
来源: https : //www.genuitec.com/products/gapdebug/learning-center/configuration/
debuggingPhoneGap / Apache Cordova应用程序使用GapDebug很容易
-
在PC / Mac上运行GapDebug
-
启用Android设备上的开发人员选项和USBdebugging(设置 – >开发人员选项(ON) – > USBdebugging(开))
-
如果找不到开发者选项(设置 – >关于电话 – >单击内部版本号7次)
- 你可以从你的GapDebug中debugging你的应用程序
有关图像的详细步骤,请参阅http://phonegappro.com/tutorials/debugging-phonegap-applications-apache-cordova/
Phonegapdebugging仍然存在。 我所知道的是在设置中findphonegap build并打勾debugging应用程序选项。 它会在你保存的时候重build你的应用程序。 debuggingbutton将与重build选项一起出现在应用程序页面中。 (这个服务也使用内置的weinre)
我也发现最快的另一个选项是jsconsole.com 。 与其他debugging方法相比,它非常容易设置,并且几乎不需要configuration,您需要安装诸如驱动程序和SDK之类的许多东西。
注意!
在PhoneGap 10中,当你构build你的应用程序和任何在应用程序之外的请求(就像没有互联网一样)失败时,你将不得不在你的config.xml
<gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" /> <access origin="*" /> <allow-navigation href="*" /> <allow-intent href="*" />
我拉着我的头发,试图让任何远程debugging工具只工作,以查明外部请求被默认阻止。 这救了我。
更新:现在PhoneGap被称为Apache Cordova,如果你想用它来开发Android应用程序,你必须安装Android Studio。 要从Android Studio访问logcat控制台,请打开您的Android项目(它是Cordova项目中的platform / android文件夹),然后selectTools-> Android-> Android Device Monitor。
Android设备监视器(AVD)可以单独运行,因此您可以创build直接访问来避免所有这些path。 AVD将自动从您的仿真器上启动的日志消息,它允许您轻松设置filter来减less从仿真器接收的大量输出。 我特别喜欢按应用程序名称进行过滤。