1

例如,我构建了一个 HTML5 CSS3 和 JS 应用程序。如果我想在 Android 手机上运行它,我必须将所有这些东西放在 assets www 文件夹中,然后我必须将 cordova.jar 导入到 lib 并进行这些更改

public class Test  extends DroidGap {

 @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }

但会发生什么。这个应用程序在哪里运行?phonegap 在做什么?请帮忙!

4

1 回答 1

3

在运行时,PhoneGap 通过在设备上实例化浏览器组件来工作。这是一个无铬浏览器,这意味着它没有地址栏或前进/后退按钮。最终开发人员的应用程序由加载到浏览器组件中的 HTML、JavaScript 和 CSS 组成。PhoneGap 提供了一个 JavaScript API,允许开发人员代码访问设备功能,目前默认浏览器中加载的网站无法访问该功能。PhoneGap 使用的 Web 视图与本机操作系统使用的 Web 视图相同。在 iOS 上,这是 Objective-C UIWebView 类;在 Android 上,这是 android.webkit.WebView。

显示 Web 组件的想法是从 Web 视图开始的!这个 webview 应该能够加载 HTML(本地或远程),并运行 Javascript 和 CSS。所有主要的智能手机都带有一个 XYZWebView,你唯一需要注意的是它们之间的 HTML/CSS 支持(减少)差距。

下一步是允许该 web 视图中的 Javascript 代码调用您的本机代码,反之亦然。所有平台都可以做到这一点,但不幸的是,它们的做法都不同。

Android - Java objects are marshalled into the webview, and native methods can be called directly.

iOS - Javascript needs to make a call to a URL with a custom scheme (think native://mycall), which is intercepted by the native code.

Windows 8 - The web view exposes a window.external.notify function that Javascript can call at will.

反向桥通常要容易得多:如果 webview 公开了一个全局 javascript 函数,本机代码可以简单地调用它并传递任何所需的参数。诀窍在于该调用是否同步,具体取决于平台。

于 2013-07-04T18:06:27.630 回答