7 c++ android shared-libraries android-ndk
我准备好开始在这里开始敲打我的头了.我已经阅读了关于这个问题我可以找到的每个SO线程,阅读每个谷歌搜索结果的问题并且找不到深蹲.我正在构建一个Android应用程序,我用C++编写了一个2D引擎,我正在使用与NDK r6b共享版本的stlport.生成libstlport_shared的.so文件并成功复制到我的libs文件夹.我甚至在设备上使用adb shell进行了检查,并正确复制了.so文件.
我尝试了各种解决方案,例如修改我的.mk文件以明确声明libstlport_shared.so为必需模块.在编译期间,一切都很顺利,它显示在APK中,它成功复制到设备.但是我得到了这个错误:
09-17 17:35:26.450: DEBUG/dalvikvm(19277): Trying to load lib /data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so 0x476c6f30
09-17 17:35:26.450: INFO/dalvikvm(19277): Unable to dlopen(/data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so): Cannot load library: link_image[1995]: failed to link libstlport_shared.so
09-17 17:35:26.450: WARN/dalvikvm(19277): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lca/ascensionsystems/mypackagename/Ascengine;.<clinit>
09-17 17:35:26.450: WARN/dalvikvm(19277): threadid=8: thread exiting with uncaught exception (group=0x40025a70)
09-17 17:35:26.470: VERBOSE/WindowManager(4837): Remove Window{479ca678 Starting ca.ascensionsystems.mypackagename paused=false}: mSurface=Surface(name=Starting ca.ascensionsystems.mypackagename, identity=90) mExiting=false isAnimating=true app-animation=android.view.animation.AnimationSet@4794fa10 inPendingTransaction=false mDisplayFrozen=false
09-17 17:35:26.470: ERROR/WindowManager(4837): return in removeWindowLocked
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): FATAL EXCEPTION: GLThread 9
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): java.lang.ExceptionInInitializerError
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.GL2JNIView$Renderer.onSurfaceChanged(GL2JNIView.java:336)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1327)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): Caused by: java.lang.UnsatisfiedLinkError: Library stlport_shared not found
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.Runtime.loadLibrary(Runtime.java:461)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.System.loadLibrary(System.java:557)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.Ascengine.<clinit>(Ascengine.java:26)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): ... 3 more
09-17 17:35:26.500: WARN/ActivityManager(4837): Force finishing activity ca.ascensionsystems.mypackagename/.mypackagenameActivity
Run Code Online (Sandbox Code Playgroud)
请注意,我用"mypackagename"替换了我的真实包名,以免泄露我即将推出的游戏的超级秘密名称.:)还要注意Ascengine是另一个.SO,我的主要应用程序SO是我的2D引擎.
有人遇到这样的问题吗?有任何想法吗?还要注意我在libstlport_shared上做了一个objdump来检查它的deps.我确认它们存在于我的设备上,并且在尝试加载libstlport_shared之前甚至在我的java代码中显式加载它们.没有区别.提前致谢!
也
这是问题的第二个可选组件.我想到的但尚未尝试的一个解决方案是使用System.load(absolutePathToLibrary),但我找不到如何在java中生成此路径.出于显而易见的原因,我不想硬编码.再次感谢!
小智 2
好吧,看来我已经找到了解决方案。我基本上放弃了使用共享版本的 stl 端口并切换到静态。然后我使用 Application.mk 标志重建静态版本:STLPORT_FORCE_REBUILD := true
但是,我仍然遇到奇怪的问题。它编译一次并安装得很好。然后我做了一个清理并重新编译/部署,它会很好地完成构建,然后告诉我我的应用程序在对话框中有错误,但实际上在 Eclipse 中没有。我退出了 Eclipse,重新启动它,清理并重建,现在一切正常了。似乎最新的 NDK 存在一些错误/问题...希望在 NDK r7 进行完整的 STL 移植(但有例外情况等)时能够得到修复。
| 归档时间: |
|
| 查看次数: |
3127 次 |
| 最近记录: |