日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

為Android應(yīng)用集成SDK

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。

參考以下SDK集成說明為您的Android應(yīng)用集成爬蟲防護(hù)SDK。

Android SDK文件

聯(lián)系阿里云技術(shù)支持人員獲取對應(yīng)的SDK包后,將其解壓至本地。下表描述了解壓獲得的sdk-Android文件夾中包含的文件。

文件名

說明

SecurityGuardSDK-xxx.aar

主框架SDK文件

AVMPSDK-xxx.aar

虛擬機(jī)引擎插件

SecurityBodySDK-xxx.aar

人機(jī)識別插件

yw_1222_0335_mwua.jpg

虛擬機(jī)引擎配置文件

配置Android工程

配置Android工程

  1. Android Studio中導(dǎo)入解壓SDK獲得的.aar文件。將sdk-Android文件夾中所有.aar文件復(fù)制到Android應(yīng)用工程的libs目錄中。

    說明

    如果當(dāng)前工程中不存在libs目錄,請在指定路徑下手動創(chuàng)建libs文件夾。

  2. 編輯配置信息。打開該Modulebuild.gradle文件,完成以下配置修改。

    • libs目錄添加為查找依賴的源。

      repositories{
         flatDir {
           dirs 'libs'
         }
      }
    • 添加編譯依賴。

      說明

      .aar文件的版本號可能有所不同,以您下載解壓得到的文件名為準(zhǔn)。

      dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile ('com.android.support:appcompat-v7:23.0.0')
        compile (name:'AVMPSDK-external-release-xxx', ext:'aar')
        compile (name:'SecurityBodySDK-external-release-xxx', ext:'aar')
        compile (name:'SecurityGuardSDK-external-release-xxx', ext:'aar')
      }
  3. 將解壓SDK獲得的.jpg配置文件導(dǎo)入drawable目錄。將sdk-Android文件夾中的yw_1222_0335_mwua.jpg配置文件復(fù)制到Android應(yīng)用工程的drawable目錄中。

    說明

    如果當(dāng)前工程中不存在drawable目錄,請在指定路徑下手動創(chuàng)建drawable文件夾。

  4. 過濾ABI(刪除多余架構(gòu)SO)。爬蟲防護(hù)SDK目前僅支持armeabi、armeabi-v7a、arm64-v8a架構(gòu)的SO。

    警告

    您必須對最終導(dǎo)出的ABI進(jìn)行過濾,否則可能導(dǎo)致應(yīng)用崩潰。

    1. Android應(yīng)用工程的lib目錄中,刪除armeabiarmeabi-v7aarm64-v8a文件夾以外所有其他CPU架構(gòu)的文件夾,包括x86x86_64mipsmips64等,只保留armeabiarmeabi-v7aarm64-v8a文件夾。

    2. 參考以下代碼示例,在應(yīng)用工程的build.gradle配置文件中增加過濾規(guī)則,被abiFilters指定的架構(gòu)將會被包含在APK文件中。

      說明

      本代碼示例中僅指定了armeabi架構(gòu),您可以根據(jù)實際情況指定或兼容armeabi-v7a、arm64-v8a架構(gòu)。

      defaultConfig{
        applicationId "com.xx.yy"
        minSdkVersion xx
        targetSdkVersion xx
        versionCode xx
        versionName "x.x.x"
        ndk {
          abiFilters "armeabi"
          // abiFilters "armeabi-v7a"
          // abiFilters "arm64-v8a"
        }
      }
      說明

      只保留armeabi架構(gòu)的SO,不會影響應(yīng)用的兼容性,還能大幅減小應(yīng)用的體積。

  5. 添加應(yīng)用權(quán)限。

    • 如果是Android Studio項目,并且使用了aar方式進(jìn)行集成,由于在.aar文件中已經(jīng)聲明了相關(guān)權(quán)限,因此不需要在項目中額外配置權(quán)限。

    • 如果是Eclipse項目,您需要在AndroidManifest.xml文件中添加以下權(quán)限配置:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  6. 添加ProGuard配置。

    說明

    如果您使用了Proguard進(jìn)行混淆,則需要添加ProGuard配置。ProGuard的配置根據(jù)集成方式的不同,分為EclipseAndroid Studio兩種情況。

    • Android Studio

      如果在build.gradle中配置了proguardFiles,并且開啟了minifyEnabled,則表明使用了proguard-rules.pro配置文件進(jìn)行混淆。proguardFiles

    • Eclipse

      如果在project.properties中指定了proguard配置,例如在project.properties中存在proguard.config=proguard.cfg語句,則表明使用了proguard進(jìn)行混淆。

      說明

      混淆配置在proguard.cfg文件中。

    添加keep規(guī)則

    為了保證一些需要的類不被混淆,需要在proguard的配置文件中添加以下規(guī)則:

    -keep class com.taobao.securityjni.**{*;}
    -keep class com.taobao.wireless.security.**{*;}
    -keep class com.ut.secbody.**{*;}
    -keep class com.taobao.dp.**{*;}
    -keep class com.alibaba.wireless.security.**{*;}

調(diào)用SDK接口

步驟1:導(dǎo)入包

import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.avmp.IJAQAVMPSignComponent;
import com.alibaba.wireless.security.open.SecurityGuardManager;
import com.alibaba.wireless.security.open.avmp.IAVMPGenericComponent;

步驟2:初始化

接口定義:boolean initialize();

功能:初始化SDK。

接口參數(shù):無。

返回值:Boolean類型。初始化成功返回true,失敗返回false。

示例代碼

IJAQAVMPSignComponent jaqVMPComp = SecurityGuardManager.getInstance(getApplicationContext()).getInterface(IJAQAVMPSignComponent.class);
boolean result = jaqVMPComp.initialize();

