android如何提供SDK给别人使用

本文介绍了如何为第三方提供Android SDK,强调了即使代码变为字节码,仍可能通过反编译暴露源码。作者提到,如同支付宝的SDK,直接提供可能会导致源码公开。QQ分享SDK的加密混淆方式提供了参考,但具体实现未明。为解决混淆问题,文章给出了针对SDK混淆的配置示例,如保留特定包和类不被混淆,以保护关键代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   参考文章:http://blog.youkuaiyun.com/mengweiqi33/article/details/25824295

大部分细节和问题这篇文章都将的很清楚了。  

我这里补充一点,就是在按上面那样做完以后,虽然代码变成了字节码,但是如果就这样给第三方了,人家反编译出来还是可以看到你的源代码滴;我研究了很多做SDK的公司,比如支付宝提供给第三方的支付SDK,连他们也不能自己先混淆了然后再给第三方,所以至少第三是可以通过编译出来看到你的SDK的源码的,如果第三方自己的APP不进行混淆,那么我们的SDK源码那就大白于天下了。

这里我不得不赞叹QQ分享的SDK,他们做出来的SDK,是自己先加密混淆以后才提供给第三方,目前本人还没有搞清楚这是怎么做到的。

如果第三方对自己的项目进行的混淆,由于我们的项目是作为库供给第三引用的,因此,第三方项目混淆时,我们的项目源码也会被混淆,这样我们的源码就只有提供给第三的人可以看到。然而,问题又来了,如果我们的项目中有一些不能被混淆的代码,怎么办?

     万能的方法是:

对于引用第三方包的情况,可以采用下面方式避免打包出错:
-libraryjars /aaa.jar
-dontwarn com.xx.yy.**
-keep class com.xx.yy.** { *;}


但是这样行吗?当然不行,如果这样的话,我们的整个项目源码都不会被混淆,所以只能一一列出某些包或者某些类不要混淆。可以参考友盟分享的SDK混淆代码:


==========这是让打包的是对这些JAR包免报错警告

-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**

-libraryjars ../UMengSocial_sdk_library/libs/SocialSDK_QQZone_2.jar

=======-====这是对某些特殊类型和注解等保留之
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*

=======-====这是对接口以及子接口等保留之
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**

=======-====这是保留某些包下面的所有类
-keep public class com.umeng.socialize.* {*;}
-keep public class javax.**
-keep public class android.webkit.**


=======-====这是保留某个具体的类或者类中某些方法
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}

-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}


既然要选择性的去保留避免被混淆,那么那些东西是需要免混淆的呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值