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

相关推荐
方白羽5 小时前
Android Studio 自动国际化插件:SmartI18n
android·android studio·intellij idea
码农coding8 小时前
android12 状态栏图标的加载流程
android
hai_android9 小时前
Kotlin 协程作用域源码剖析
android·kotlin
Yeyu9 小时前
Android 画中画(PiP)小窗播放:怎么做、以及它到底是怎么工作的
android
千里马学框架9 小时前
安卓系统性能优化高级实战开发专题--开机,app冷启动优化
android·智能手机·性能优化·framework·性能·开机优化·app冷启动优化
律宏阔10 小时前
Android 手机通过 adblib 使用 ADB Wi-Fi 控制 Android 9 开发板
android
律宏阔10 小时前
Android App 里实现开机动画替换
android
消失的旧时光-194311 小时前
Android 系统层扫盲 05:Android 开机后发生了什么?从 Bootloader 到 Launcher
android·zygote·fork·aosp·cow
hunterandroid12 小时前
Android 线上卡顿治理:从布局层级到主线程负载的全链路排查
android
恋猫de小郭12 小时前
Dart Skills CLI 1.0 :AI 时代的 Dart 交付支持
android·前端·flutter