android 判断view isviewcovered,chromeview: Android WebView implementation that uses the latest Chromiu...

Deprecation Notice

This project is un-maintained. The recommended alternative is

the Crosswalk Project.

I did not have the time to keep the project up to date. In the mean

time, the fine folks at Intel did a great job of embedding Chromium

using the Content Shell API, which is what Chromium's developers

intended. Therefore, I cannot justify spending any time on this.

The original README and the code are here for historical purposes.

I think that the Crosswalk Project

will meet all your embedding needs, and I'm contributing to it.

ChromeView

ChormeView works like Android's WebView, but is backed by the latest Chromium

code.

Why ChromeView

ChromeView lets you ship your own Chromium code, instead of using whatever

version comes with your user's Android image. This gives your application

early access to the newest features in Chromium, and removes the variability

due to different WebView implementations in different versions of Android.

Setting Up

This section explains how to set up your Android project to use ChromeView.

Get the Code

Check out the repository in your Eclipse workspace, and make your project use

ChromeView as a library. In Eclipse, right-click your project directory, select

Properties, choose the Android category, and click on the Add button in

the Library section.

Copy Data

Copy assets/webviewchromium.pak to your project's assets directory.

Star this bug if

you agree that this is annoying.

In your Application subclass, call ChromeView.initialize and pass it the

application's context. For example,

Initialize Chromium

import us.costan.chrome.ChromeView;

import android.app.Application;

public class MyApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

ChromeView.initialize(this);

}

}

Now you can use ChromeView in the same contexts as you would use WebView.

Star some bugs

If you use this project and want to help move it along, please star the

following bugs.

Usage

To access ChromeView in the graphical layout editor, go to the Palette,

expand the Custom and Library Views section, and click the Refresh button.

ChromeView supports most of the WebView methods. For example,

ChromeView chromeView = (ChromeView)findViewById(R.id.gameUiView);

chromeView.getSettings().setJavaScriptEnabled(true);

chromeView.loadUrl("http://www.google.com");

JavaScript

ChromeView's addJavaScriptInterface exposes public methods that are annotated

with @ChromeJavascriptInterface. This is because WebView's

@JavascriptInterface is only available on Android 4.2 and above, but

ChromeView targets 4.0 and 4.1 as well.

import us.costan.chrome.ChromeJavascriptInterface;

public class JsBindings {

@ChromeJavascriptInterface

public String getHello() {

return "Hello world";

}

}

chromeView.addJavascriptInterface(new JsBindings(), "AndroidBindings");

Cookies

ChromeCookieManager is ChromeView's equivalent of CookieManager.

ChromeCookieManager.getInstance().getCookie("https://www.google.com");

Faster Development

To speed up the application launch on real devices, remove the libs/x86

directory. When developing on Atom devices, remove the ARM directory instead.

Remember to git checkout -- . and get the library back before building a

release APK.

Internet Access

If your application manifest doesn't specify the

INTERNET permission,

the Chromium code behind ChromeView silentely blocks all network requests. This

is mentioned here because it can be hard to debug.

Building

The bulk of this project is Chromium source code and build products. With the

appropriate infrastructure, the Chromium bits can be easily updated.

crbuild/vm-build.md contains step-by-step instructions

for setting up a VM and building the Chromium for Android components used by

ChromeView.

Once Chromium has been successfully built, running

crbuild/update.sh will copy the relevant bits from the

build VM into the ChromeView source tree.

Issues

Attempting to scroll the view (by swiping a finger across the screen) does not

update the displayed image. However, internally, the view is scrolled. This can

be seen by displaying a stack of buttons and trying to click on the topmost

one. This issue makes ChromeView mostly unusable in production.

The core issue is that the integration is done via AwContent in the

android_webview directory of the Chromium source tree, which is experimental

and not intended for embedding use. The "right" way of doing this is to embed

a ContentView from the content directory, or a Shell in content/shell.

Unfortunately, these components' APIs don't match WebView nearly as well as

AwContent, and they're much harder to integrate. Pull requests or a fork would

be welcome.

This repository is rebased often, because the large files in lib/ would

result in a huge repository if new commits were created for each build. The

large files are Chromium build products.

Contributing

Please don't hesitate to send your Pull Requests!

Please don't send pull requests including the binary assets or code extracted

from Android (assets/, libs/, src/com/googlecode/ and src/org/android).

If your Pull Request requires updated Android bits, mention that in the PR

description, and I will rebuild the Android bits.

Copyright and License

The directories below contain code from the

The Chromium Project, which is subject to the

copyright and license on the project site.

assets/

libs/

src/com/googlecode

src/org/chromium

Some of the source code in src/us/costan/chrome has been derived from the

Android source code, and is therefore covered by the

Android project licenses.

The rest of the code is Copyright 2013, Victor Costan, and available under the

MIT license.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值