爬坑之Android Studio 下使用crosswalk,使用maven依赖库打包
先贴官网:https://crosswalk-project.org/blog/这个有中文版的,还是比较考虑大陆开发人员体验的。
1. As下的一个module在build.gradle文件中添加如下的申明,标示从指定仓库获取我们需要依赖的库
repositories {
maven { url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2' }
}
//指定编译的lib
compile('org.xwalk:xwalk_core_library:22.52.561.4') { exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.google.code.findbugs', module: 'jsr305' exclude module: 'jsr305:2.0.1' }
2.manifest清单下添加权限
<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.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android.view.InflateException: Binary XML file line #2: Error inflating class org.xwalk.core.XWalkView
下面是我写的东西:
注:那些防止内存泄漏的我就省略不写了,官网有。
遇到的问题:
第一个问题:就是上面的初始化问题。
第二个问题:android studio util.zip.ZipException: duplicate entry
解决办法:发现一个解决这类问题很好用的办法,不用每个build.gradle看过来一遍,然后对比。这个方法是自动列举出来了,废话不多说,直接。。直接贴链接https://www.linkedin.com/pulse/how-find-dependencies-particular-dependency-gradle-hesamedin-kamalan-1(ps:需要有英文阅读能力),其实就是terminal命令查看导入第三方结构:命令:gradlew -q app:dependencies 。我的问题是jsr305:2.0.1 这个冲突,当时恶心死我了快!
第三个问题:Mismatch of CPU Architecture
The Crosswalk Project Service must be updated to match the CPU architecture of the device. Please install it from the app store, then restart app。就是这个看不出所以然的东西,官方文档给出的解决方案是查找手机里面哪个app也用了这个Crosswalk,用这个app还得是在app store上架的,WTF!!!后来灵光一闪,是so包不兼容的问题,然后就实践,在android下加入以下代码
android {
productFlavors { //......其他配置 armv7 { ndk { abiFilters "armeabi-v7a" } } x86 { ndk { abiFilters "x86" } } }}
ok,问题完美解决!
还有,为啥不贴demo呢,因为我懒~~