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



我有一个应用程序项目,它包括一个jni本地代码(example.c),带有以下makefile:

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代码中运行它?

附言:我不会把本机代码构建为共享库,因为我想用shell命令以root身份运行一个主函数,比如:

chmod 777 /path/exe
/path/exe

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

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

此外,您需要将此可执行文件放置到android设备的/data/local/位置(因为即使您的设备是根设备,您也没有来自其他位置的执行权限。

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

adb push example /data/local/

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

更改文件权限:chmod example 777

现在,在这个相同的位置,您可以放置您的shell文件。此外,您还可以从此目录访问您的SD卡和其他文件夹。

希望这对你有帮助。如果一切顺利,别忘了接受答案。

最新更新