1. 下載并集成X5 最新SDK
- 下載:本人測(cè)試使用的最新sdk為
tbs_sdk_thirdapp_v4.3.0.39_43939_sharewithdownloadwithfile_withoutGame_obfs_20200713_223411.jar
- 集成sdk:把得到的這個(gè)tbs_sdk_*.jar 復(fù)制到項(xiàng)目的libs目錄中迟螺,同時(shí)再module下的gradle中添加如下依賴
implementation files('libs/tbs_sdk_thirdapp_v4.3.0.39_43939_sharewithdownloadwithfile_withoutGame_obfs_20200713_223411.jar')
2. app內(nèi)訪問tbs調(diào)試頁面
package com.example.x5debug;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Toast;
import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//隱藏狀態(tài)欄
setContentView(R.layout.activity_main);
String CPU_ABI = android.os.Build.CPU_ABI;//查看Android設(shè)備的ABI
Log.d("ABI", "CPU_ABI = " + CPU_ABI);
Toast.makeText(this,CPU_ABI,Toast.LENGTH_SHORT).show();
webView = (WebView) findViewById(R.id.activity_web_webView);
WebSettings webSettings = webView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);//設(shè)置支持解析javascript腳本
webSettings.setSupportZoom(false);//設(shè)置支持縮放
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//設(shè)置緩存
webSettings.setDomStorageEnabled(true);//是否開啟本地DOM存儲(chǔ):設(shè)置適應(yīng)Html5(不設(shè)置時(shí)可能出現(xiàn)頁面一片空白或只加載一部分)
webView.loadUrl("http://debugtbs.qq.com");
webView.setWebViewClient(new WebViewClient(){
/**
* 攔截 url 跳轉(zhuǎn),在里邊添加點(diǎn)擊鏈接跳轉(zhuǎn)或者操作
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//返回true,立即跳轉(zhuǎn);返回false,打開網(wǎng)頁有延時(shí)
}
/**
* 在開始加載網(wǎng)頁時(shí)會(huì)回調(diào)
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
/**
* 在結(jié)束加載網(wǎng)頁時(shí)會(huì)回調(diào)
*/
@Override
public void onPageFinished(com.tencent.smtt.sdk.WebView view, String url) {
super.onPageFinished(view, url);
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tencent.smtt.sdk.WebView
android:id="@+id/activity_web_webView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.tencent.smtt.sdk.WebView>
</LinearLayout>
3. 問題匯總
(1) 網(wǎng)頁無法打開情形一
-
提示:網(wǎng)頁可能暫時(shí)無法打開或已永久移至新網(wǎng)址
- 原因:未配置網(wǎng)絡(luò)權(quán)限
<uses-permission android:name="android.permission.INTERNET" />
(2) 網(wǎng)頁無法打開情形二
-
提示:網(wǎng)頁無法加載共螺,因?yàn)閚et::ERR_CLEARTEXT_NOT_PERMITTED
- 原因分析:Android P(即安卓9.0)以上系統(tǒng)限制了明文流量的網(wǎng)絡(luò)請(qǐng)求距误,非加密的流量請(qǐng)求都會(huì)被系統(tǒng)禁止掉。(andorid9.0及以上對(duì)明文的流量不再信任導(dǎo)致的webview無法加載網(wǎng)頁)
- 解決:在配置文件manifest.json的application節(jié)點(diǎn)中添加配置
android:usesCleartextTraffic="true"
android:usesCleartextTraffic 指示應(yīng)用程序是否打算使用明文網(wǎng)絡(luò)流量币砂,例如明文HTTP。目標(biāo)API級(jí)別為27或更低的應(yīng)用程序的默認(rèn)值為“ true”。面向API級(jí)別28或更高級(jí)別的應(yīng)用默認(rèn)為“ false”筛圆。
當(dāng)屬性設(shè)置為“ false”時(shí),平臺(tái)組件(例如椿浓,HTTP和FTP堆棧太援,DownloadManager和MediaPlayer)將拒絕應(yīng)用程序使用明文流量的請(qǐng)求。強(qiáng)烈建議第三方庫也采用此設(shè)置扳碍。避免明文通信的主要原因是缺乏機(jī)密性提岔,真實(shí)性和防篡改保護(hù);網(wǎng)絡(luò)攻擊者可以竊聽所傳輸?shù)臄?shù)據(jù)笋敞,并且還可以對(duì)其進(jìn)行修改而不會(huì)被檢測(cè)到碱蒙。
(3) 點(diǎn)擊“安裝線上內(nèi)核”或“拷貝內(nèi)核”等操作時(shí)時(shí)程序崩潰
- 原因:缺少以下權(quán)限
<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.READ_PHONE_STATE" />
x5調(diào)試下載內(nèi)核的apk下載地址
:鏈接: https://pan.baidu.com/s/10NUkeUenCsuhJtENVwIwTQ 提取碼: qfc6
4. 訪問調(diào)試界面成功
(1) 下載安裝內(nèi)核:點(diǎn)擊“安裝線上內(nèi)核”,它會(huì)自動(dòng)識(shí)別App的架構(gòu)液样,下載到armeabi振亮、armeabi-v7a或者arm64-v8a架構(gòu)的TBS內(nèi)核包,下載完后重啟App就可以進(jìn)行內(nèi)核提取操作了
點(diǎn)擊“查看版本信息”
(2) 提取內(nèi)核(2種方法)
-
方法一(直接拷貝):安裝線上內(nèi)核后重啟App鞭莽,點(diǎn)擊“拷貝內(nèi)核”
方法二(得到下載地址進(jìn)行下載):可以在安裝時(shí)監(jiān)控App的網(wǎng)絡(luò)請(qǐng)求從而得到下載地址(示例下載地址)坊秸,經(jīng)測(cè)試在控制臺(tái)中可能直接獲取到內(nèi)核下載地址。
備注:使用臺(tái)電7.0平板(cpu架構(gòu)為arme64-v8a)調(diào)試獲取到的內(nèi)核下載地址