0

我有一个应用程序项目,其中包含带有以下生成文件的 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:我没有将本机代码构建为共享库,因为我想使用 shell 命令以 root 身份运行 main 函数,如下所示:

chmod 777 /path/exe
/path/exe
4

1 回答 1

0

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

要执行这个可执行文件,android 设备必须是 root 或者你可以使用 SDK 提供的 android 模拟器。

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

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

adb push example /data/local/

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

更改文件权限:chmod example 777

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

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

于 2014-02-21T10:28:36.607 回答