全部產品
Search
文件中心

HTTPDNS:Android SDK 版本升級指南

更新時間:Sep 27, 2025

前言

本文為HTTPDNS Android SDK使用者提供詳細的API升級指南,協助您從舊版本平滑遷移到最新版本,主要包含以下內容:

  • 歷史版本相容性概覽:全面梳理從1.x.到2.6.x各版本間的相容性關係,協助您快速識別不相容的版本升級。

  • 不相容版本升級指南:針對每個不相容版本SDK升級提供具體的升級步驟、程式碼範例和新舊版本API升級映射表。

版本相容性概覽

HTTPDNS Android SDK經歷了多個重要版本的演化,以下是HTTPDNS Android SDK從1.x.x到2.6.x各版本間的相容性關係。

SDK版本

相容性

1.x.x - 2.3.x

✅ 完全相容

2.3.5 - 2.4.0

❌ 調整整初始化介面

2.4.0 - 2.5.0

✅ 完全相容

2.5.0 - 2.6.6

❌ 升級 API 版本(Android 4.4)

SDK版本升級到2.4.0以上指南

2.4.0版本是HTTPDNS Android SDK發展曆程中的重要裡程碑,進行了全面的架構重構和介面最佳化。這次升級旨在:

  • 統一配置模式:從分散的運行時配置改為Builder模式的統一初始化配置,解決配置時序問題,提升SDK穩定性

  • 標準化解析介面:重新設計解析介面架構,提供同步阻塞、非同步、同步非阻塞三種解析模式,滿足不同使用情境需求

  • 模組化設計:將日誌管理等功能獨立為專門的類,實現更好的職責分離和代碼維護性

  • 效能最佳化:通過介面最佳化和內部實現改進,提升解析效能和資源利用效率

這是一次不相容的重大變更,雖然變更較大,但您只需要修改應用中實際使用的介面。通過下面的升級步驟和新舊API映射表,您可以系統性地完成這次重要升級。

升級步驟詳解

  1. 更新依賴版本

    dependencies {
        implementation 'com.aliyun.ams:alicloud-android-httpdns:${httpdnsVersion}'
    }
    說明

    httpdnsVersion請從Android SDK發布說明中擷取。

  2. 重構初始化代碼

    1. 升級前

      // 舊版本:分散式配置
      HttpDnsService httpdns = HttpDns.getService(this, "your_account_id");
      
      httpdns.setHTTPSRequestEnabled(true);
      httpdns.setExpiredIPEnabled(true);
      httpdns.setCachedIPEnabled(true);
      httpdns.setPreResolveAfterNetworkChanged(true);
      httpdns.setTimeoutInterval(3000);
      httpdns.setLogEnabled(true);
      
      httpdns.setLogger(new ILogger() {
          @Override
          public void log(String message) {
              Log.d("HTTPDNS", message);
          }
      });
      
      httpdns.setDegradationFilter(new DegradationFilter() {
              @Override
              public boolean shouldDegradeHttpDNS(String host) {
                  return "example.com".equals(host);
              }
       });
      
      // 如果使用了IP優選功能
      List<IPRankingBean> ipProbeList = new ArrayList<>();
      ipProbeList.add(new IPRankingBean("example.com", 80));
      httpdns.setIPProbeList(ipProbeList);
      
    2. 升級後

      List<IPRankingBean> ipRankingList = new ArrayList<>();
      ipRankingList.add(new IPRankingBean("example.com", 80));
      
      // 新版本:Builder模式統一配置
      InitConfig config = new InitConfig.Builder()
        .setContext(this)                           // 必須設定
        .setEnableHttps(true)                       // 替代setHTTPSRequestEnabled
        .setEnableExpiredIp(true)                   // 替代setExpiredIPEnabled
        .setEnableCacheIp(true)                     // 替代setCachedIPEnabled
        .setPreResolveAfterNetworkChanged(true)     // 替代setPreResolveAfterNetworkChanged
        .setTimeoutMillis(3000)                     // 替代setTimeoutInterval
        .setIPRankingList(ipRankingList)            // 替代setIPProbeList
        .setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
              @Override
              public boolean notUseHttpDns(String host) {
                  return "example.com".equals(host);
              }
          })
        .buildFor("your_account_id");
       
        HttpDnsService httpdns = HttpDns.getService("your_account_id", config);
              
        // 日誌管理獨立
        HttpDnsLog.enable(true);                        // 替代setLogEnabled
        HttpDnsLog.setLogger(new ILogger() {            // 替代setLogger
          @Override
          public void log(String message) {
            Log.d("HTTPDNS", message);
          }
        });
      }
      }
  3. 更新解析介面

    1. 升級前

      // 同步非阻塞,ipv4,單個IP
      String ip = httpdns.getIpByHostAsync(host);
      // 同步非阻塞,ipv4,所有IP
      String[ ] ips = httpdns.getIpsByHostAsync(host);
      // 同步非阻塞,ipv6,所有IP
      String ipv6 = httpdns.getIPv6ByHostAsync(host);
      // 同步非阻塞,ipv6 和 ipv6,所有IP
      HTTPDNSResult result = httpdns.getAllByHostAsync(host);     
    2. 升級後

      // 同步非阻塞,ipv4, 所有IP
      HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.v4)
      String[ ] ips = httpDnsResult.getIps();
      
      // 同步非阻塞,ipv6, 所有IP
      HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.v6)
      String[ ] ipv6s = httpDnsResult.getIpv6s();
      
      // 同步非阻塞,ipv6 和 ipv6,所有IP
      HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.v6)
      String[ ] ips = httpDnsResult.getIps();
      String[ ] ipv6s = httpDnsResult.getIpv6s();
  4. 升級設定HTTPDNS黑名單介面

    1. 升級前

      InitConfig config = new InitConfig.Builder()
          .setDegradationFilter(new DegradationFilter() {
              @Override
              public boolean shouldDegradeHttpDNS(String host) {
                  return "example.com".equals(host);
              }
          })
          .build();
    2. 升級後

      InitConfig config = new InitConfig.Builder()
          .setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
              @Override
              public boolean notUseHttpDns(String host) {
                  return "example.com".equals(host);
              }
          })
          .build();
