I\'m new about android programming and android studio. I researched crosswalk embed API for my project and tried to embed it in android studio. But I couldn\'t be succesfull
Here is another tutorial on how to get Crosswalk into Android Studio, using this method you can select which processor architecture you want to target, thus reducing the APK file size to around 20 mb instead of the around 40 mb you end up with using the above method.
http://www.zhuatang.com/en/as-tips-3.jsp
When you create the resource folder in the tutorial be sure to use: File->New->Folder->Res Folder
At the end of the tutorial there is also a Github link to a functioning project created with the method described in the tutorial: https://github.com/zhsoft88/TestCrosswalkEmbed2
Following: https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/
Open AndroidStudio to project view in app folder edit build.gradle:
repositories {
maven {
url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'}}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'org.xwalk:xwalk_core_library:10.39.235.15'}
sync project.
add this view in layout xml.
<org.xwalk.core.XWalkView
android:id="@+id/xwalkWebView"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
/>
In activity or fragment:
import org.xwalk.core.XWalkPreferences;
import org.xwalk.core.XWalkView;
in onCreate:
XWalkView xWalkWebView=(XWalkView)findViewById(R.id.xwalkWebView);
xWalkWebView.clearCache(true);
xWalkWebView.load("http://...", null);
// turn on debugging
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
I've successfully used WebRTC in XWalkView on android 4.3 and 4.4 after failing with the out of the box WebView. I think the android 5 Lollipop is up to par with latest chromium.
To embed into new projects or to build with Android Studio 3, you have to change the following four files
This is a sample app.gradle
file
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "online.saai.crosswalkandroid3"
minSdkVersion 17
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
maven {
url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2/'
}
}
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:27.1.0'
}
}
dependencies {
compile 'org.xwalk:xwalk_core_library:23.53.589.4'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Things to consider,
23.53.589.4
the min sdk version should be >= 16 here I used 17, ie minSdkVersion 17
repositories { ... }
and compile dependency compile 'org.xwalk:xwalk_core_library:23.53.589.4'
should be given to download latest crosswalkconfigurations.all { ... }
Once this is done replace your .xml
file (activity_main.xml
) with the following content, so that it can use crosswalk view
<?xml version="1.0" encoding="utf-8"?>
<org.xwalk.core.XWalkView android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</org.xwalk.core.XWalkView>
Now MainActivity.java
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);
mXWalkView.load("http://crosswalk-project.org/", null);
}
}
Finally allow your application to use internet and other permissions that you need in your application, got to `AndroidManifest.xml' and add this permissions. Here is a sample
<manifest ... />
<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" />
...
<application ... />
Thanks for this Rubber Duck - it really helped me!
Note: if you're adding crosswalk to do webRTC, you need to add these to your manifest or the outgoing video/audio will not work (maybe you don't need them all, but it works for me!);
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
This is needed as well to load images via html5, as hinted here
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mXwalkView != null) {
mXwalkView.onActivityResult(requestCode, resultCode, data);
}
}