当前位置: 首页 > 面试题库 >

如何构建可在Android上运行的本机(命令行)可执行文件?

须旭
2023-03-14
问题内容

我已经成功构建了使用本机(JNI)库的Android应用(GUI)。

但是,现在我想创建一个从命令行运行的可执行文件(root特权),并且根本不使用GUI。我该如何构建类似的东西?


问题答案:

从NDK r8d开始,这可以通过更简单的方式解决。

  1. 创建具有以下目录层次结构的项目:
        project/
        jni/
            Android.mk
            Application.mk
            *.c, *.cpp, *.h, etc.
  1. 使用以下内容填写Android.mk。最重要的是最后一行。检查NDK文档中其他变量的含义。
        LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := name-of-your-executable
    LOCAL_SRC_FILES := a.cpp b.cpp c.cpp etc.cpp
    LOCAL_CPPFLAGS := -std=gnu++0x -Wall -fPIE         # whatever g++ flags you like
    LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -fPIE -pie   # whatever ld flags you like

    include $(BUILD_EXECUTABLE)    # <-- Use this to build an executable.
  1. 转到project/目录,然后键入
      ndk-build

结果将放置在中project/libs/<arch>/name-of-your-executable



 类似资料:
  • 我遵循了构建quarkus本机可执行文件的步骤。 1.引导项目: 2.在minishift中使用docker 3.生成包: 失败,错误跟踪如下: 根据要求,树输出如下所示:

  • 我使用Java Swings制作了一个小应用程序,然后使用NetBeans中的“clean and build”选项创建了一个项目的jar文件。然后,我使用软件“launch4j”将.jar文件转换为.exe文件,并且它在我的笔记本电脑上完美地运行。然而,当我尝试在其他笔记本电脑上运行该exe文件时。它显示错误:Class NewJFrame.FirstFile couldnot be found

  • 问题内容: 创建映像时是否可以创建在主机上执行命令的命令? 现在我正在做: 使用Dockerfile: 我希望能够做到: 使用Dockerfile: 当然,此脚本与Dockerfile位于同一目录中。 问题答案: (只是一个建议) 通常,我们使用以下结构来构建docker映像: build.sh :这是您应该调用的。其他常见任务包括下载所需文件或从主机临时复制ssh密钥。最后,此脚本将调用 Doc

  • 有时我需要在我的设备上运行一个命令或脚本,但它们不可用或不存在。 除了那些已经在其上可用的命令外,我们是否可以在设备的中添加一些额外的命令? 例如,将命令添加到我的设备(我的设备的API低于19),这在我的设备上是不可用的。 我知道如何使用获取设备上可用命令的列表 但我想添加更多的自定义命令和脚本,做一些特殊的工作。 有什么办法可以做到吗?还是不可能?

  • 问题内容: 有谁知道如何运行USSD命令来检查电话的贷方余额(数字为* 123#)并获取结果(贷方余额)以进行进一步处理?谢谢 问题答案: 您可以在Android设备上运行USSD代码,但无法在应用程序中解析结果。将来可能会将此功能添加到Android SDK中,但现在,您必须寻找替代方法。 可以使用简单的调用意图来运行USSD。参见示例: 如评论中所述,还需要电话许可

  • 终端中使用lldb运行可执行文件 进入lldb环境, 在终端内输入lldb回车 lldb 使用file命令, 将可执行文件包装成一个target (lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/staticOCLib/test' (x86_64). 运行可执行文件, 在刚刚的l