はじめに
このトピックでは、HTTPDNS Android ソフトウェア開発キット (SDK) の詳細な API アップグレードガイドを提供します。このガイドは、古いバージョンから最新バージョンへスムーズに移行するのに役立ち、次の情報が含まれています:
バージョン互換性の概要:
1.xから2.6.xまでのバージョン間の互換性の包括的なまとめ。これにより、互換性のないバージョンのアップグレードを迅速に特定できます。互換性のないバージョンのアップグレードガイド: 互換性のない各 SDK アップグレードの詳細なアップグレード手順、コード例、および新旧 API のマッピングテーブル。
バージョン互換性の概要
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 の安定性が向上します。
標準化された解決インターフェイス: 解決インターフェイスアーキテクチャは、同期ブロッキング、非同期、および同期非ブロッキングの 3 つの解決パターンを提供するように再設計されています。これらのパターンは、さまざまなシナリオのニーズを満たします。
モジュラー設計: ログ管理などの機能は、専用のクラスに分離されています。これにより、責任の分離が向上し、コードの保守性が向上します。
パフォーマンスの最適化: インターフェイスの最適化と内部実装の強化により、解決パフォーマンスとリソース使用効率が向上します。
これは主要な互換性のない変更です。変更は重要ですが、アプリケーションで使用されるインターフェイスを変更するだけで済みます。以下のアップグレード手順と API マッピングテーブルに従って、このアップグレードを完了してください。
詳細なアップグレード手順
依存関係のバージョンを更新する
dependencies { implementation 'com.aliyun.ams:alicloud-android-httpdns:${httpdnsVersion}' }説明httpdnsVersionは、Android SDK リリースノートから取得できます。初期化コードをリファクタリングする
アップグレード前
// 旧バージョン:散在した構成 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);アップグレード後
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); } }); } }
解決インターフェイスを更新する
アップグレード前
// 同期非ブロッキング、IPv4、単一 IP String ip = httpdns.getIpByHostAsync(host); // 同期非ブロッキング、IPv4、すべての IP String[ ] ips = httpdns.getIpsByHostAsync(host); // 同期非ブロッキング、IPv6、単一 IP String ipv6 = httpdns.getIPv6ByHostAsync(host); // 同期非ブロッキング、IPv4 および IPv6、すべての IP HTTPDNSResult result = httpdns.getAllByHostAsync(host);アップグレード後
// 同期非ブロッキング、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(); // 同期非ブロッキング、IPv4 および IPv6、すべての IP HTTPDNSResult httpDnsResult = httpdns.getHttpDnsResultForHostSyncNonBlocking(host, RequestIpType.v6) String[ ] ips = httpDnsResult.getIps(); String[ ] ipv6s = httpDnsResult.getIpv6s();
HTTPDNS ブラックリストを設定するためのインターフェイスをアップグレードする
アップグレード前
InitConfig config = new InitConfig.Builder() .setDegradationFilter(new DegradationFilter() { @Override public boolean shouldDegradeHttpDNS(String host) { return "example.com".equals(host); } }) .build();アップグレード後
InitConfig config = new InitConfig.Builder() .setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() { @Override public boolean notUseHttpDns(String host) { return "example.com".equals(host); } }) .build();
アプリケーションが互換性のない API を使用していない場合は、これらの手順をスキップできます。
API アップグレードマッピングテーブル
まとめ
HTTPDNS Android SDK は、いくつかのメジャーバージョンを経て進化してきました。バージョン 2.4.0 では、互換性のないアップグレードが導入されました。このガイドでは、完全な移行パスを提供します。このガイドの移行パスとベストプラクティスに従って、お使いのバージョンの HTTPDNS Android SDK を安全かつ効率的にアップグレードしてください。