【发布时间】:2014-11-21 13:08:30
【问题描述】:
我在我的 android 应用程序中使用 Proguard 来减少方法的数量 (see this)。为此,我在 proguard-project.txt 文件中编写了一些代码行。在必要的命令之后,所有的罐子都能正常工作。但是当我尝试集成 Quickblox 的视频聊天部分时,他们为我们提供了一个我必须集成的 .so。所以我只是按照他们的指导将它保存在 libs\armeabi\libilbc-codec.so 路径中。现在,当我在没有 Proguard 的情况下运行该项目时,它运行良好,但是当我使用 Proguard 编译它时,它给了我以下错误:
11-21 18:18:19.171: E/AndroidRuntime(19825): FATAL EXCEPTION: Thread-34829
11-21 18:18:19.171: E/AndroidRuntime(19825): java.lang.ExceptionInInitializerError
11-21 18:18:19.171: E/AndroidRuntime(19825): at com.quickblox.videochat.core.objects.AudioRecorder$AudioRecorderRunnable.run(AudioRecorder.java:196)
11-21 18:18:19.171: E/AndroidRuntime(19825): at java.lang.Thread.run(Thread.java:864)
11-21 18:18:19.171: E/AndroidRuntime(19825): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load ilbc-codec: findLibrary returned null
11-21 18:18:19.171: E/AndroidRuntime(19825): at java.lang.Runtime.loadLibrary(Runtime.java:365)
11-21 18:18:19.171: E/AndroidRuntime(19825): at java.lang.System.loadLibrary(System.java:535)
11-21 18:18:19.171: E/AndroidRuntime(19825): at com.googlecode.androidilbc.Codec.<init>(Codec.java:16)
11-21 18:18:19.171: E/AndroidRuntime(19825): at com.googlecode.androidilbc.Codec.<clinit>(Codec.java:5)
11-21 18:18:19.171: E/AndroidRuntime(19825): ... 2 more
11-21 18:18:19.281: E/copybit(19825): Error opening frame buffer errno=13 (Permission denied)
我非常不喜欢使用 Proguard 和 NDK,所以任何人都可以指导我如何克服这个问题?我已经通过右键单击项目-> Android 工具-> 添加本机支持来添加本机支持.. 并选择我一直在使用的 .so 文件。那么任何人都可以提出任何解决方案或我必须写入此 .so 文件才能工作的行吗?
提前致谢。
编辑: 在关注@ph0b 的评论后,我尝试了以下步骤:
我已经从 this tutorial 之后的应用程序中删除了 BDK 支持,并按照他的步骤解压缩了 apk,我在“/lib/armeabi”下获得了我的“libilbc-codec.so”库。但仍然收到以下错误。那么现在可能出了什么问题??
11-24 12:12:29.045: E/AndroidRuntime(6049): FATAL EXCEPTION: Thread-455
11-24 12:12:29.045: E/AndroidRuntime(6049): Process: com.hypersquare, PID: 6049
11-24 12:12:29.045: E/AndroidRuntime(6049): java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/data/app/com.hypersquare-1/base.apk"],nativeLibraryDirectories=[/data/app/com.hypersquare-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libilbc-codec.so"
11-24 12:12:29.045: E/AndroidRuntime(6049): at java.lang.Runtime.loadLibrary(Runtime.java:366)
11-24 12:12:29.045: E/AndroidRuntime(6049): at java.lang.System.loadLibrary(System.java:989)
11-24 12:12:29.045: E/AndroidRuntime(6049): at com.googlecode.androidilbc.Codec.<init>(Codec.java:16)
11-24 12:12:29.045: E/AndroidRuntime(6049): at com.googlecode.androidilbc.Codec.<clinit>(Codec.java:5)
11-24 12:12:29.045: E/AndroidRuntime(6049): at com.quickblox.videochat.core.objects.AudioRecorder$AudioRecorderRunnable.run(AudioRecorder.java:196)
11-24 12:12:29.045: E/AndroidRuntime(6049): at java.lang.Thread.run(Thread.java:818)
【问题讨论】:
标签: android android-ndk quickblox unsatisfiedlinkerror