一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

android studio、eclipse分别导入新浪微博 Android sdk 第三方登录demo

时间:2015-12-09 编辑:简简单单 来源:一聚教程网

1.下载解压sdk
先下载weibo android sdk 包:
打开网址:https://github.com/sinaweibosdk/weibo_android_sdk
将sdk下载到本地,解压后的目录结构:
点击进入“demo-src”目录,结构如下:
将上面的两个项目都导入到eclipse中!!
2.导demo到eclipse
分别修改两个项目的文件编码为UTF-8,保存。
3.修改 debug.keystore
MD5 工具是根据 keystore 来生成签名的,丌同的 keystore 生成的签名是丌一样的。此 Demo 的签名是用官网提
供的 keystore 生成的,若要顺利运行 Demo 程序,需要?行设置戒是替换 keystore,两种方法选择一种操作即可:
方式一:替换 keystore:把 Android 默认的 debug.keystore(在 C:\Users\XXXXX\.android 目录下)替换成官
方在 GitHub 上提供的 debug.keystore。
方式二:在 Eclipse 中设置工程 keystore:在 Eclipse 中点击“WindowsPreferencesAndroidBuild”,在
Custom debug keystore 中选择 Demo 中的 debug.keystore,如下图,点击 ApplyOK,Demo 即可正常运行。
注意:这一步是必须的,如果没有替换,demo 程序在运行时将无法正确的授权成功。用户在替换前,最好先备份
一下原始的 debug.keystore。GitHub 中 debug.keysotre 是新浪官方的,除了编译运行官方 DEMO 外,丌要直
接使用它,出于安全的考虑,用户应该为自己的应用提供一份 keysotre。 
 
4.修复依赖
如果修改完编码后,eclipse仍然显示报错,那么就要去看看是否是项目的依赖出了问题:
选中WeiboSDKdemo后鼠标右键单击——Properties——android——Add,如下图,将WeiboSDK添加为WeiboSDKdemo的依赖项目。(如果没有显示红色的问号,那么说明依赖没有问题)
5.将项目导入到Android studio
最关键的一步,如何将eclipse中的项目导入到Android studio中:
右键项目,选择“export”——android——generate gradle build files ——然后选中要到处都项目,得到导出的项目包。

再将得到的项目包,导入到android studio中。会提示报错,我们需要将项目根目录的build.gradle文件中的(可能你的android studio使用的gradle版本和gradle插件版本与我的有不同,建议更改成自己的所使用的版本):


dependencies {
    classpath 'com.android.tools.build:gradle:0.12+'
}

改为我们使用的新到gradle插件版本:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}

注意:如果有可能,可能还需要改项目根目录下/gradle/wrapper/gradle-wrapper.properties中的

 

6.重新编译运行
改完后,点击“Sync now”,重新编译项目,就会发现项目没有报错,在模拟器中测试,一切正常。
,代码就编译通过,然后在安卓模拟器中运行。如下图:
===================================
问题是,一切没有这么顺利,应为android studio使用的是gradle来编译的。而gradle编译成功的要求要严格一些,你会发现新浪微博的sdk demo运行后会报好几种错误:
错误A:
Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended version is 1.5.0.
Fix plugin version and sync project

解决办法:把demo-src目录下的build.gradle中的gradle插件版本改成你android studio所使用的版本(我使用的是1.5.0):


Java
dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
}
123 dependencies {    classpath 'com.android.tools.build:gradle:1.5.0'}

 

把demo-src/gradle/wrapper/gradle-wrapper.properties中的gradle版本改成android studio所使用的版本(我是用的最新的gradle版本,2.8):
Java
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
1 distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

 

然后”sync now”,就不会报这个错误了。
 
错误B:
这个错误是因为新浪weibo的sdk开发人员偷懒导致的,出错的原因都是在图片的 问题上,所以,我这里将其归为一种错误。
错误如下:
Error:Execution failed for task ‘:WeiboSDKDemo:mergeDebugResources’.
> Crunching Cruncher ic_login_button_blue_normal.9.png failed, see logs
其实,看编译错误,还是要看gradle console里的错误和警告,如下:
AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_normal.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_focused.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
AAPT err(Facade for 576922613): libpng error: Not a PNG file
AAPT err(Facade for 735358242): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-mdpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-hdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 735358242): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-ldpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_pressed.9.png malformed.
AAPT err(Facade for 706899532): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-xhdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 576922613):        No marked region found along edge.
AAPT err(Facade for 576922613):        Found along top edge.
AAPT err(Facade for 1615154168): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-ldpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 1561367387): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-mdpi-v4\ic_com_sina_weibo_sdk_logo.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 1561367387): C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\build\intermediates\exploded-aar\demo-src\WeiboSDK\unspecified\res\drawable-hdpi-v4\ic_com_sina_weibo_sdk_login_with_text.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
上面的错误主要是两种(这里我忽略警告信息,因为警告不会导致编译失败。警告信息其实也是因为png的图片有问题,大家可以自行google原因和解决方法。):
1.AAPT err(Facade for 1170324693): ERROR: 9-patch image C:\Users\AlexY\Desktop\weibo_android_sdk-master\demo-src\WeiboSDKDemo\res\drawable\ic_login_button_blue_normal.9.png malformed.
AAPT err(Facade for 1170324693):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 1170324693):        Found at pixel #2 along top edge.
原因:报这个错,是因为WeiboSDKDemo中的图片有部分其实不是点9图片,只不过是改了后缀名。而前面说过,gradle编译要求高些,所以在eclipse中不会因为这个错误而编译失败,但是android studio却会导致失败。
解决办法:将所以提示不是点9图片的文件,使用android studio的点9图片编辑器,将其修复成点9图片。
2.AAPT err(Facade for 576922613): libpng error: Not a PNG file
原因:这个错误是因为,WeiboSDKDemo中的图片里有图片不是png格式的图片,而是jpg格式的图片,只不过是被新浪的开发人员的直接改成了 “.png”的后缀名,所以,android studio编译不通过。
解决办法:找到那个不是png格式的图片,windows系统貌似没有这个工具,即使是右键查看文件属性也是看不出的。所以,只能借助android studio的图片编辑器了,用android studio依次打开所有的.png文件,最终发现:/demo-src/WeiboSDKDemo/res/drawable/ic_share_music_thumb.png 并不是png格式的,而是jpg

 

然后将其转换为png图片即可。
错误C:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
原因:是因为WeiboSDKDemo/build.gradle文件中的添加了两次WeiboSDK依赖,如下:

 


dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':WeiboSDK')
    compile project(':WeiboSDK')
}


而WeiboSDK/libs下有support-v4.jar,所以导致提示support-v4包多次导入,导致编译失败。
解决办法:删除重复的一行,该称下面的样子:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':WeiboSDK')
    
}


接着”sync now”,重新编译,就不会报这个错误了。

热门栏目