当前位置: 首页 > 工具软件 > Crosswalk > 使用案例 >

crosswalk 快速入门使用

谭曦
2023-12-01

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 to your dependencies:ependencies:

compile 'org.xwalk:xwalk_core_library:21.51.546.7'
Then add this to your 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;

@Override
protected 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);
}

@Override
protected void onPause() {
   super.onPause();
   if (xWalkWebView != null) {
      xWalkWebView.pauseTimers();
      xWalkWebView.onHide();
   }
}

@Override
protected void onResume() {
   super.onResume();
   if (xWalkWebView != null) {
      xWalkWebView.resumeTimers();
      xWalkWebView.onShow();
   }
}

@Override
protected 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设置全局参数的;在这个例子中,您打开的是调试选项。




 类似资料: