x5調(diào)試頁面提取內(nèi)核及問題匯總

1. 下載并集成X5 最新SDK

  • 下載:本人測試使用的最新sdk為tbs_sdk_thirdapp_v4.3.0.39_43939_sharewithdownloadwithfile_withoutGame_obfs_20200713_223411.jar
  • 集成sdk:把得到的這個tbs_sdk_*.jar 復(fù)制到項目的libs目錄中,同時再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存儲:設(shè)置適應(yīng)Html5(不設(shè)置時可能出現(xiàn)頁面一片空白或只加載一部分)
        webView.loadUrl("http://debugtbs.qq.com");
        webView.setWebViewClient(new WebViewClient(){

            /**
             * 攔截 url 跳轉(zhuǎn),在里邊添加點擊鏈接跳轉(zhuǎn)或者操作
             */
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;//返回true,立即跳轉(zhuǎn);返回false,打開網(wǎng)頁有延時
            }

            /**
             * 在開始加載網(wǎng)頁時會回調(diào)
             */
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            /**
             * 在結(jié)束加載網(wǎng)頁時會回調(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)頁可能暫時無法打開或已永久移至新網(wǎng)址


    image.png
  • 原因:未配置網(wǎng)絡(luò)權(quán)限
<uses-permission android:name="android.permission.INTERNET" />

(2) 網(wǎng)頁無法打開情形二

  • 提示:網(wǎng)頁無法加載,因為net::ERR_CLEARTEXT_NOT_PERMITTED


    image.png
  • 原因分析:Android P(即安卓9.0)以上系統(tǒng)限制了明文流量的網(wǎng)絡(luò)請求,非加密的流量請求都會被系統(tǒng)禁止掉。(andorid9.0及以上對明文的流量不再信任導(dǎo)致的webview無法加載網(wǎng)頁)
  • 解決:在配置文件manifest.json的application節(jié)點中添加配置android:usesCleartextTraffic="true"
    image.png

android:usesCleartextTraffic 指示應(yīng)用程序是否打算使用明文網(wǎng)絡(luò)流量,例如明文HTTP。目標(biāo)API級別為27或更低的應(yīng)用程序的默認(rèn)值為“ true”。面向API級別28或更高級別的應(yīng)用默認(rèn)為“ false”。
當(dāng)屬性設(shè)置為“ false”時,平臺組件(例如,HTTP和FTP堆棧,DownloadManager和MediaPlayer)將拒絕應(yīng)用程序使用明文流量的請求。強烈建議第三方庫也采用此設(shè)置。避免明文通信的主要原因是缺乏機密性,真實性和防篡改保護;網(wǎng)絡(luò)攻擊者可以竊聽所傳輸?shù)臄?shù)據(jù),并且還可以對其進(jìn)行修改而不會被檢測到。

(3) 點擊“安裝線上內(nèi)核”或“拷貝內(nèi)核”等操作時時程序崩潰

  • 原因:缺少以下權(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)試界面成功

image.png

image.png

(1) 下載安裝內(nèi)核:點擊“安裝線上內(nèi)核”,它會自動識別App的架構(gòu),下載到armeabi、armeabi-v7a或者arm64-v8a架構(gòu)的TBS內(nèi)核包,下載完后重啟App就可以進(jìn)行內(nèi)核提取操作了

點擊“查看版本信息”


image.png

(2) 提取內(nèi)核(2種方法)

  • 方法一(直接拷貝):安裝線上內(nèi)核后重啟App,點擊“拷貝內(nèi)核”


    拷貝內(nèi)核.png

    內(nèi)核文件.png
  • 方法二(得到下載地址進(jìn)行下載):可以在安裝時監(jiān)控App的網(wǎng)絡(luò)請求從而得到下載地址(示例下載地址),經(jīng)測試在控制臺中可能直接獲取到內(nèi)核下載地址。

備注:使用臺電7.0平板(cpu架構(gòu)為arme64-v8a)調(diào)試獲取到的內(nèi)核下載地址

image.png

下載內(nèi)核.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容