利用反射+try catch來實作sdk按需引入依賴庫
Android開發sdk程序中,很有可能在sdk內部引入其他的三方sdk庫,比如開發sdk程序中可能同時包含Google和Facebook等SDK,但是接入方如果只想要接入包含Google登錄的SDK要怎么辦呢,gradle想只依賴Google的庫不依賴Facebook可以實作嗎?本文簡單利用反射+try catch即可實作按需接入,無需再新建module和考慮代碼分離的問題,
在自己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");
這樣接入方直接參考自己想要接入的庫就好了,未參考的類報錯會被catch接收,不至于閃退,簡單方便~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/200651.html
標籤:其他
上一篇:APK簽名提示Exception in thread “main“ java.lang.ExceptionInInitializerError錯誤
