45

我正在编写一个游戏应用程序,它会扭曲 SVG 图形,直到他们喊出“叔叔!”。当从 Web 服务器托管时,该程序在 iPad (safari/webkit) 上运行良好,这里不再赘述。只要使用最新版本的 Chrome(如 v.25 或更高版本),它在从 Web 服务器托管的 Android 平板电脑上也可以正常工作。

该程序根本不访问互联网,而是使用其 SVG 图形、运行 Javascript 并将状态存储在 HTML5 localStorage() 中。

如果我在旧版 Android 平板电脑的“默认浏览器”上运行程序,SVG 图形将无法正确处理,因此我需要平板电脑上最新版本的 Chrome。

我刚刚为我的应用创建了一个 APK,当我将它安装在我全新的 Android 平板电脑上时,发现它不使用 Chrome 浏览器。相反,它似乎使用嵌入在 APK 中的浏览器,或者至少从 APK 中调用,而平板电脑中存在剩余库。

我使用 APK 的目的是让我的代码在最近的 webkit 浏览器中显示,这似乎意味着在 Chrome 环境中运行。

对于我的问题,我需要改变一些东西。但是什么?

  • 在我的 APK 中嵌入 Chrome 浏览器?
  • 告诉 APK 使用平板电脑的 Chrome 浏览器?
  • 放弃使用 APK 分发程序?
  • ???

亲爱的读者们对我有所了解吗?

谢谢,
杰罗姆。

4

6 回答 6

54

我会推荐Crosswalk,但是,自 2017 年 3 月 19 日以来,它已被宣布为 EOL(更多信息见下文)。尽管如此,它仍然是迄今为止最稳定的解决方案,我们的团队目前在生产应用程序中使用它。简而言之,它在您的 apk 中打包了一个基于 Chromium 的 webview,并由 Intel 提供支持。您可以从 Android 4.X 开始使用它。

官方推销:

Crosswalk 是一个用于雄心勃勃的 HTML5 应用程序的 Web 运行时。它提供了现代浏览器的所有功能,并结合了深度设备集成和用于添加本机扩展的 API。它特别适用于移动设备,同时支持 Android 和 Tizen。

对于Cordova 4.0.0及更高版本,有一个官方的 Crosswalk 插件,使其非常容易启动和运行:https ://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

如果您的 Cordova 项目正在运行,您需要做的就是

cordova plugin add cordova-plugin-crosswalk-webview --save

添加 Crosswalk webview 插件。下一个构建将获取所有依赖项并很好地打包所有内容。

安卓 4.4.x

在 Android 4.4 上,您的混合应用程序将在基于 Chromium 的 WebView 上运行,但是,它将永远停留在同一版本上(如果我没记错的话,它是 Chromium 33)。在我看来,最好也在这里使用 Crosswalk。

安卓 5.0+

如果您为 Android 5.0 及更高版本编写代码,则 Chromium WebView 将通过 Google Play 更新。更多信息在这里:http: //developer.android.com/about/versions/lollipop.html#WebView

CrossWalk 版本 20 及更高版本

CrossWalk 将从版本 20 开始放弃对 Android 4.0.X 的支持。如果您确实需要在支持矩阵中保留 4.0.X,请不要升级。我建议为 Android 5.X 及更高版本构建另一个 APK,它根本不再包含 CrossWalk。有关此的更多信息

Crosswalk v23 是最后一个版本 (EOL)

Crosswalk 已决定在 2017 年 1 月发布最后一个稳定版本,即第 23 版。这将结束对 Crosswalk 的官方支持,并将错误修正等留给社区。文中的更多信息

注意!

我发现在 Crosswalk 上运行我的移动混合应用程序比我依赖系统 webview 时具有更好的图形性能(在 Android 5.x 上的 Sony Xperia ZL 上测试,因此 webview 是通过 play store 更新的)。为什么会这样,我还不知道,也许 Crosswalk 以某些方式配置 Webview?这需要进一步调查。

于 2013-09-13T12:57:30.560 回答
7

尝试https://github.com/thedracle/cordova-android-chromeview 它是一个新项目,需要更多工作,但将 chromeview 项目与 cordova 结合起来,将 chromium 嵌入到 cordova android 应用程序中

于 2013-09-05T05:53:47.343 回答
5

这看起来是一个很有前途的选择:Crosswalk + Cordova

好处:

  • 使用 Cordova API
  • 使用人行横道 API
  • Cordova 将使用 Crosswalk 作为其 web 视图
  • Crosswalk 不使用基于 Chromium 的 Android webview

Github 仓库:https ://github.com/crosswalk-project/crosswalk-cordova-android 。

于 2014-06-30T15:41:32.177 回答
4

2014 年更新的答案Android 4.4 及更新版本默认使用 Chrome webview。这目前基于 Chrome 版本 30。

于 2014-04-11T09:05:44.753 回答
0

一种选择是启动带有相应站点链接的 Chrome 浏览器。

这不是一个很好的用户体验,但可能会让你有所收获。

您可以使用以下内容检查并启动 Chrome 浏览器:

    String url = "http://www.totallyawesomeurl.com";
    String packageName = "com.android.chrome";

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    browserIntent.setPackage(packageName);
    browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    List<ResolveInfo> activitiesList = context.getPackageManager().queryIntentActivities(
            browserIntent, -1);
    if(activitiesList.size() > 0) {
        // Found the browser on the device, launch it
        context.startActivity(browserIntent);
    } else {
        // The browser isn't installed, so we should prompt the user to get
        Intent playStoreIntent = new Intent(Intent.ACTION_VIEW);
        playStoreIntent.setData(Uri.parse("market://details?id="+packageName));
        playStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(playStoreIntent);
    }

值得注意的是,Android 版 Chrome 仅适用于 ICS 设备及更高版本,因此您可能需要确保将 minimumTargetSDK 设置为 14,并且如果您的站点在具有包名称的 Opera 中运行,则可能切换到使用 Opera 用于旧版本的 Android com.opera.browser"

于 2013-08-08T09:41:46.547 回答
-6

事实证明我的 Javascript 是错误的。当我避免某个错误时,在旧浏览器上一切正常。我通过能够为 Windows 加载一个古老版本的 Safari 来找到它。

我的问题是这样的:

var newValue = parseInt("030");

这返回 24,因为“030”是以 8 为底的,对吧?

我改变了一些东西来强制基地,现在一切正常:

var newValue = parseInt("030", 10);
于 2014-02-11T04:01:02.807 回答