我成功地构建了一个使用本机(JNI)库的Android应用程序(GUI).

但是,现在我想创建一个从命令行(root权限)运行的可执行文件,并且完全不使用GUI.我该如何建造这样的东西?

推荐答案

对于NDK r8d,可以用更简单的方法解决这个问题.

  1. 创建具有以下目录层次 struct 的项目:

    project/
        jni/
            Android.mk
            Application.mk
            *.c, *.cpp, *.h, etc.
    
  2. 填写Android.用下面的内容.最重要的是最后一行.判断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.
    
  3. 转到project/目录,只需键入

    ndk-build
    

    结果将排在project/libs/<arch>/name-of-your-executable位.

Linux相关问答推荐

Flutter 构建错误:';DART:JS_interop';在此平台上不可用

如何在具有多种可能性的linux shell中获取最大值和最小值?

Linux BlueZ 5.65 hcitool 结合服务 UUID 和制造数据广告

仅在 Linux 上出现 AWS RDS `flush tables` 错误的 mysqldump

在 linux 中插入带有 sed 命令的文件的行

在 Ansible 中使用 JSON 查询过滤数据以从 ansible_fact 中提取数据

使用 awk 将索引列添加到 csv

在三星 chromebook 上编程

如何将通配符参数传递给 bash 文件

从 Linux 到 Windows 交叉编译 C++ 应用程序的手册?

Ubuntu 上 Java 应用程序中的丑陋字体

如何获取WiFi网络接口的MAC地址?

让 sudo 和 nohup 一起工作

cmake : 从脚本设置环境变量

当将信号量减为零的进程崩溃时,如何恢复信号量?

Python日志(log)记录 - 判断日志(log)文件的位置?

`cd //` 中的双斜杠 // 在 Linux 中是什么意思?

PostgreSQL psql 终端命令

如何自动启动 Solr?

内联 if shell 脚本