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

相关推荐
雨白6 分钟前
Android 快捷方式实战指南:静态、动态与固定快捷方式详解
android
hqk8 分钟前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
LING1 小时前
RN容器启动优化实践
android·react native
恋猫de小郭3 小时前
Flutter 发布官方 Skills ,Flutter 在 AI 领域再添一助力
android·前端·flutter
Kapaseker8 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴8 小时前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭18 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab19 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe1 天前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农1 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos