Android - NDK:编译可执行程序在android设备上运行

在android开发中,调试时会把C代码直接编译成可执行程序,运行在android设备上以确认其功能是否正常。

1、基于NDK编译可执行文件

2、push到 /data/local/tmp目录下

3、设置权限,执行。

ndk工程中build.gradle设置

bash 复制代码
```groovy
plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        ...
        ndkVersion "25.1.8937393"  // 指定 NDK 版本
        externalNativeBuild {
            cmake {
                cppFlags ''
            }
        }
        ndk {
            abiFilters 'arm64-v8a'   // 只编译arm64架构的
        }
    }
    externalNativeBuild {
        cmake {
            path file('src/main/cpp/CMakeLists.txt')
            version '3.18.1'
        }
    }
}

executable.cpp

cpp 复制代码
#include <iostream>
#include <string>
#include "unistd.h"
int main(){
    std::cout << std::endl;
    std::cout << "start exectue." << std::endl;
    int count = 10;
    while(count -- > 0){
        std::cout << "exectue : count = " << count << std::endl;
        sleep(1);
    }
    std::cout << "end exectue." << std::endl;
    std::cout << std::endl;
    return 0;
}

CMakeLists.txt

bash 复制代码
cmake_minimum_required(VERSION 3.18.1)

project("broadcast")
# 生成可执行程序
add_executable(exec exec/executable.cpp)

可执行文件生成位置:app\build\intermediates\cmake\release\obj\arm64-v8a\exec

相关推荐
爱装代码的小瓶子3 小时前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
兴趣使然HX3 小时前
Android绘帧流程解析
android
JMchen1234 小时前
Android UDP编程:实现高效实时通信的全面指南
android·经验分享·网络协议·udp·kotlin
黄林晴4 小时前
Android 17 再曝猛料:通知栏和快捷设置终于分家了,这操作等了十年
android
有位神秘人5 小时前
Android获取设备中本地音频
android·音视频
JMchen1235 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
CS创新实验室5 小时前
Pandas 3 的新功能
android·ide·pandas
ujainu5 小时前
护眼又美观:Flutter + OpenHarmony 鸿蒙记事本一键切换夜间模式(四)
android·flutter·harmonyos
三少爷的鞋5 小时前
为什么我不在 Android ViewModel 中直接处理异常?
android
草莓熊Lotso6 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能