2

我正在尝试在我的 Android 应用程序中调试 WebView。我做了一些研究,发现 weinre 非常有用。我使用的是 PhoneGap PhoneGap 调试工具的 weinre。
然而,让我感到困惑的是,它只有在我使用它在本机浏览器中调试时才能正常运行,而不是在我打开我的应用程序时运行。当我打开我的应用程序时,它不会显示 web 视图供我检查。

任何人都知道如何使它与 webview 一起工作?或者我必须在本地安装 Weinre 才能使其正常工作?

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button)this.findViewById(R.id.button1);
        this.webview = (WebView)this.findViewById(R.id.webView1);
        webview.setWebChromeClient(new WebChromeClient());


        final String htmlPre = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"> <script src='http://172.16.0.135:8080/target/target-script-min.js#anonymous'></script> <script>alert('hello')</script></head><body style='margin:0; pading:0; background-color: black;'>";  
        final String htmlCode = 
                " <embed style='width:100%; height:100%' src='http://www.platipus.nl/flvplayer/download/1.0/FLVPlayer.swf?fullscreen=true&video=http://www.platipus.nl/flvplayer/download/pl-600.flv&autoplay=true' " +
                "  autoplay='true' " +
                "  quality='high' bgcolor='#000000' " +
                "  name='VideoPlayer' align='middle'" + // width='640' height='480' 
                "  allowScriptAccess='*' allowFullScreen='true'" +
                "  type='application/x-shockwave-flash' " +
                "  pluginspage='http://www.macromedia.com/go/getflashplayer' />" +
                "";
        final String htmlPost = "</body></html>";

        this.webview.getSettings().setJavaScriptEnabled(true);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                webview.loadDataWithBaseURL("null", htmlPre+htmlCode+htmlPost, "text/html", "UTF-8", null);
            }
        });
Now I'm trying something new like this and it does not work anymore, any suggestion? Thanks :)
4

3 回答 3

0

我不知道您是否知道如何在使用 webviews loadDataWithBaseURL(..) 时使用 weinre 进行调试,但这是我的解决方案。您需要使用第一个参数作为运行 weinre 的本地地址:

 m_webView.loadDataWithBaseURL("http://192.168.1.3:8080/", ...)

在修复之前,我正在使用这个:

 m_webView.loadDataWithBaseURL("file:///android_asset/",

我的第一个参数是 assets 文件夹,因为我确实有一些 javascript 和 css 文件。如果需要,您可以将这些文件移动到 PC 上的 weinre 文件夹(staticWebDir - 通常位于 c:\Users[yourusername]\AppData\Roaming \npm\node_modules\weinre\web) 而不是您的移动网页将拥有您使用的所有样式和 javascript。

于 2014-08-28T21:27:56.627 回答
0

我在我的开发笔记本电脑(debian)上安装了 weinre,并且在任何浏览器和 Android webview 上都像魅力一样工作。

就像使用 node.js 安装 weinre 一样简单:

sudo npm -g 安装 weinre

文档中的文档

最后提示:启动服务器时记得更改

--boundHost [主机名 | IP 地址 | -全部-]

如果您的服务器不在本地主机上。

于 2013-10-08T09:33:25.997 回答
-1

jsHybugger: http: //www.jshybugger.org/在 webView 或本机浏览器中工作。

它允许您设置断点、单步执行、捕获异常以及与 JS/DOM 环境交互。您可以从 Eclipse 或远程桌面上的 Chrome 或与 Chrome 兼容的调试器中使用它。它可以与创建自己的 webView 的应用程序一起使用。

但是,您必须安装一些文件——但使用起来可能并不比 weinre 复杂。它确实广泛地修改了 JS 文件(动态地,对用户透明)以启用所有这些调试——webKit 确实应该原生支持 javascript 调试。

于 2013-05-26T13:09:47.000 回答