AndroidStudio集成JPushSDK so文件的问题

error
标签: #<Tag:0x00007fb84a1e9ab0>

(Lee Huohuo) #1

我是将包含so文件的jni文件夹放到jniLibs文件夹下,build配置如下

 sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }

可一直提示获取sdk版本失败,无奈之下将so放到libs文件夹下, jniLibs.srcDirs = [‘src/main/jniLibs’]更改为 jniLibs.srcDirs = [‘libs’],这样就没报错了。。。请问这是什么原因,你们的ndk没有处理好文件位置吗?图片如下:


我使用的是jar包,放在了libs下,jar包版本为jpush-android-2.1.3.jar,开发环境:Linux Ubuntu 14.04,错误日志如下:

12-28 10:19:41.211 998-998/com.name.main E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!]
12-28 10:19:41.211 998-998/com.name.main E/JPush: [JPushGlobal] JPush .so file do not match JPush .jar file in the project, Failed to init JPush
12-28 10:19:41.248 998-1034/com.name.main E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
                                                                 Process: com.name.main, PID: 998
                                                                 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtocol
                                                                     at cn.jpush.android.service.k.run(Unknown Source)
                                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                     at java.lang.Thread.run(Thread.java:818)

#2

这是集成文档中的说明。


(Lee Huohuo) #3

不可以,我把build配置的jniLibs注释掉,cpu文件放入自己创建edjniLibs下,make build之后,出现同样的错误


(Lee Huohuo) #4

拷贝进去依然如此,build的配置也注释掉了,没用


#5


(Lee Huohuo) #7

https://community.jiguang.cn/uploads/default/original/2X/b/b082ab6d9d9fb5e068b6a1b71df5c45ab355d5bb.png
1.位置如下,证明我没有放错地方
2.build文件不管我配没配置,我都试了一遍,都会出现上述错误


#8

请阅读一下这个帖子里面的讨论,和最后提问者的配置截图,根据demo和集成指南里面所说的进行配置,你选择其中一种集成成功即可。

最后:


(Lee Huohuo) #9
No implementation found for int cn.jpush.android.service.PushProtocol.GetSdkVersion()
 (tried Java_cn_jpush_android_service_PushProtocol_GetSdkVersion and Java_cn_jpush_android_service_PushProtocol_GetSdkVersion__)

这里要说明一下,Jpush的其它功能是没有问题的,只是报“获取sdk版本失败”这个错误,其它功能正常使用,错误日志如上,使用编辑器打开so文件,大部分都是乱码,但其中“GetSdkVersion”这个方法名没有显示为乱码,但在jpush.jar包内没有搜索到相应方法,虽然混淆了,具体原因我不清楚。所有错误日志如下:

 12-28 16:09:34.149 2165-2165/? E/art: No implementation found for int cn.jpush.android.service.PushProtocol.GetSdkVersion() (tried Java_cn_jpush_android_service_PushProtocol_GetSdkVersion and Java_cn_jpush_android_service_PushProtocol_GetSdkVersion__)
12-28 16:09:34.150 2165-2165/? E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!]
12-28 16:09:34.150 2165-2165/? E/JPush: [JPushGlobal] JPush .so file do not match JPush .jar file in the project, Failed to init JPush
12-28 16:09:34.159 259-578/? E/VolumeManager: Failed to find mounted volume for /storage/sdcard1/Android/data/com.sina.weibo/cache/
12-28 16:09:34.159 4930-4930/com.youke.linzhilin E/TAG: 默认phone-->15821610287
12-28 16:09:34.159 4930-4930/com.youke.linzhilin E/TAG: 默认pwd-->123456
12-28 16:09:34.159 4930-4930/com.youke.linzhilin E/TAG: WOCAIINIOANWFIOAWNFIAWONIFAIOWFNOAIWFNIOAWNOIWNGIOA
12-28 16:09:34.218 28730-4852/? E/Parcel: Reading a NULL string not supported here.
12-28 16:09:34.335 5791-5791/com.pengsheng.main E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!]
12-28 16:09:34.335 5791-5791/com.pengsheng.main E/JPush: [JPushGlobal] JPush .so file do not match JPush .jar file in the project, Failed to init JPush
12-28 16:09:34.343 5791-5791/com.pengsheng.main E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!]
12-28 16:09:34.344 5791-5791/com.pengsheng.main E/JPush: [JPushGlobal] JPush .so file do not match JPush .jar file in the project, Failed to init JPush
12-28 16:09:34.381 4930-5851/com.youke.linzhilin E/libEGL: cache file failed CRC check
12-28 16:09:34.385 5791-5870/com.pengsheng.main E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
                                                                  Process: com.pengsheng.main, PID: 5791
                                                                  java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtocol
                                                                      at cn.jpush.android.service.k.run(Unknown Source)
                                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                      at java.lang.Thread.run(Thread.java:818)

配置截图:


#11

为什么还有这个

其他功能正常?可以收到通知?

你是不是之前用[quote=“lee-huohuo, post:1, topic:12003”]
将so放到libs文件夹下, jniLibs.srcDirs = [‘src/main/jniLibs’]更改为 jniLibs.srcDirs = [‘libs’],这样就没报错了
[/quote]

这种方式已经成功集成过了?现在用另外一种方式搞不定?


(Lee Huohuo) #12

1.其它功能正常,可以收到通知;
2.早上是改为libs就行了,现在就算改为libs也是报同样的错误;
3.jpush-android-2.1.3.jar这个包是之前在用的,另外两个是在官网下的最新版,so文件也进行了相应的替换,但是所有可配置的都试着配置了一遍,配置方法应该不会出问题,我使用的其他第三方so包都是正常使用的,如:weibo.so,唯独这个,总是提示获取sdk版本失败。


(Lee Huohuo) #13

虽然不影响使用,但总归是在报错,提示也很明显,ndk方法名无法匹配


#14

麻烦把jpush-android-2.1.3.jar删掉


(Lee Huohuo) #15

删掉并make项目了,都试过了,还是不行的,我放在那里只是为了以后可能会再用到,并没有添加进去


#16

你之前没有加weibo等其他的so吧?

你将这个,只有极光的so的,没有其他的这个删掉试试。

或者找一下另外两个so有没有全平台的,也在这里加上试试


(Lee Huohuo) #17

还是不行。。删掉了也没用,我直接不使用其他so文件了,只留下你们的,可还是失败了


(Lee Huohuo) #18

你们配置成功过吗?使用jniLibs。。。。我们几个同事都遇到这个问题,不管用的androidstudio 还是eclipse Windows或Linux,都遇到了,因为有好几个项目都使用了JPush


#19

:anguished:当然是成功的,不然怎么会放出来。完全跟着集成文档走,基本不会有问题的,你可以看我们的demo有没有问题。

要不我们冷静一下,清一下工程,从头开始集成配置一遍,你就只留下需要的,并且坚定的选择加到lib里面的做法,我之前有问过这个问题,你没有回答:


(Lee Huohuo) #20

我下载的就是release版本啊,包名为:jpush-android-release-3.0.0.zip,我先试一下重建一个项目配置一下吧,看是不是其它未知第三方冲突的原因