說明

若您的應用未使用到不相容的API,可以不用處理。

API升級映射表

介面分類

升級前

升級後

啟用HTTPS請求

HttpDnsService.setHTTPSRequestEnabled(boolean)

InitConfig.Builder.setEnableHttps(boolean)

啟用到期IP

HttpDnsService.setExpiredIPEnabled(boolean)

InitConfig.Builder.setEnableExpiredIp(boolean)

開啟本機快取

HttpDnsService.setCachedIPEnabled(boolean)

InitConfig.Builder.setEnableCacheIp(boolean)

網路切換預解析

HttpDnsService.setPreResolveAfterNetworkChanged(boolean)

InitConfig.Builder.setPreResolveAfterNetworkChanged(boolean)

設定解析逾時時間

HttpDnsService.setTimeoutInterval(int)

InitConfig.Builder.setTimeoutMillis(int)

啟用IP優選功能

HttpDnsService.setIPRankingList(List<IPRankingBean>)

InitConfig.Builder.setIPRankingList(List<IPRankingBean>)

設定自訂解析全域參數

HttpDnsService.setSdnsGlobalParams(Map<String, String>)

InitConfig.Builder.setSdnsGlobalParams(Map<String, String>)

控制日誌輸出開關

HttpDnsService.setLogEnabled(boolean)

HttpDnsLog.enable(boolean)

設定日誌回調介面

HttpDnsService.setLogger(ILogger)

HttpDnsLog.setLogger(ILogger)

啟用IP優選(舊版)

HttpDnsService.setIPProbeList(List<IPRankingBean>)

InitConfig.Builder.setIPRankingList(List<IPRankingBean>)

同步非阻塞介面,IPv4解析,返回單個IP

getIpByHostAsync(String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType.v4)

同步非阻塞介面,IPv4解析,返回IP列表

getIpsByHostAsync(String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType.v4)

同步非阻塞介面,IPv6解析,返回單個IP

getIPv6ByHostAsync(String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType.v6)

同步非阻塞介面,IPv6解析,返回IP列表

getIPv6sByHostAsync(String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType.v6)

同步非阻塞,解析IPv4和IPv6,返回IP列表

getAllByHostAsync(String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType.both)

同步非阻塞介面,自訂解析,返回Ipv4列表

getIpsByHostAsync(String, Map<String,String>, String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType, Map<String, String>, String)

同步非阻塞,自訂解析,返回Ipv4列表

getHttpDnsResultForHostAsync(String, Map<String, String> , String)

getHttpDnsResultForHostSyncNonBlocking(String, RequestIpType, Map<String, String>, String)

總結

HTTPDNS Android SDK經歷了多個重要版本的演化,其中2.4.0存在不相容升級,本升級指南為您提供了完整的版本遷移路徑。通過遵循本指南的升級路徑和最佳實務,您可以安全、高效地完成HTTPDNS Android SDK的版本升級。