从这篇文章
http://marakana.com/forums/android/examples/49.html
我已经看到在 NDK 的帮助下构建的应用程序做了以下事情
1>它编译所有c代码(在jni文件夹内)并制作保留在中的库libs
folder
2> 在 .apk 包里面,库也留在里面lib
folder
在 java 文件中我可以使用以下代码加载该库
static {
System.loadLibrary("ndk_demo");
}
问题1:那么现在是否有可能,我可以将其安装在 Android 系统中并从系统加载我的应用程序,而不是将该库保留为 .apk 的一部分?
问题2:同样的方式我可以使用其他一些已经安装在android中的库吗open GL
, sqLite
?
这两个问题的答案都是“是”,可以。
问题一:
如果你想测试一下,可以按照这个方法。
1)使用NDK编译源代码。
2) 将库复制(adb push)到 Android 设备的 /system/lib 中。运行应用程序。
当您加载库时,它会从 apk 文件的 lib 文件夹或系统的 /system/lib 文件夹进行检查。但要复制到 /system/lib 中,您应该重新挂载文件系统。为此,您必须拥有 root 权限。
Q2:
对问题 1 的回答也回答了这个问题。如果该库存在于 /system/lib 中,您也可以调用现有的库。但有一个小问题。由于 jni 接口遵循命名约定,因此您不能直接调用库内的函数。所以最终“您必须使用现有库创建自己的库".
步骤如下:
拉取库(adb pull)
编写您的本机代码,该代码将调用现有库的例程(例如 OpenGL)
通过将代码与预构建的库链接来编译您的代码(请参阅 NDK 文档文件。它非常清楚地写了如何执行此操作。您需要在编译时在 Android.mk 文件中提及它)。
您最终将获得一个内部包含现有库的共享库。
我对现有库之一 libsqlite 做了同样的事情。如果您被困在某个地方,请告诉我。谢谢
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)