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

相关推荐
lichong9511 小时前
【Flutter&Dart】 listView例子一(13 /100)
android·javascript·flutter·postman·smartapi·postapi·foxapi
thehunters3 小时前
win10 ubuntu 使用Android ndk 问题:clang-14: Exec format error
android·linux·ubuntu
yuanbenshidiaos7 小时前
MYSQL--------MYSQL中的运算符
android·mysql·adb
Nayuta8 小时前
查看任意应用的 Skia 绘制指令 - 安卓渲染调试工具大全
android
思忖小下10 小时前
深入Android架构(从线程到AIDL)_16 应用Android的UI框架03
android·ui框架
一本正经光头强10 小时前
掌控ctf-2月赛
android·ide·android studio
zhangphil10 小时前
Android Glide判断当前运行环境是否为主线程的工具方法,Kotlin
android·kotlin·glide
Conmi·白小丑12 小时前
Conmi的正确答案——Cordova使用“src-cordova/config.xml”编辑“Android平台”的“uses-permission”
android·xml
小wanga13 小时前
【C++】特殊类设计
android·c++
龙之叶14 小时前
Android13实时刷新频率的实现代码
android·java·ui