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

相关推荐
inmK11 小时前
蓝奏云官方版不好用?蓝云最后一版实测:轻量化 + 不限速(避更新坑) 蓝云、蓝奏云第三方安卓版、蓝云最后一版、蓝奏云无广告管理工具、安卓网盘轻量化 APP
android·工具·网盘工具
giaoho1 小时前
Android 热点开发的相关api总结
android
咖啡の猫3 小时前
Android开发-常用布局
android·gitee
程序员老刘4 小时前
Google突然“变脸“,2026年要给全球开发者上“紧箍咒“?
android·flutter·客户端
Tans54 小时前
Androidx Lifecycle 源码阅读笔记
android·android jetpack·源码阅读
雨白4 小时前
实现双向滑动的 ScalableImageView(下)
android
峥嵘life4 小时前
Android Studio新版本编译release版本apk实现
android·ide·android studio
studyForMokey7 小时前
【Android 消息机制】Handler
android
敲代码的鱼哇7 小时前
跳转原生系统设置插件 支持安卓/iOS/鸿蒙UTS组件
android·ios·harmonyos
翻滚丷大头鱼7 小时前
android View详解—动画
android