【发布时间】:2012-01-04 17:20:30
【问题描述】:
我在 Eclipse 中有一个项目,它使用 CDT 和 ADT 混合原生代码和 Java 代码。真的很简单——演示项目,就像在android-ndk-r7/samples/hello-jni中一样
我的 Android.mk(在 /jni 文件夹中)是:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := hlsdrm
LOCAL_SRC_FILES := hlsdrm.cpp
include $(BUILD_SHARED_LIBRARY)
一切编译正常,我可以通过
加载 hlsdrm 库System.loadLibrary("hlsdrm");
并调用本机函数。但是库文件放在哪里呢?任何项目文件夹中都没有 libhlsdrm.so 共享库。正如我所读到的,它应该创建一个文件夹“libs”并将生成的库放入其中。
另外,当我尝试通过调用列出应用程序进程使用的库时:
PackageManager pm = getPackageManager();
String applicationPackage = this.getApplicationInfo().packageName;
ApplicationInfo ai = pm.getApplicationInfo(applicationPackage, PackageManager.GET_SHARED_LIBRARY_FILES);
String[] soFiles = ai.sharedLibraryFiles;
那么 soFiles 变量为空...
我试图通过清单的应用程序部分中的uses-library 值指定库,但之后Android OS 拒绝安装该应用程序并显示INSTALL_FAILED_MISSING_SHARED_LIBRARY 错误。
谁能解释我如何获得我的共享库 - 物理 .so 文件?
为什么sharedLibraryFiles 是空的,即使加载了库并且可以调用本机方法?
如何安装需要自定义共享库的应用程序?
【问题讨论】:
标签: android android-ndk