Android 利用反射+try catch实现sdk按需引入依赖库的方法
作者:ChrisZhao520 发布时间:2022-09-19 22:09:08
标签:Android,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://blog.csdn.net/z741092665/article/details/109429420


猜你喜欢
- java的String对象底层是有字符数组存储的,理论上char[] 最大长度是int的最大值,实际思路:首先,String字面
- 写应用程序的过程中,弹窗是个避免不了的功能,显示中,假设弹窗背景色和主窗口背景色相差不多,甚至是一样的时候,就会存在一个比较严重的人机交互和
- 一、程序运行环境编译环境:IntelliJ IDEA所需测试文件:PDF、.pfx数字证书及密钥、PDF Jar包(Free Spire.P
- 什么是字符串字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程
- # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了# 先看代码:public class Common {public static
- 1. AIE (演示地址)AIE是一个开源的ajax图片编辑器,基于ExtJS与PHP ImageMagick开发,易于与博客/相册等其它应
- 把bitmap图片的某一部分的颜色改成其他颜色private Bitmap ChangeBitmap(Bitmap bitmap){ int
- 前言Android12 有很多令人惊喜的变化,比如基于 Material You 的全新 UI,基于 SplashScreen 的应用启动画
- 这篇文章主要介绍了Spring Boot项目中定制 * 的方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 前言上篇博客分享了创建链表传入二级指针的细节,那么今天就分享几个c语言课程实践设计吧。这些程序设计搞懂了的话相当于链表的基础知识牢牢掌握了,
- 前言本文主要介绍了关于unity代码C#封装为dll的相关内容,分享出来供需要的朋友们学习,下面话不多说了,来一起学习学习吧。方法如下1 V
- mybatis-plus作为mybatis的增强工具,简化了开发中的数据库操作。一旦遇到left join或right join的左右连接,
- 首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就
- 一般启动一个新的Activity都默认有切换的动画效果,比如界面从右至左的移动。但是有些时候我们不需要这个动画,怎么办?操作方法比较麻烦,这
- 一、ServerSocket1.为了方便调试,先创建一个界面用于显示客户端连接信息基于javafx包写的一个简单界面! javafx.sce
- 本文以一个实例简单实现了类的创建与初始化,实现代码如下所示:using System;using System.Collections.Ge
- Compose的诞生在2019年的谷歌IO大会上,Compose作为Android新一代UI开发亮相,因为声明式开发越来越流行了,对标IOS
- 在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafka 服务器运行产生的日志文
- SpringBoot入门Demo,一次深夜踩坑记录。springboot小项目开启后,访问端口无反应。首先看我的项目目录:项目的pom文件内
- 1、首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算。其中有这么一个方法.public BigDecimal d