Weex Android接入指南

2023-12-27 16:47 更新

一、添加依賴

可以通過Gradle 或者 Maven添加對(duì) Android Devtools for Apache Weex 的依賴, 也可以直接對(duì)源碼依賴.

  • Gradle依賴.
dependencies {
   implementation 'com.taobao.android:weex_inspector:0.24.2.11'
}

或者

  • Maven依賴.
<dependency>
  <groupId>com.taobao.android</groupId>
  <artifactId>weex_inspector</artifactId>
  <version>0.24.2.11</version>
  <type>pom</type>
</dependency>

或者

  • 源碼依賴.

需要復(fù)制inspector目錄到你的app的同級(jí)目錄, 然后在工程的 ?settings.gradle? 文件下添加? include ":inspector"?, 此過程可以參考playground源碼的工程配置及其配置, 然后在app的?build.gralde?中添加依賴.

dependencies {
   compile project(':inspector')
}
  • 需要引入okhttp
 dependencies {
    compile 'com.squareup.okhttp:okhttp:2.3.0'
    compile 'com.squareup.okhttp:okhttp-ws:2.3.0'
     ...
 }

二、調(diào)試開關(guān)(掃碼開啟調(diào)試/手動(dòng)開啟調(diào)試)

最簡單方式就是復(fù)用Playground的相關(guān)代碼,比如掃碼和刷新等模塊, 但是掃碼不是必須的, 它只是與app通信的一種形式, 二維碼里的包含DebugServer IP及bundle地址等信息,用于建立App和Debug Server之間的連接及動(dòng)態(tài)加載bundle. 在Playground中給出了兩種開啟debug模式的范例.

  • 范例1: 通過在XXXApplication中設(shè)置開關(guān)打開調(diào)試模式
public class MyApplication extends Application {
  public void onCreate() {
  super.onCreate();
  initDebugEnvironment(true, "xxx.xxx.xxx.xxx"/*"DEBUG_SERVER_HOST"*/);
  //WXSDKEngine.reload();
  }
}

private void initDebugEnvironment(boolean enable, String host) {
  WXEnvironment.sRemoteDebugMode = enable;
  WXEnvironment.sRemoteDebugProxyUrl = "ws://" + host + ":8088/debugProxy/native";
}

這種方式最直接, 在代碼中直接hardcode了開啟調(diào)試模式, 如果在SDK初始化之前調(diào)用甚至連?WXSDKEngine.reload()?都不需要調(diào)用, 接入方如果需要更靈活的策略可以將?initDebugEnvironment(boolean enable, String host)?和?WXSDKEngine.reload()?組合在一起在合適的位置和時(shí)機(jī)調(diào)用即可.(如果不是初始化之前調(diào)用,n那么每次調(diào)用initDebugEnvironment后必須調(diào)用WXSDKEngine.reload()刷新Weex引擎)

  • 范例2:通過掃碼打開調(diào)試模式Playground中較多的使用掃描weex debugger生成的調(diào)試二維碼的方式傳遞信息, 不僅用這種方式控制Debug模式的開關(guān),而且還通過它來傳入bundle的url直接調(diào)試. 應(yīng)當(dāng)說在開發(fā)中這種方式是比較高效的, 省去了修改sdk代碼重復(fù)編譯和安裝App的麻煩.

攔截方式:

if (WXEnvironment.isApkDebugable()) {
  String devToolUrl = uri.getQueryParameter("_wx_devtool");
  if (!TextUtils.isEmpty(devToolUrl)) {
    WXEnvironment.sRemoteDebugProxyUrl = devToolUrl;
    WXEnvironment.sDebugServerConnectable = true;
    WXSDKEngine.reload(XXXXX.getApplication(), false);
  }
}
  • 可選:調(diào)試刷新協(xié)議廣播 ACTION_DEBUG_INSTANCE_REFRESH 在調(diào)試模式切換和 Chrome 調(diào)試頁面刷新時(shí)發(fā)出,主要用來通知當(dāng)前的 Weex容器以 Debug 模式重新加載當(dāng)前頁。在 playground 中的處理過程如下:
  public class RefreshBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
      if (IWXDebugProxy.ACTION_DEBUG_INSTANCE_REFRESH.equals(intent.getAction())) {
        //Do something
      }
    }
  }


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)