Android 利用反射+try catch實現sdk按需引入依賴庫的方法
阿新 • • 發佈:2020-11-04
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接收,不至於閃退,簡單方便~
到此這篇關於Android 利用反射+try catch實現sdk按需引入依賴庫的方法的文章就介紹到這了,更多相關Android實現sdk按需引入依賴庫內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!