求助Android APP版本兼容问题

2013-04-19 13:37:27 +08:00
 yujian0x37
APP通过JNI调用了Android源码中关于AndioTrack的一些函数来播放声音,在4.0下编译,4.0的手机上使用OK,但在4.1的手机上一加载JNI库就报错崩溃了。

java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]: 37 cannot locate '_ZN7android10AudioTrack3setEijiiijPFviPvS1_ES1_iRKNS_2spINS_7IMemoryEEEbi'...


求教,有什么解决办法,一般Android上报本兼容是怎么做的,不会是每个版本编一个库吧?
4684 次点击
所在节点    问与答
5 条回复
yujian0x37
2013-04-19 13:38:02 +08:00
求大神指点啊!!T T
ljbha007
2013-04-19 13:40:07 +08:00
解决办法就是不要调用GOOGLE的私有API
GOOGLE的ANDROID官网说的很明确 不保证私有API各个版本兼容
yujian0x37
2013-04-19 13:46:18 +08:00
@ljbha007 那是不是只能通过JAVA调用API,不能在JNI中调底层函数呢?
ljbha007
2013-04-19 13:50:49 +08:00
@yujian0x37 可以啊 只有NDK文档里边提到的API是可以安全调用的 其他都不保证 而且不同发行商固件中的的共享库可能不同 所以你调用到的共享库不一定存在 如果存在版本也不一定一样
yujian0x37
2013-04-19 14:06:30 +08:00
@ljbha007 多谢~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/66311

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX