Android 利用反射+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接收,不至于闪退,简单方便~

到此这篇关于Android 利用反射+try catch实现sdk按需引入依赖库的方法的文章就介绍到这了,更多相关Android实现sdk按需引入依赖库内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持呐喊教程!

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。