步驟3:簽名請求數(shù)據(jù)

接口定義:byte[] avmpSign(int signType, byte[] input);

功能:使用avmp技術(shù)對input的數(shù)據(jù)進(jìn)行簽名處理,并且返回簽名串。

接口參數(shù)

名稱

類型

是否必須

描述

signType

int

簽名使用的算法。目前是固定值,填寫3

input

byte[]

待簽名的數(shù)據(jù),一般是整個請求體(request body)。

說明

如果請求體為空(例如POST請求的body為空、或者GET請求),則填寫空對象null或空字符串的Bytes值(例如,"".getBytes("UTF-8"))。

返回值:byte[]類型,返回簽名串。

示例代碼:客戶端向服務(wù)器端發(fā)送數(shù)據(jù)時,需要調(diào)用avmpSign接口對整個body數(shù)據(jù)進(jìn)行簽名處理,所得到的簽名串就是wToken。

int VMP_SIGN_WITH_GENERAL_WUA2 = 3;
String request_body = "i am the request body, encrypted or not!";
byte[] result = jaqVMPComp.avmpSign(VMP_SIGN_WITH_GENERAL_WUA2, request_body.getBytes("UTF-8"));
String wToken = new String(result, "UTF-8");
Log.d("wToken", wToken);

步驟4:將wToken放進(jìn)協(xié)議頭

HttpURLConnection類的對象中添加wToken字段的內(nèi)容。

示例代碼

String request_body = "i am the request body, encrypted or not!";
URL url = new URL("http://www.aliyundoc.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
// set wToken info to header 
conn.setRequestProperty("wToken", wToken);
OutputStream os = conn.getOutputStream();
// set request body info
byte[] requestBody = request_body.getBytes("UTF-8");
os.write(requestBody);
os.flush();
os.close();

步驟5:發(fā)送數(shù)據(jù)到服務(wù)器

將修改好協(xié)議頭的數(shù)據(jù)發(fā)送到App自有服務(wù)器,中間會由Anti-Bot截獲,并通過解析wToken進(jìn)行風(fēng)險識別。

警告

被簽名的請求體應(yīng)該與客戶端實際發(fā)送的請求體完全一致。完全一致的含義包括請求體中字符串的編碼格式、空格、特殊字符以及參數(shù)的順序等均一致,否則將導(dǎo)致簽名驗證失敗。

錯誤碼

上述initializeavmpSign接口的調(diào)用過程中可能出現(xiàn)異常。如果生成簽名串異常或失敗,請在Log中搜索與SecException 相關(guān)的信息。

下表描述了常見錯誤碼及含義。

錯誤碼

含義

1901

參數(shù)不正確,請檢查輸入的參數(shù)。

1902

圖片文件有問題。一般是獲取圖片文件時的APK簽名和當(dāng)前程序的APK簽名不一致。請使用當(dāng)前程序的APK重新生成圖片。

1903

圖片文件格式有問題。

1904

請升級新版本圖片。AVMP簽名功能僅支持V5圖片。

1905

沒有找到圖片文件。請確保圖片文件在res\drawable目錄下,與AVMP相關(guān)的圖片為yw_1222_0335_mwua.jpg

1906

圖片中缺少AVMP簽名對應(yīng)的byteCode。請檢查使用的圖片是否正確。

1907

初始化AVMP失敗,請重試。

1910

非法的avmpInstance實例。可能由于以下原因?qū)е拢?

  • AVMPInstancedestroy后,調(diào)用InvokeAVMP。

  • 圖片byteCode版本與SDK不匹配。

1911

加密圖片的byteCode沒有相應(yīng)導(dǎo)出的函數(shù)。

1912

AVMP調(diào)用失敗。請聯(lián)系我們。

1913

AVMPInstancedestroy后,調(diào)用InvokeAVMP出現(xiàn)該錯誤。

1915

AVMP調(diào)用內(nèi)存不足,請重試。

1999

未知錯誤,請重試。

確認(rèn)集成效果

您可以參考以下步驟,確認(rèn)您的應(yīng)用已正確集成了爬蟲防護(hù)SDK。

  1. 將打包生成的APK文件通過修改擴(kuò)展名的方式轉(zhuǎn)換成ZIP壓縮文件,并將該壓縮文件解壓至本地。

  2. 定位到工程的lib目錄,確保文件夾中只存在armeabiarmeabi-v7aarm64-v8a文件夾。

    說明

    如果存在其他架構(gòu)的文件夾,請參見配置Android工程,移除其他架構(gòu)的文件夾。

  3. 定位到工程的res/drawable目錄,確認(rèn)存在yw_1222_0335_mwua.jpg文件,且文件大小不為0。

  4. 通過打印日志,確保調(diào)用avmpSign接口后能生成正確的簽名信息。

    說明

    如果簽名信息未生成,請參見錯誤碼信息進(jìn)行排查。

常見問題

為什么指定shrinkResources后,密鑰圖片被錯誤地優(yōu)化?

Android Studio中,如果指定shrinkResourcestrue,在工程編譯時可能對未在代碼中引用的資源文件進(jìn)行優(yōu)化。該操作可能導(dǎo)致爬蟲防護(hù)SDK中的.jpg文件無法正常工作。如果打包后得到APK中,yw_1222_0335.jpg配置文件的大小為0KB,則表明該圖片文件已被優(yōu)化。

解決方法

  1. 在工程的res目錄中新建raw目錄,并在raw目錄中創(chuàng)建keep.xml文件。

  2. keep.xml文件中,添加以下內(nèi)容。

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@drawable/yw_1222_0335.jpg,@drawable/yw_1222_0335_mwua.jpg" />
  3. 添加完成后,重新編譯工程APK即可。