2011-07-29 65 views
0

我已经构建了本地音频示例并将其下载到我的Galaxy Tab 10.1,但它不起作用。它看起来会开始(即窗口名称出现在顶部),但之后崩溃很难。我希望有人可能有一个想法,为什么?这可能是Tab上的音频支持问题,或者...?Android NDK本地音频示例崩溃

我也尝试使用“android_native_app_glue”创建自己的非常简单的本机活动,它也崩溃 - 即使我没有OpenSL调用。实际上,我所要做的就是将-lOpenSLES添加到我的LOCAL_LDLIBS中,以导致启动失败。当我删除该链接器标志时,不会崩溃。非常奇怪,让我觉得Tab中缺少原生音频支持?

感谢, ALF

+1

“崩溃”这个术语太不精确了,因为任何人都很难理解这个问题。发布任何UI错误消息和试图启动程序的logcat日志。 –

+0

下面的示例LogCat输出。 – ALF

+0

08-01 10:13:55.570:WARN/dalvikvm(6348):threadid = 1:线程退出与未捕获的异常(组= 0x4016d760) 08-01 10:13:55.580:错误/ AndroidRuntime(6348):致命异常:main 08-01 10:13:55.580:ERROR/AndroidRuntime(6348):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.native_activity/android.app.NativeActivity}:java.lang.IllegalArgumentException:无法加载本机库:/data/data/com.example.native_activity/lib/libnative-activity.so – ALF

回答

0

事实上,所有我需要做的就是添加-lOpenSLES我LOCAL_LDLIBS引起的启动崩溃。当我删除该链接器标志时,不会崩溃。非常奇怪,让我觉得Tab中缺少原生音频支持?

您logcat似乎表明加载/data/data/com.example.native_activity/lib/libnative-activity.so失败。如果不能复制问题来验证会导致的错误消息,这很可能是由于运行时链接程序无法找到要加载的引用系统库,或者它可能是一个令人困惑的报告,无法找到libnative- activity.so本身,或lib中的未解决符号,或其他。

如果您有其他设备进行测试,那将是一条明显的道路。

还从已知使用本地音频的其他人测试已编译的应用程序。

如果这两者都不可行,那么可以使用readelf或objdump(特别是安装在ndk中某处的android版本)甚至字符串或grep来查找libnative-activity.so所需的系统库名称,以及然后查看它们是否确实存在于您的设备上。

+0

谢谢!我没有其他设备可以测试,但在与同事交谈后,我认为这是Android版本不兼容的问题。本地音频是为API级别9和我的标签是API级别12(我认为)。我假定API级别的向前兼容性,但事实并非如此。如果正确,这个menas API 2.3设备应该支持原生音频,但3.1设备不会。真正? – ALF

+0

@ALF我怀疑它已从3.1中删除,尽管它可能会在某个特定供应商发布时被无意中破坏。为什么不试图找出确切的问题,而不是放弃? –

+0

其他人似乎已经发现该IOI 10.1选项卡中缺少该库,但认为它是Google CTS套件所必需的:http://forum.xda-developers.com/archive/index.php/t-1119189 .html所以可能你有什么是消费前的例子。该链接还包括一个建议的解决方法;有一点创意,你可能能够从其他地方加载库,并避免需要根。 –