Open alwaystest opened 8 years ago
标签(空格分隔): Android
为了方便,使用ShareSDK 2.7.6 来集成应用的分享功能。
先通读官方WIKI,有几点说明比较模糊,记录一下。
首先去官网下载最新版本的SDK,根据需求集成需要的平台,集成的越少,需要下载的SDK文件就越小。
运行QuickIntegrater.jar可以快速的生成一个“Android项目”,加引号的原因是相对以正常的Android项目,他缺少了AndroidManifest文件,因为是集成到一个已有的项目中去的,所以这里不需要这个文件。
QuickIntegrater.jar
使用QuickIntegrater.jar进行快速集成的时候,输入的项目名就是即将生成的Android项目的名字,包名是用来存放微信客户端回调Activity的java源文件的包名。输入的项目名其实无所谓啦,就是让你稍后能找到生成的项目在哪里。包名就比较重要了,因为Java源文件需要说明所在的package,就是这个啦,要是随便输的话,接下来要把这个文件放进项目中,还需要再根据情况更改Java源文件的package的。
生成快速集成的项目以后,除了这个项目以外的文件就没有用了,QuickIntegrater.jar就是根据项目名和包名自动整理了一下下载到的文件。
如果要直接集成到现有的项目中,按照官方说明做就好了。
但是如果不希望天天看到这么一堆将来不怎么可能更改的代码的话,我的选择是把ShareSDK作为Android Library Project 集成到项目中去。即Android Studio中的Module。
在Android中新建Module,注意选择为Library Project。这里要注意的是由于Gradle Plugin的Bug,Library Project会始终以release版本发布。
如果对Android Studio的Module (即Library Project)不了解的话,可以看看文章末尾我的一点看法,希望对理解这个概念有所帮助。
新建好Module以后,Android Studio会自动新建这个Module的Android Manifest文件。将上面生成的项目下面的文件放到他们应该在的位置上,这里就不用详细说了吧,Android项目的基本文件结构。src下面的文件需要放到Module下面的src/main/java下,保持包结构不变。
src/main/java
在Module的Manifest文件里声明Activity,这里如果你上面生成项目时候包名写好了,这里就可以直接使用.wxapi.WXEntryActivity来声明Activity的位置了。至于那个cn开头的包,貌似里面没有Activity,不需要在这里声明。要用的话直接new OnekeyShare()就可以了,具体可以查看官方文档,我没有用到他。
.wxapi.WXEntryActivity
new OnekeyShare()
具体声明哪些Activity可以查看官方文档,这里没什么问题。
声明权限的地方,我没有直接把所有他要用的权限都粘过来,因为发现都粘过来以后应用多了一个访问联系人的危险权限,对于Android上乱申请权限的大环境,一看到一个应用申请用不到的敏感权限,心中对该应用的评价马上降低。所以我暂时先移除了以下两个权限。等将来出现问题再补回来。目前没有发现微信分享少了这个权限不能运行的情况。
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
还有一个地方是<uses-permission android:name="android.permission.READ_PHONE_STATE"/>权限,申请之后会提示需要phone权限,个人觉得读取IMEI这种操作也会申请到这么大的权限,实在无法让用户放心啊。
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
分享到指定平台可以查看这里
对于微信分享,有两种方式,绕过审核分享和不绕过审核分享,说明见这里
Module项目可以理解为一个方便被集成到各个项目中的小模块,比如专门做Log的项目。
Module项目的Android Manifest文件会与主项目的Manifest项目merge。所以权限申请在两个文件中都是有效的。最好按模块分开,便于将来重用。
Module项目的depencency也可以被主项目使用。
对于使用APT生成代码的依赖库,要在用到的Module中都声明使用APT插件。比如在主项目和Module项目都用到了ButterKnife,那么需要在两个项目的build.gradle文件中都声明使用APT生成代码。
Module项目被主项目依赖,所以主项目可以调用Module项目的代码,Module项目之间没有声明项目依赖的话,应该是不可以互相调用的(猜想。。。)
Application文件只能有一个,不论在哪个Module里面,如果多个Module都指定了Application。编译时会报错。
Android ShareSDK集成
标签(空格分隔): Android
为了方便,使用ShareSDK 2.7.6 来集成应用的分享功能。
先通读官方WIKI,有几点说明比较模糊,记录一下。
首先去官网下载最新版本的SDK,根据需求集成需要的平台,集成的越少,需要下载的SDK文件就越小。
运行
QuickIntegrater.jar
可以快速的生成一个“Android项目”,加引号的原因是相对以正常的Android项目,他缺少了AndroidManifest文件,因为是集成到一个已有的项目中去的,所以这里不需要这个文件。使用
QuickIntegrater.jar
进行快速集成的时候,输入的项目名就是即将生成的Android项目的名字,包名是用来存放微信客户端回调Activity的java源文件的包名。输入的项目名其实无所谓啦,就是让你稍后能找到生成的项目在哪里。包名就比较重要了,因为Java源文件需要说明所在的package,就是这个啦,要是随便输的话,接下来要把这个文件放进项目中,还需要再根据情况更改Java源文件的package的。生成快速集成的项目以后,除了这个项目以外的文件就没有用了,
QuickIntegrater.jar
就是根据项目名和包名自动整理了一下下载到的文件。如果要直接集成到现有的项目中,按照官方说明做就好了。
但是如果不希望天天看到这么一堆将来不怎么可能更改的代码的话,我的选择是把ShareSDK作为Android Library Project 集成到项目中去。即Android Studio中的Module。
在Android中新建Module,注意选择为Library Project。这里要注意的是由于Gradle Plugin的Bug,Library Project会始终以release版本发布。
如果对Android Studio的Module (即Library Project)不了解的话,可以看看文章末尾我的一点看法,希望对理解这个概念有所帮助。
新建好Module以后,Android Studio会自动新建这个Module的Android Manifest文件。将上面生成的项目下面的文件放到他们应该在的位置上,这里就不用详细说了吧,Android项目的基本文件结构。src下面的文件需要放到Module下面的
src/main/java
下,保持包结构不变。在Module的Manifest文件里声明Activity,这里如果你上面生成项目时候包名写好了,这里就可以直接使用
.wxapi.WXEntryActivity
来声明Activity的位置了。至于那个cn开头的包,貌似里面没有Activity,不需要在这里声明。要用的话直接new OnekeyShare()
就可以了,具体可以查看官方文档,我没有用到他。具体声明哪些Activity可以查看官方文档,这里没什么问题。
声明权限的地方,我没有直接把所有他要用的权限都粘过来,因为发现都粘过来以后应用多了一个访问联系人的危险权限,对于Android上乱申请权限的大环境,一看到一个应用申请用不到的敏感权限,心中对该应用的评价马上降低。所以我暂时先移除了以下两个权限。等将来出现问题再补回来。目前没有发现微信分享少了这个权限不能运行的情况。
还有一个地方是
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
权限,申请之后会提示需要phone权限,个人觉得读取IMEI这种操作也会申请到这么大的权限,实在无法让用户放心啊。分享到指定平台可以查看这里
对于微信分享,有两种方式,绕过审核分享和不绕过审核分享,说明见这里
Module项目可以理解为一个方便被集成到各个项目中的小模块,比如专门做Log的项目。
Module项目的Android Manifest文件会与主项目的Manifest项目merge。所以权限申请在两个文件中都是有效的。最好按模块分开,便于将来重用。
Module项目的depencency也可以被主项目使用。
对于使用APT生成代码的依赖库,要在用到的Module中都声明使用APT插件。比如在主项目和Module项目都用到了ButterKnife,那么需要在两个项目的build.gradle文件中都声明使用APT生成代码。
Module项目被主项目依赖,所以主项目可以调用Module项目的代码,Module项目之间没有声明项目依赖的话,应该是不可以互相调用的(猜想。。。)
Application文件只能有一个,不论在哪个Module里面,如果多个Module都指定了Application。编译时会报错。