crosswalk 快速入门使用

来源:互联网 发布:tcpudp端口号 编辑:程序博客网 时间:2024/05/22 19:47

Open the file:
CrosswalkDemo/app/build.gradle

First we need to add the Maven repository like this:

repositories {    maven {        url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'    }}


Then add this toyour dependencies:ependencies:

compile 'org.xwalk:xwalk_core_library:21.51.546.7'
Then add this toyour android

 productFlavors {        armv7 {            ndk {                abiFilters "armeabi-v7a", ""            }        }        x86 {            ndk {                abiFilters "x86", ""            }        }    }}
the layout

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="fill_parent"              android:layout_height="fill_parent"              android:background="#000000">    <org.xwalk.core.XWalkView        android:id="@+id/xwalkWebView"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:background="#000000"        /></LinearLayout>
the avtivity

private XWalkView xWalkWebView;@Overrideprotected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   xWalkWebView=(XWalkView)findViewById(R.id.xwalkWebView);   xWalkWebView.load("https://crosswalk-project.org", null);   // turn on debugging   XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);}@Overrideprotected void onPause() {   super.onPause();   if (xWalkWebView != null) {      xWalkWebView.pauseTimers();      xWalkWebView.onHide();   }}@Overrideprotected void onResume() {   super.onResume();   if (xWalkWebView != null) {      xWalkWebView.resumeTimers();      xWalkWebView.onShow();   }}@Overrideprotected void onDestroy() {   super.onDestroy();   if (xWalkWebView != null) {      xWalkWebView.onDestroy();   }}

Crosswalk在安卓上需要一些权限。打开这些权限,需要修改AndroidManifest.xml文件, 在<application>元素上面添加权限。Crosswalk WebView最少需要如下权限去取渲染页面:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

您可以添加其他权限,这取决您的应用开发需求。不过,只添加应用真正需要的权限,是一种公认的安全做法。

获取地理位置信息

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

获取照相机,摄像机以及麦克风

<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.RECORD_AUDIO" />

写数据到SD Card

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

保持CPU运行状态

<uses-permission android:name="android.permission.WAKE_LOCK" />
  1. 这里主要的不同是传到load()方法中的参数是一个本地资源的URL,而不是一个远程的Web URL:

    mXWalkView.load("file:///android_asset/index.html", null);

    URL是以"file:///android_asset/"为前缀,后面添加上您需要加载的文件路径,路径名字是相对于assets/目录。

    当首页HTML网页加载之后,网页中的其他URLs将会被当做标准的Web应用来处理,同时会把assets/目录作为应用的根目录。例如,如果在assets/目录下您有一个page2.html的网页,您可以用一个标准的超链接来链接到这个网页:

    <a href="page2.html">Page 2</a>

    类似地,任何CSS或者媒体文件(音频,视频)文件都可以被添加到assets/目录并像平常那样使用,例如:

    <!--index.html文件中的音频标签指向文件assets/audio/mytrack.ogg--><audio src="audio/mytrack.ogg">/*index.html中的CSS声明指向图片assets/images/myimage.png*/.myclass {  background-image: url(images/myimage.png);}

使用Proguard压缩APK文件 (可选)

ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具。在生成您最终的APK文件时,这些选项是可选的。如果您针对您的Java代码编写了一些Proguard配置文件,那么或许您也想要添加一些Proguard规则来压缩Crosswalk库的大小: 针对Crosswalk的Proguard规则。

对Crosswalk使用Proguard的目的是压缩其大小而不是出于反编译的考虑。注意在Crosswalk中有很多直接把类名作为字符串处理的反射代码。因此压缩和混淆主要影响的是Chromium部分。

调试

调试运行在embedded Crosswalk Webview中的Web程序,请参照下面内容修改MainActivity.java文件:

package org.crosswalkproject.xwalkembed;import org.xwalk.core.XWalkPreferences;import org.xwalk.core.XWalkView;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {  private XWalkView mXWalkView;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    mXWalkView = (XWalkView) findViewById(R.id.activity_main);    // turn on debugging    XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);    mXWalkView.load("file:///android_asset/index.html", null);  }}

关键的一行是:

XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);

XWalkPreferences.setValue()是为Crosswalk设置全局参数的;在这个例子中,您打开的是调试选项。




0 0