注意: 本文介绍的是Share SDK 2.x版本的集成流程和注意事项,对于Share SDK 1.x版本的开发者,请参考2.0升级指南升级SDK之后,再阅读本文php
目录[隐藏] |
为了集成Share SDK,您首先须要到Share SDK官方网站注册而且建立应用,得到ShareSDK的Appkey,而后到SDK的下载页面下载SDK的压缩包,解压之后能够获得以下图的目录结构: html
Share SDK有两种集成方式:一、直接复制jar包到目标项目libs目录;二、项目引用。Sample用的是第一种方式 若是使用复制jar的方法,须要除了复制MainLibs/libs中的jar外,还须要复制MainLibs/res中图片和strings,不然会出现受权时找不到资源的问题。并且若是您的项目也集成了快捷分享,还须要复制OneKeyShare/src中的源码、OneKeyShare/res中的资源和OneKeyShare/libs下的android-support-v4的jar到您的项目中。对于直接复制jar和资源的方式,能够参考Share SDK的Sample项目。 因为直接复制jar包和资源的集成方式比较麻烦,Share SDK提供了快速集成的程序,在Windows下能够直接双击执行。这个程序会自动搜集集成SDK所须要的jar和资源,完成之后能够经过复制目标目录中的文件到您项目中覆盖,再修改快捷分享项目中对源码文件对R文件的引用就好了。极大简化了“直接复制jar和资源”这种集成方式的操做步骤。 下面演示如何经过项目引用的方式集成Share SDK: 1)将Share SDK下的Libs目录解压,而后在Eclipse中,选择“文件”—“导入”,并选择“现有的工做空间”:
并在“下一步”的页面中,选择上文解压的Libs目录:
点击“肯定”,Eclipse会自动找到Libs目录下的两个项目:
若是您不须要快捷分享功能,能够取消OneKeyhare项目的勾选,不然请按“肯定”,导入项目。 2)被导入的两个项目默认是“Is Labrary”的,并且OneKeyhare也默认引用了MainLibs,因此您并不须要为这两个项目作更多的设置。可是若是您修改了它们的相对路径,使之不在同一目录下,则须要手动修改其引用方式。具体操做和下面步骤相似。 3)右键您的项目,选择“属性”。在弹出的窗口左侧选择“Android”,而后转至右下侧的“Library”中点击“Add”,分别选择“MainLibs”和“OneKeyhare”,而后保存设置,退出属性窗口。
完成上述步骤,“刷新”并“清理”一下您的项目,若未提示错误,ShareSDK已经导入到您的项目中。若是控制台报错,应该是support-v4的jar重复的问题,删除你项目中的support-v4就行,接下来就是配置不一样平台的应用信息和注册受权以及快捷分享的Activity了。 对于1.2.0之前已经集成Share SDK,如今要升级的开发者,能够参考“复制jar和资源文件”的方式来升级SDK,也能够将您libs中对Share SDK所引用的jar删除,而后依照上述的步骤从新引用。因为Share SDK 2.0并不兼容1.x的版本,所以会有一些代码须要改动。主要的修改原则是将全部包含“Weibo”名称的字段和方法,以“Platform”来替换;AbstractWeibo被拆分为两个,对于Share SDK而言的静态方法被分配到类ShareSDK中,其余的和具体平台操做有关的成员,被分配到类Platform中。更多的详细内容,能够参考咱们Wiki上的2.0升级指南。 Share SDK的快捷分享只提供源码,并无编译好的jar。MainLibs的libs目录中包含的是Share SDK的核心类库,不一样的jar对应不一样的平台,其对应关系能够参考后文的平台对应列表。对于大部分的开发者,这些平台并不都是须要的,这时候能够直接删除此目录下不须要平台的jar包便可,直到后续需求变动,须要添加新的平台,再复制新平台的jar到此目录下就好了。java
Share SDK有不一样的应用信息配置方式。您能够在Share SDK的应用管理后台中配置,或者经过“assets/ShareSDK.conf”文件来配置,或者经过“ShareSDK.setXXXXXDevInfo”方法组来设置。开发者能够自行选择,不过这三种设置方式各有区别:第一种方式优先级别最高,能够实现“动态配置应用信息”的功能,可是一旦脱离网络,Share SDK可能没法运做;第二种方式是优先级最低的方式,可是它最为方便、集中;最后使用代码设置的方式是最灵活的方式,开发者能够在代码里面写死应用信息,也能够经过私有协议,从本身的服务器上动态获取应用信息,其优先级居第一种和第二种之间。下面介绍一下如何使用“assets/ShareSDK.conf”配置您项目的应用信息列表。 获取信息之后,将这些信息都存放在您项目的“assets/ShareSDK.conf”中。请到“Res”中将ShareSDK.conf复制到您项目的“assets”下,打开文件,而后根据不一样的平台的数据,以下面的例子所示,替换您在这个平台上的开发者信息:node
ShareSDK.conf以XML格式存储数据,每个平台一个块,除了社交平台外,开发者在Share SDK注册应用时获得的Appkey须要填写在块“ShareSDK”中,若是此Appkey不是开发者本身的Appkey,则未来在Share SDK应用后台的统计数据将不正确。Share SDK的每个平台都具有SortId、Id、ShortLinkConversationEnable和Enable四个字段,除此以外的字段(如新浪微博的AppKey、AppSecret、RedirectUrl等字段)须要到目标平台上注册应用之后获得,请正确填写这些字段的数据,不然Share SDK没法完成受权,则后续的其它操做也将没法执行。关于应用信息不一样字段的更详细解释,能够参考ShareSDK.conf文件头部的说明。 android
不一样的集成度须要在AndroidManifest.xml中添加的内容不同。可是首先您须要添加下面的权限列表: api
这些权限将容许您的项目和Share SDK判断当前应用是否“前置”、获取链接网络的权限、获取您的设备网络状态的权限、实现https安全链接的权限、读取手机设备状态的权限和保存必要配置的权限。通常来讲,即使不集成Share SDK,大部分的项目也都会注册申请这些权限。 其次,为了受权操做能够顺利完成,须要在application下注册下面的Activity: 安全
ShareSDKUIShell的路径是固定的,必定要在“cn.sharesdk.framework”下,由于它在Share-Core中。 最后,若是您的项目集微信或者微信朋友圈,则须要在application下注册下面的回调Activity: 服务器
这个类的路径是须要根据您项目的包名来肯定,通常其路径是“您的包名. wxapi.WXEntryActivity”。若是路径错误,您将收不到微信客户端的操做回调,所以Share SDK也没法给予您操做回调。 微信
集成Share SDK须要至少在两个地方添加代码,包括: 1) 打开您项目的入口Activity,在其onCreate中插入下面的代码: 网络
这行代码会初始化Share SDK,此后对Share SDK的操做都依次为基础。若是不在全部Share SDK的操做以前调用这行代码,会抛出空指针异常。 2)在您项目的出口Activity的onDestroy方法的第一行插入下面的代码:
这行代码会结束Share SDK的统计功能并释放资源。若是这行代码没有被调用,那么“应用启动次数”的统计将不会准确,由于应用可能历来没有被关闭。 initSDK是能够重复调用的,其实Share SDK建议在您不肯定的时候调用这个方法,来保证Share SDK被正确初始化。而stopSDK一旦调用了,就必须从新调用initSDK才能使用Share SDK的功能,不然会出现空指针异常。 至于如何调用受权、获取资料、分享等操做,请参考后续章节的说明。
对于Share SDK的大部分平台,只要您参考上面的集成步骤引入到您的项目之后就能够开始进行工做了。可是对于微信的两个平台(微信好友和微信朋友圈)却不行。由于微信开放平台要求android的第三方开发者须要提供本身项目的包名和签名。下面简要叙述添加这些的操做流程: 1)您须要到微信开放平台上注册一个开发者帐号,而后利用这个帐号添加一个移动应用。
应用建立出来之后,您会获得一个AppId,将这个Id添加到assets/ShareSDK.conf中。
2)添加Android平台的信息。这些信息包括:下载地址、应用签名和包名。
上图中的下载地址不能够是应用apk文件的直接地址,而报名则是您应用的包名。至于应用签名,事实上您应用签名文件(keystore文件)的MD5值。有多种计算方式: (1)使用微信提供的签名计算工具,来签名: 若是您但愿经过这个方法来计算签名,则须要下载微信的签名计算工具。此处须要注意的是下载回来的文件必定是“apk”的,若是您下载回来的文件是zip或者后缀名,请修改其后缀名为“apk”,并复制到您的手机上安装。 而后为您的应用导出一个签过名的apk。请注意,这个签名应该是您未来发布应用时的签名,也就是所谓的“正式包签名”。这里须要解释一下,微信并不要求具体使用的签名文件的性质,可是修改签名常常会致使问题,因此为了不没必要要的麻烦,Share SDK强烈建议您使用正式包的签名。 安装导出的apk文件,而后运行微信的签名计算工具。并在其中输入您应用的包名,微信会自动计算您应用所签keystore的MD5:
转至微信开放平台,将计算好的结果填写到其中并保存。 (2)利用Eclipse导出签名时显示的签名MD5值: 利用此方法,要求您下载最新版本的Eclipse Android开发插件(ADT)。确保此条件后,右键您的项目,选择“Android Tools”—“Export Signed Application Package…”:
此时会弹出一个导出签名apk的窗口,输入您应用正式签名和密码之后,会在导出页面中,显示您签名的MD5值。将其复制出来,调整为小写,并去除多余的风格符。转至微信开放平台,将计算好的结果填写到其中并保存便可。
(3)Linux(Ubuntu)下,利用Shell直接计算: 若是您使用Ubuntu操做系统,能够直接利用下面的Shell命令计算出签名文件的MD5值:
keytool -exportcert -alias <keystore别名> -keypass <别名密码> -keystore <keystore路径> -storepass <keystore密码> | md5sum
如: keytool -exportcert -alias demokey.keystore -keypass 123456 -keystore demokey.keystore -storepass 123456 | md5sum
其实出以下: 将其复制出来,转至微信开放平台,将计算好的结果填写到其中并保存便可。 完成上述的注册操做之后,将您的项目提交微信开放平台审核,审核经过之后,您的项目就能够开始调用微信客户端进行分享了。分享时,须要利用上文提到的keystore来给您的apk签名,签名之后放到您的机器上、安装,之后才能调用分享。不能直接在Eclipse上run,由于签名和包名都已经捆绑,若不是注册时填写的签名,微信客户端将拒绝请求。 为了演示分享功能Sample包中携带了一个"demokey.keystore"的keystore文件,其密码是“123456”,若是您在调试Sample项目的时候集成了微信的平台,就须要使用这个keystore对apk进行签名,以后才能尝试微信的分享。可是请注意:这个keystore已经和“cn.sharesdk.demo”这个包名捆绑,若是您的项目不使用这个包名,是不能直接使用这个keystore的。
下面是Share SDK当前所支持平台及其jar包的对应表[1]:
、
平台 | Jar包 |
---|---|
新浪微博 | ShareSDK-SinaWeibo.jar |
腾讯微博 | ShareSDK-TencentWeibo.jar |
ShareSDK-QQ.jar | |
QQ空间 | ShareSDK-QZone.jar |
微信好友[2] | ShareSDK-Wechat.jar |
微信朋友圈[2] | ShareSDK-Wechat-Moments.jar |
ShareSDK-Facebook.jar | |
ShareSDK-Twitter.jar | |
人人网 | ShareSDK-Renren.jar |
开心网 | ShareSDK-KaiXin.jar |
邮件 | ShareSDK-Email.jar |
信息 | ShareSDK-ShortMessage.jar |
搜狐微博 | ShareSDK-SouhuMicroBlog.jar |
网易微博 | ShareSDK-NetEaseMicroBlog.jar |
豆瓣 | ShareSDK-Douban.jar |
有道云笔记 | ShareSDK-YouDao.jar |
印象笔记 | ShareSDK-Evernote.jar |
ShareSDK-Linkedin.jar | |
Google+ | ShareSDK-GooglePlus.jar |
FourSquare | ShareSDK-Foursquare.jar |
搜狐随身看 | ShareSDK-SohuSuishenkan.jar |
Flickr | ShareSDK-Flickr.jar |
ShareSDK-Pinterest.jar | |
Tumblr | ShareSDK-Tumblr.jar |
Dropbox | ShareSDK-Dropbox.jar |
ShareSDK-Instagram.jar | |
VKontakte | ShareSDK-VKontakte.jar |
注: [1] 因为全部平台都依赖于ShareSDK-Core.jar,故此表略去每一项中的此包,以避免冗余 [2] 微信的两个平台(微信好友和微信朋友圈)除了依赖ShareSDK-Core.jar外,还依赖ShareSDK-Wechat-Core.jar,使用的时候需注意不要遗漏。
下面是Share SDK不一样平台应用信息注册网站的地址[1]:
、
平台 | 网站 |
---|---|
新浪微博 | http://open.weibo.com |
腾讯微博 | http://dev.t.qq.com |
QQ空间[2] | http://connect.qq.com/intro/login/ |
微信好友[3] | http://open.weixin.qq.com |
https://developers.facebook.com | |
https://dev.twitter.com | |
人人网 | http://dev.renren.com |
开心网 | http://open.kaixin001.com |
搜狐微博 | http://open.t.sohu.com |
网易微博 | http://open.t.163.com |
豆瓣 | http://developers.douban.com |
有道云笔记 | http://note.youdao.com/open/developguide.html#app |
印象笔记 | https://dev.evernote.com/ |
https://www.linkedin.com/secure/developer?newapp= | |
FourSquare | https://developer.foursquare.com/ |
搜狐随身看 | https://open.sohu.com/ |
Flickr | http://www.flickr.com/services/ |
http://developers.pinterest.com/ | |
Tumblr | http://www.tumblr.com/developers |
Dropbox | https://www.dropbox.com/developers |
http://instagram.com/developer# | |
VKontakte | http://vk.com/dev |
注: [1] Email、信息和Google+不须要注册便可使用 [2] QQ客户端分享和QQ空间使用相同的应用信息配置页面 [3] 微信好友和微信朋友圈使用相同的注册信息