生活随笔
收集整理的這篇文章主要介紹了
android使用crosswalk webview报错
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- crosswalk使用提示報錯 mismatch of cpu architecture
- 正常使用crosswalk這一類的第三方的流程:
- 解決:
- 解決問題參考資料:
- 學習參考資料:
- GitHub demo:
最近要使用第三方webview來替換原生的webview進行webrtc的支持性測試,光是引入并跑起來這個第三方的的webview就遇到很多坑。
第三方webview包括Intel的crosswalk,騰訊x5.但是crosswalk很早官方就已經不更新了,大概2017年2018年左右英特爾就已經不更新了不維護了,所以說現在crosswalk沒有官網可以去找了。只能找歷史中的其他人的帖子。
crosswalk使用提示報錯 mismatch of cpu architecture
從應用商店安裝了這個東西也并沒有什么卵用,問題根本不在這。
正常使用crosswalk這一類的第三方的流程:
引入crosswalk的aar,直接拖進libs文件夾,然后配置在android/app/build.gradle。
repositories
{flatDir
{dirs
'libs'}
}dependencies
{implementation
fileTree(dir
: 'libs', include
: ['*.jar'])implementation(name
: 'xwalk_core_library', ext
: 'aar')}
似乎配置結束了,然后就是在Java類中使用:
MainActivity.java
public class MainActivity extends XWalkActivity
{private final String TAG
= "XWalkActivity-Test";private XWalkView xWalkWebView
;private String mUrl
= "https://beijing.speedvr.cn:444/index7.html";
@Overrideprotected
void onCreate(Bundle savedInstanceState
) {super
.onCreate(savedInstanceState
);setContentView(R
.layout
.activity_main
);xWalkWebView
= findViewById(R
.id
.xWalkView
);}@Overridepublic
void onXWalkReady() {if (Build
.VERSION
.SDK_INT
>= Build
.VERSION_CODES
.M
) {if (ContextCompat
.checkSelfPermission(this
, Manifest
.permission
.CAMERA
) != PackageManager
.PERMISSION_GRANTED
|| ContextCompat
.checkSelfPermission(this
, Manifest
.permission
.WRITE_EXTERNAL_STORAGE
) != PackageManager
.PERMISSION_GRANTED
|| ContextCompat
.checkSelfPermission(this
, Manifest
.permission
.READ_EXTERNAL_STORAGE
) != PackageManager
.PERMISSION_GRANTED
|| ContextCompat
.checkSelfPermission(this
, Manifest
.permission
.RECORD_AUDIO
) != PackageManager
.PERMISSION_GRANTED
) {ActivityCompat
.requestPermissions(this
,new String
[]{Manifest
.permission
.CAMERA
, Manifest
.permission
.WRITE_EXTERNAL_STORAGE
, Manifest
.permission
.READ_EXTERNAL_STORAGE
, Manifest
.permission
.RECORD_AUDIO
},3332);} else {xWalkWebView
.loadUrl(mUrl
);}} else {xWalkWebView
.loadUrl(mUrl
);}}@Overridepublic
void onRequestPermissionsResult(int requestCode
, String
[] permissions
, int[] grantResults
) {if (requestCode
== 3332) {for (int i
= 0; i
< grantResults
.length
; i
++) {if (grantResults
[i
] != PackageManager
.PERMISSION_GRANTED
) {Toast
.makeText(this
, "請授予錄音,拍照等權限" + permissions
[i
], Toast
.LENGTH_LONG
).show();return;}}}xWalkWebView
.loadUrl(mUrl
);}@Overrideprotected
void onDestroy() {if (xWalkWebView
!= null
) {xWalkWebView
.onDestroy();xWalkWebView
= null
;System
.gc();}super
.onDestroy();}}
布局activity_main.xml:
<androidx
.constraintlayout
.widget
.ConstraintLayout xmlns
:android
="http://schemas.android.com/apk/res/android"xmlns
:app
="http://schemas.android.com/apk/res-auto"xmlns
:tools
="http://schemas.android.com/tools"android
:layout_width
="match_parent"android
:layout_height
="match_parent"tools
:context
=".MainActivity"><org
.xwalk
.core
.XWalkViewandroid
:id
="@+id/xWalkView"android
:layout_width
="wrap_content"android
:layout_height
="wrap_content"app
:layout_constraintBottom_toBottomOf
="parent"app
:layout_constraintLeft_toLeftOf
="parent"app
:layout_constraintRight_toRightOf
="parent"app
:layout_constraintTop_toTopOf
="parent" /></androidx
.constraintlayout
.widget
.ConstraintLayout
>
AndroidManifest.xml配置文件:
這里有一個需要注意的是,硬件加速,必須開啟。
<?xml version
="1.0" encoding
="utf-8"?>
<manifest xmlns
:android
="http://schemas.android.com/apk/res/android"package
="com.xlabs.webrtc_crosswalk_demo2"><uses
-permission android
:name
="android.permission.WRITE_EXTERNAL_STORAGE" /><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.READ_PHONE_STATE" /><uses
-permission android
:name
="android.permission.CAMERA" /><uses
-permission android
:name
="android.permission.RECORD_AUDIO" /><uses
-permission android
:name
="android.permission.MODIFY_AUDIO_SETTINGS" /><uses
-permission android
:name
="android.permission.ACCESS_FINE_LOCATION" /><uses
-permission android
:name
="android.permission.MODIFY_AUDIO_SETTINGS" /><applicationandroid
:allowBackup
="true"android
:icon
="@mipmap/ic_launcher"android
:label
="@string/app_name"android
:roundIcon
="@mipmap/ic_launcher_round"android
:supportsRtl
="true"android
:hardwareAccelerated
="true"android
:theme
="@style/AppTheme"><activity android
:name
=".MainActivity"><intent
-filter
><action android
:name
="android.intent.action.MAIN" /><category android
:name
="android.intent.category.LAUNCHER" /></intent
-filter
></activity
></application
></manifest
>
到此,似乎,應該結束了,應該正常調用這個crosswalk的webview了,但是并沒有,報錯,上面提到的mismatch of cpu architecture的錯誤。
解決:
其實可以猜想可能是abi架構的問題導致的,但是到底應該怎么配置,查了很多資料,這里貼出來配置:
android
{
............
defaultConfig
{ndk
{abiFilters
'armeabi-v7a','x86'}}}
解決問題,出效果:
加載了我本地的html:
這里記錄一下爬坑過程。
解決問題參考資料:
https://www.meiwen.com.cn/subject/mxnvlqtx.html
https://www.learningsomethingnew.com/how-to-solve-mismatch-of-cpu-architecture-error-in-cordova-crosswalk-plugin
學習參考資料:
https://blog.csdn.net/bingdele/article/details/90742628
GitHub demo:
https://github.com/wesley-fly/crosswalk-webrtc
總結
以上是生活随笔為你收集整理的android使用crosswalk webview报错的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。