Androidはリフレクション+ try catchを使用してSDKを実装し、依存ライブラリをオンデマンドで導入します

リフレクション+ try catchを使用してsdkを実装し、依存ライブラリをオンデマンドで導入します

        Android SDK開発の過程で、SDK内に他のサードパーティSDKライブラリを導入することは非常に可能です。たとえば、GoogleやFacebookなどのSDKがSDK開発プロセスに含まれる場合があります。しかし、アクセス側がGoogleログインを含むSDKにのみアクセスしたい場合はどうなりますか?gradleはGoogleのライブラリのみに依存し、Facebookには依存できませんか?この記事では、リフレクション+ try catch使用して、新しいモジュールを作成したりコードの分離を検討したりすることなく、オンデマンドアクセスを実現します。

        SDKコードでサードパーティのSDKを使用する場合は、次の処理を実行します。

  • 元のコード:
Intent googleSignInIntent = GoogleSignIn.getClient(mLoginActivity, mSignInOption).getSignInIntent();
if (googleSignInIntent != null)
{
    mLoginActivity.startActivityForResult(googleSignInIntent, requestCode);
}
  • 処理されたコード:
try
{
    Class classGoogleSignIn = Class.forName("com.google.android.gms.auth.api.signin.GoogleSignIn");
    Intent googleSignInIntent = GoogleSignIn.getClient(mLoginActivity, mSignInOption).getSignInIntent();
    if (googleSignInIntent != null)
    {
        mLoginActivity.startActivityForResult(googleSignInIntent, requestCode);
    }
}
catch (Exception e)
{
    e.printStackTrace();
}

 

つまり、サードパーティのSDKコードを使用する前にクラスリフレクションのコードを追加し、それをtry + catchでラップします。パラメータは、サードパーティのSDKの完全なクラス名(パッケージ名+クラス名)です。

Class classGoogleSignIn = Class.forName("xxx");

このようにして、アクセスパーティはアクセスしたいライブラリを直接引用し、引用されていないクラスエラーがキャッチによって受信され、クラッシュしません。これは簡単で便利です〜

おすすめ

転載: blog.csdn.net/z741092665/article/details/109429420