最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件。他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了。
问题一:libweibosdkcore.so文件无法识别导入。
试过将.so文件的那几个平台的文件夹放到jniLib和libs文件夹下,发现都还是无法识别和自动导入.so文件。最后百度后的解决办法如下,在app主工程的gradle文件中添加如下代码:
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
/** 导入so文件 */
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
/** 导入so文件 */
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
作用:增加packagingOption声明,并在下面的gradle方法中将libs文件夹下的各个平台.so文件的文件夹打包成一个名为Native_Libs2的jar包,然后Build两次project(配置了compile freeTree的一次即可,不过需要gradle sync一下)即可。这时发现不会再报.so找不到的exception了。
ps:应该还有更好的方案可以让AS识别到.so,等找到后补充。
问题二:微博分享不回调
1.WBShareActivity如图:
- public class WXEntryActivity extends WXCallbackActivity {
- }
2.修改回调WBShareActivity的配置:
- <!-- 微博 -->
- <activity android:name=".wbapi.WBShareActivity">
- <intent-filter>
- <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
- <category android:name="android.intent.category.DEFAULT"/>
- </intent-filter>
- </activity>
- <activity
- android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
- android:configChanges="keyboardHidden|orientation"
- android:exported="false"
- android:windowSoftInputMode="adjustResize">
- </activity>