我的应用程序中的本机可执行文件在哪里?

时间:2014-02-19 19:28:09

标签: android eclipse android-ndk java-native-interface native-executable

我有一个应用程序项目,其中包含一个带有以下makefile的jni本机代码(example.c):

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := example
LOCAL_SRC_FILES := example.c
LOCAL_LDLIBS    := -L$(SYSROOT)/usr/lib -llog 

include $(BUILD_EXECUTABLE)

所以我把它构建成可执行文件,一切顺利。 可执行文件是否已与应用程序“打包”? 如果是,我如何在内存中获取其路径或位置,以便我可以从java代码中运行它?

PS:我没有将本机代码构建为共享库,因为我想以root命令运行main函数,如下所示:

chmod 777 /path/exe
/path/exe

1 个答案:

答案 0 :(得分:0)

创建目录:/jni和另一个目录/libs。现在将example.cAndroid.mk放在/jni目录中。现在cd/jni目录并输入命令ndk-build。如果您的makefile正确并且源文件中没有错误,则会在/libs目录下创建另一个名为/armeabi的新目录。在此目录中,您的可执行文件将存在。

要执行此可执行文件,Android设备必须是root用户,或者您可以使用随SDK提供的Android模拟器。

此外,您需要将此可执行文件放入Android设备的/data/local/位置(因为即使您的设备已植根,您也不会拥有其他位置的执行权限。

您可以使用以下命令执行此操作:

adb push example /data/local/

现在进入adb shell模式并cd到/data/local/

更改您的文件权限:chmod example 777

现在,您可以在同一位置放置您的shell文件。您也可以从此目录访问您的SD卡和其他文件夹。

希望这对你有所帮助。如果一切正常,请不要忘记接受答案。