嘿家伙! 我一直致力于最近在Android 2.1和2.2上运行的C++应用程序。 所以我想知道如果我有完整的C++应用程序,我可以把它放入* .so文件,然后创建android项目,只需使用System.loadLibrary(blalba.so)加载这个库; 它会工作吗?JNI与android?
1
A
回答
1
是的,你将不得不重新编译专门为Android的所有本地库。是的,您确实需要所有您计划使用的第三方本机库的源代码,因为通常当我们在Android之外编译和链接这些库时,它们与glibc链接,但不幸的是Android由于显示和性能问题而不使用glibc。 Android使用glibc的淡化版本,称为libc。对于大多数常用功能,它具有与glibc匹配的符号名称。但据我所知,libc没有与Strings相关的一些功能,它绝对没有一些posix支持。如果您的本机库正在使用任何已弃用的功能,则必须通过使用libc支持的其他功能并相应地编码您的库来为这些功能找到解决方法。
另外,正如你指出的那样,你将不得不使用NDK将Java(Android app/fwk)连接到本地(C++)。
虽然这听起来很简单,但根据我的经验,编译Android上的本机库(Android移植)传统上非常耗时且不保证成功。
相关问题
- 1. Android Studio中JNI与C++ UnsatisfiedLinkError
- 2. Android NDK java.lang.UnsatisfiedLinkError JNI
- 3. FFMpeg jni在Android?
- 4. Android - JNI准则
- 5. 使用android JNI
- 6. Android JNI GDB
- 7. JNI和Android ... UnsatisfiedLinkError
- 8. Android的JNI java.lang.UnsatisfiedLinkError
- 9. Robolectric 2与JNI
- 10. Jni教程为Android
- 11. Android SSL JNI结构?
- 12. Android和Java的JNI
- 13. Android JNI APK包装
- 14. Android的JNI电话
- 15. CallIntMethod result -1 - ANDROID JNI
- 16. Android和JNI实时时钟
- 17. OpenCV Mat处理Android JNI
- 18. JNI NewStringUTF崩溃android系统
- 19. Android:捕获SIGSEGV信号JNI
- 20. Android JNI:致死deadd00d(dvmAbort)
- 21. android JNI,如何使用findViewById
- 22. Android的JNI UnsatisfiedLink异常
- 23. Android中的计时器JNI
- 24. JNI与C++对象实例
- 25. 处理与JNI的关联
- 26. 麻烦与编译JNI
- 27. Groovy与Java OpenCV绑定(JNI)
- 28. Android Camera2 JNI图像处理 - 表面没有从JNI解锁?
- 29. 要使用JNI,还是不要使用JNI(Android性能)
- 30. 与Android JNI一起使用库标题的问题
非常感谢评论,这真的很有帮助。顺便说一句,是否有一些特定的Android编码,特别是2.1和2.2,或者它可能只是普通的C++和Java代码? – 2011-05-18 13:56:30
@ user747228:Android有一个3层架构,其中最低层是本地(C/C++),Jni层(称为App Fwk)位于顶层,基于Java的应用位于App Fwk之上。 C,C++代码与Android libc链接,因此它必须符合它(我记得的不同的细节在回答)。关于App Fwk和App,他们使用由Android SDK公开的功能,这或多或少是Java的核心,但Android拒绝说Java。 – 2011-05-18 15:59:52
@ user747228:如果您确实找到有用的答案和评论,请不要忘记将它们标记为已接受的答案:) – 2011-05-18 16:01:57