我是phonegap和android开发的新手。我可以知道如何在模拟器上调试JavaScript错误吗?我听说过ADB,我知道如何在Windows 7系统上使用和安装它吗?我有一个用jsonp调用的ajax,但是模拟器没有响应。但是,我可以使用Windows上的浏览器来调用该ajax。我可以知道怎么了吗?
Answers:
您至少可以通过在JavaScript中调用console.log()将调试内容记录到adb控制台中。也许就足够了?
要使用adb查看日志输出,请导航到您的SDK platform-tools /目录并执行:
adb logcat
请参阅logcat命令行工具
2016年11月更新:似乎不再起作用。
最简单,最强大的方法之一是使用http://debug.phonegap.com(如果您愿意,它会在后台使用Weinre)。你刚才
r4nd0m
,<script src="http://debug.phonegap.com/target/target-script-min.js#r4nd0m"></script>
你的index.html
http://debug.phonegap.com/client/#r4nd0m
,您将立即调试您的移动Web应用程序。您可以做的事情(类似于Firebug或Web Inspector):
现在,您可以使用Chrome开发者工具远程调试Android Phonegap应用!我在这里写了说明:使用Chrome Dev Tools远程调试Phonegap应用
Android模拟器的步骤:
另请参阅远程调试Android设备入门
是的,您在console.log中遇到日志错误,并在Eclipse中显示LogCat选项卡。在那里,将显示Web控制台消息(包括JS错误)。这有点冗长,因此您必须进行过滤以仅显示Web Console标记,但是效果很好。在此处进行说明:在Android和Android上使用PHONEGAP显示CONSOLE CONSOLE.LOG输出和JAVASCRIPT错误
(最后)有一个工具可用于对Android进行正确的JavaScript调试-http: //www.jshybugger.org/
特征:
- 添加/删除/启用/禁用断点
- 观看表情
- 进入/进入/离开
- 例外暂停
- 调用堆栈导航
- 局部变量检查
- 远程控制台
- javascript语法和运行时错误报告
- 查看/编辑/删除本地存储项目
- 查看/编辑/删除会话存储项
- 查看/编辑/删除WebSQL数据库记录(观看视频)
- 查看页面资源(图像,脚本,html)
- 远程控制台支持增强(stacktrace)
- 调试器:增强的对象检查
- 调试器:条件断点
- 调试器:继续到这里
我分两步轻松解决了这个问题。
在config.xml中添加此行
<log level="DEBUG"/>
这是一个bat文件,您可以运行并跟踪所有日志消息进入phonegap项目并进行导航,\platforms\android\cordova
然后打开log.bat
,现在可以使用命令行来模拟您的应用程序
cordova emulate
日志将显示在打开的cmd中 log.bat
如果使用console.log
,则可以执行简单的打印语句。除了adb
查看日志外,您还可以在设备上使用日志查看器并在其中查看日志。更多信息:http : //www.technomancy.org/android/javascript-debugging/
捕获异常并在您的控制台中显示的最佳解决方案是以下代码:
window.onerror = function(msg, uri, line) {
console.log(msg + uri + line);
}
在Eclipse中,您可以将钩子添加到android仿真器的后退按钮,并即时检查值。添加onBackPressed
事件管理器,然后从那里调用JavaScript控制台。从eclipse调试的角度来看,您将把String
变量的值更改为要检查的变量,然后通过调用将变量传递给您的应用程序super.loadUrl
。
请参见下面的代码。不要忘记从DDMS视图启用应用程序调试
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控制台进行调试,请使用以下可行的解决方案。可以使用USB调试(https://developer.chrome.com/devtools/docs/remote-debugging#debugging-webviews)调试WebView。
首先,请确保您的小部件标签包含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中构建应用程序,安装APK,将手机连接到USB,在手机上启用USB调试,然后访问chrome:// inspect。
资料来源:https : //www.genuitec.com/products/gapdebug/learning-center/configuration/
Phonegap调试仍然存在。我知道的是在设置中找到的phonegap构建中,然后勾选debug application选项。保存后,它将重新构建您的应用程序。调试按钮将与重建选项一起出现在应用程序页面中。(此服务还使用内置的weinre)
我也发现最快的另一个选择是jsconsole.com。与您需要安装许多驱动程序和SDK之类的其他调试方法相比,它非常易于设置并且几乎不需要任何配置。
注意!
在PhoneGap 10中,当您构建应用程序并且应用程序外部的任何请求(好像没有互联网)失败时,都必须在config.xml中添加它
<gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" />
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />
我竭尽全力试图使任何远程调试工具正常工作,只是发现外部请求默认是被阻止的。这救了我。
使用GapDebug可以轻松调试PhoneGap / Apache Cordova应用程序
从https://www.genuitec.com/products/gapdebug/下载并安装GapDebug
在您的PC / Mac上运行GapDebug
在Android设备上启用开发者选项和USB调试(设置->开发者选项(ON)-> USB调试(ON))
如果未找到开发人员选项(设置->关于电话->单击内部版本号7次)
参考
更新:如今PhoneGap被称为Apache Cordova,如果您想使用它来开发Android应用程序,则必须安装Android Studio。要从Android Studio访问logcat控制台,请打开您的Android项目(它是Cordova项目中的platform / android文件夹),然后选择菜单工具-> Android-> Android设备监视器。
Android设备监视器(AVD)可以单独运行,因此您可以创建直接访问权限以避免所有此类路径。AVD将自动从使用Cordova启动的仿真器中获取日志消息,它使您可以轻松设置过滤器,以减少从仿真器接收的大量输出。我特别喜欢按应用程序名称过滤。