作为示例,我构建了一个HTML5 CSS3和JS应用程序。如果我想在Android手机上运行它,我必须将所有这些东西放在资产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呢? 请帮忙!
答案 0 :(得分: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支持的(减少)差距。
下一步是允许该webview中的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函数,本机代码可以简单地调用它来传递任何必需的参数。诀窍在于该调用是否同步,具体取决于平台。