How to add crosswalk webview in my own android library module?
I am in the development of an Android library module which has to include Crosswalk Webview. I create the library using Github Sonatype (https://github.com/sonatype/). It works fine without Crosswalk Webview. I tried the following 3 methods to include Crosswalk.
Method 1:
Add Crosswalk Webview library in my library project app gradle
Error : (Compile error)
Failed to resolve: org.xwalk:xwalk_core_library:18.48.477.13
Method 2:
Add crosswalk aar file in my library project
Reference link for adding aar file How to import a .aar file into Android Studio 1.1.0 and use it in my code
I have downloaded Crosswalk Webview from https://download.01.org/crosswalk/releases/crosswalk/android/stable/18.48.477.13/
Error: (Compile error)
Failed to resolve: MyLIBApplication:xwalk_core_library_java:unspecified
Method 3:
Add crosswalk jar file in my library project
Download Link https://download.01.org/crosswalk/releases/crosswalk/android/stable/18.48.477.13/
Error : This method no compilation error but it give run time error that was java.lang.NoClassDefFoundError: org.xwalk.core.R$string
Note: I tried both jar (ordinary, share mode) files
Solution 1:
I create a new app from the webview to XWalkView to render the three.js stl loader demo, which is not support by the webview no matter WebGlRenderer or CanvasRenderer. Here is the process how to use the crosswalk module:
Step 1:File->New->Import Module
step 2 select the module and rename if you need
step 3 choose all the option
here android studio may ask you to update, update it
step 4 process the module dependency
After this ,the Gradle Build Running automatically Here We have finished the crosswalk inport.
step 5 use the XWalkView
add this priviledges to AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
add hardware acceleration on to application node of AndroidManifest.xml
android:hardwareAccelerated="true"
add this to layout file
<org.xwalk.core.XWalkView
android:id="@+id/xWalkView"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</org.xwalk.core.XWalkView>
add this to activity
XWalkView mXWalkView = (XWalkView) findViewById(R.id.xWalkView);
mXWalkView.load("http://192.168.1.42/test", null);
Here we finished this is the result I use webview and XWalkView to render three.js STL loader.
webview not support
XWalkView supports well
Haha it works.
Follow is the another old implementation , and you can also refer to this good [post] or doc11.
here is the source code.
Download proper Crosswalk Android webview package and unpackage it from https://crosswalk-project.org/documentation/downloads.html
Copy xwalk_core_library_java.jar from crosswalk libs to app/libs/ in the android studio project, and write click on the file, select the "Adds As Library"
Copy other contents under crosswalk libs to app/src/main/jniLibs/
Make an Android Resource dir res2, and copy files in crosswalk res dir to this dir.
Add this to AndroidMenifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
and add android:hardwareAccelerated="true" to application node.to use hardware acceleration which is needed by crosswalk webview
add this to layout
<org.xwalk.core.XWalkView android:id="@+id/webview"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</org.xwalk.core.XWalkView>
add this to Activity
XWalkView mXWalkView = (XWalkView) findViewById(R.id.webview);
mXWalkView.load("http://xxxxxx.com", null);
if you want to debug romote add this.
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);