【问题标题】:Where's the native executable in my application?我的应用程序中的本机可执行文件在哪里?
【发布时间】:2014-02-19 19:28:08
【问题描述】:

我有一个应用程序项目,其中包含一个 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 代码中运行它?

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

chmod 777 /path/exe
/path/exe

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    adb push example /data/local/
    

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-27
      • 2015-10-19
      • 2017-02-14
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      相关资源
      最近更新 更多