Thanks for this amazing detailed answer. But we already use and integrate xwalk and I agree its an essential project for android. But I'm lost on automated testing with webdriver not the use of crosswalk. On Apr 22, 2015 5:06 PM, "Alexander Biemann" <[email protected]> wrote:
> David, > > This is what I have done for Android ... > > *OVERVIEW* > > 1) In Android Studio, start a new project and have the XWalkView download > as a dependency > 2) Create a blank Activity with a RelativeLayout that fills the screen. > Give it an ID. > 3) Programmatically instantiate XWalkView and add it to the RelativeLayout > 4) Load the HTML > > It's an easy overview - but in practice about a day's work because > https://crosswalk-project.org/documentation/embedding_crosswalk.html seems > outdated. > > *DETAILS* > > *1) update the build.gradle in your project to look like :* > > buildscript { > repositories { > jcenter() > maven { > url ' > https://download.01.org/crosswalk/releases/crosswalk/android/maven2' > } > } > dependencies { > classpath 'com.android.tools.build:gradle:1.0.0' > } > } > apply plugin: 'com.android.application' > > repositories { > jcenter() > maven { > url ' > https://download.01.org/crosswalk/releases/crosswalk/android/maven2' > } > } > > android { > compileSdkVersion 21 > buildToolsVersion '22.0.1' > defaultConfig { > applicationId "com.my.android.project" > minSdkVersion 14 > targetSdkVersion 21 > versionCode 1 > versionName "1.1" > multiDexEnabled true > } > dexOptions { > jumboMode = true > incremental true > javaMaxHeapSize "2048M" > } > buildTypes { > release { > minifyEnabled false > proguardFiles getDefaultProguardFile('proguard-android.txt'), ' > proguard-rules.pro' > } > } > packagingOptions { > exclude 'META-INF/DEPENDENCIES' > exclude 'META-INF/NOTICE' > exclude 'META-INF/LICENSE' > exclude 'META-INF/LICENSE.txt' > exclude 'META-INF/NOTICE.txt' > } > productFlavors { > } > } > > dependencies { > compile fileTree(dir: 'libs', include: ['*.jar']) > releaseCompile project(path: ':YOURPROJECTFOLDER', configuration: > 'release') > debugCompile project(path: ':YOURPROJECTFOLDER', configuration: > 'debug') > // Needed to overcome the 64K Methods limit > compile 'com.android.support:multidex:1.0.0' > } > > > *2) XML and Programmatic Instantiation - this is necessary due to the > XWalkView constructor having a bug :* > > Bug details ... see below, the context is cast to an Activity... this > totally breaks it for XML instantiation > > public XWalkViewInternal(Context context, AttributeSet attrs) { > super(convertContext(context), attrs); > > checkThreadSafety(); > mActivity = (Activity) context; > mContext = getContext(); > init(mContext, attrs);} > > > So the "manual way" around it is ... > > <RelativeLayout > android:id="@+id/id_xwalkview" > android:layout_width="match_parent" > android:layout_height="match_parent"> > </RelativeLayout> > > *3) Java Code* > > mContainer = (RelativeLayout) findViewById(R.id.id_xwalkview); > mWebView = new XWalkView(mParentActivity, mParentActivity); > RelativeLayout.LayoutParams relativeParams = new > RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, > ViewGroup.LayoutParams.MATCH_PARENT); > mContainer.addView(mWebView, relativeParams); > > > *4) The final step is loading dynamically generated HTML* > > StringBuilder strHTML = new StringBuilder(); > strHTML.append("<html><head></head><body>"); > // add your HTML here > strHTML.append("</body></html>"); > final String completeHTML = strHTML.toString(); > > // loading with XWalkView > mWebView.load(null, completeHTML); > > > > That's all there's to it. LOL it took a day because all this useful > information was not in one spot. > By the way, XWalkView is awesome for HTML5 compared to the ridiculously > fragmented experience of WebView. > > > Alexander > > > > ------------------------------ > Date: Wed, 22 Apr 2015 15:29:13 -0700 > From: [email protected] > To: [email protected] > Subject: [Crosswalk-help] Webdriver setup > > Hello, > > I'm trying run tests on an android device. I already have those tests > running using webdriver.io on chrome using selenium. > Now I want to run those tests on a xwalk webview. I don't really have an > 'application' for that, I don't want to test an application but some > dynamically injected html/js in a simple crosswalk webview. > I'm not a selenium expert and I'm lost, between selenium, webdriver, > xwalk, xwalkwebdriver. > I manage to setup xwalkwebdriver and if I run the tests I get a blank page > and an error. > I'm also able to run an existing application (org.xwalk.app.hello.world) > on a device using correct capabilities but then I get > > DevTools request: http://127.0.0.1:12074/json/version > DevTools request failed > > Then obviously it fail. > > I'm lost... > If somebody can give me an overview of the setup I need to do what I want, > I will be able to try and to ask more precise questions if needed. > > Thanx, > David > > _______________________________________________ Crosswalk-help mailing > list [email protected] > https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-help >
_______________________________________________ Crosswalk-help mailing list [email protected] https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-help
