如何在android上运行c程序

用C在安卓手机上开发 在安卓手机上进行C语言开发需要一些特定的工具和设置。通常,C语言用于编写安卓的底层代码,如性能关键的模块或与硬件直接交互的部分。我们可以使用Android NDK(Native Development Kit)来开发这些部分。以下是如何在安卓手机上使用C进行开发的详细步骤。 阅读详情

    这两天终于可以在android上运行c程序了,也可以勉强交差了。和大家分享一下,共同学习!

准备工作:

    1 下载cygwin(windows上模拟UNIX环境),设置bin目录的环境变量。运行一下,生成home目录和其下的几个文件。打开.bash_profile,在最后添加进自己设置的ndk(见上篇)目录,如:root=/cygdrive/d/ndk。注:如果cygwin目录下没有cygdrive目录,则手动添加一个。重新打开,输入cd $root ,就可进入自己设置的根目录。

    2 在eclipse下新建一个android程序

    3 在该工程目录下新建一个jni目录,里面创建自己的c程序和一个Android.mk文件,在工程的当前目录下创建一个Application.mk文件,Android.mk、Application.mk的内容请看ndk的docs文档,里面很详细。也可参照ndk下samples的写法。c程序的写法也可参照samples的写法。至于写的程序比较多,还得继续学习。我这只写了一个读取图片像素值的程序,仅供参考。

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <stdexcept>
#include <string>

extern "C"
jintArray
Java_com_jerry_Readimg_GetImgPix( JNIEnv* env,jobject thiz)
{
 jint buf[6];
 int i;
 FILE *fp;
 char temp[6];
  if (!(fp = fopen("/sdcard/sample.bmp", "rb")))
      return false;   
  fseek(fp,54,0);
 fread(temp,1,6,fp);
 for(i=0;i<6;i++)
 {
  buf[i]=temp[i];
  buf[i]=buf[i]&0x00FF;
 }
  fclose(fp);
 
 jintArray result = env->NewIntArray(6);  
  env->SetIntArrayRegion(result, 0, 6, buf);   
  return result;
}

    4 打开cygwin,进入工程的当前目录。输入$root/ndk-build进行编译自己的c程序,成功后会生成.os文件,此文件用于android程序调用生成.apk文件。

    5 运行android程序,成功!

遇到的问题:

    1 利用cygwin编译c程序时,之前用win7系统时总是出现一个stack copy failed(好像是这个) 的问题,我怀疑时系统的问题,就换了xp,结果真没出现这个问题了,编译也就成功了。一定要把cygwin需要的包都下全。

    2 写c程序时,名称规则要看清楚,和android工程下的包结构都得对应正确,还有细节的名称转换,也得注意。再就是现在如果写c程序,要用纯c写,如果包含windows.h等,编译会出错的。还得再做处理,这里我还没弄,以后慢慢学习吧,还包括在android上用opencv等。

 

就这些,欢迎指正,共同进步!

在Android上运行纯C程序的编程指南 选择您的模拟器或连接的Android设备,并点击Android Studio工具栏上的“Run”按钮,或使用快捷键Shift + F10。Android Studio将安装并运行您的应用程序,在TextView中显示来自C函数的字符串。通过设置开发环境,创建Android项目,配置NDK,编写C源文件,配置CMakeLists文件,并在Java代码中调用C函数,您可以成功地在Android平台上运行纯C程序。本文将为您提供一份详细的指南,介绍如何在Android上编写和运行纯C程序。确保构建过程没有错误。 阅读详情

相关推荐

直流无刷减速电机选型指南:从KV值到霍尔传感器,新手必看的5个关键参数

本文详细解析直流无刷减速电机选型的5个关键参数,包括KV值、转矩、电流与功率、减速比选择以及霍尔传感器配置。通过实战案例和避坑策略,帮助工程师精准匹配电机性能与负载需求,提升工业自动化设备的可靠性和效率。特别强调霍尔传感器在精准控制中的关键作用。

alice7model的博客 620

USB gadget 驱动之 android.c

weixin_42129680的博客 4457

OpenResty无损升级内嵌nginx版本0DAY漏洞

OpenResty无损升级内嵌nginx版本,nginx

qq1071643762的博客 6904

Android C/C++开发指南

AndroidC/C++开发指南 1.AndroidC/C++简介 众所周知,Android作为目前主流的移动终端领域的开发平台,其主要的开发语言就是JAVA。Android借助于JAVA高效、灵活的开发模式,迅速占领了移动互联网开发的半壁江山。基于JDK和Android实现的各种JAVA框架,开发人员可以快速实现各种功能的APP,而且APP的安装和升级维护都实现的方便。 对于,Andr

飞翔de刺猬 1万+

从玩具到工业:手把手教你用Webots仿真Scara抓取(逆解实战篇)

本文详细介绍了如何在Webots仿真环境中实现Scara机械臂的逆解计算与抓取操作,涵盖从环境配置、逆运动学算法到轨迹规划与实时控制的完整流程。通过实战案例演示,帮助读者掌握机械臂逆解的核心技术,并应用于工业自动化场景,提升Scara机械臂的编程与控制能力。

weixin_30932215的博客 504

MATLAB实战:从零推导合成孔径雷达(SAR)后向投影(BP)算法核心公式与代码实现

本文详细介绍了如何使用MATLAB从零推导合成孔径雷达(SAR)后向投影(BP)算法的核心公式与代码实现。通过基础概念讲解、数学原理推导、距离维脉冲压缩实现及完整MATLAB代码展示,帮助读者掌握SAR成像的关键技术。特别针对BP算法的优化技巧和常见问题提供了实用解决方案,适合雷达信号处理领域的开发者和研究者参考。

weixin_28683689的博客 251

Android设备上直接运行C/C++程序,无需ROOT!!!

在Android开发过程中难免和JNI NDK打交道做混合开发,按一般方式当交叉编译完成得到so库后,我们将so库集成到Android项目里,打包成apk安装到手机上验证运行效果。但当我们想快速在手机上验证so的功能与性能时,上面提到的传统方式就过于繁琐了。那我们能不能在Android设备上直接运行C/C++程序来直接调用so库呢?答案是肯定的,因为我们在linux系统就可以直接运行C/C++程序,而Android系统与Linux系统的关系大家也都了解。下面来看一下具体的实现流程:首先先展示一下我需要用到的

qq_27246079的博客 1万+

STM32驱动四位共阳极数码管实现高精度秒表计时器

本文详细介绍了如何使用STM32驱动四位共阳极数码管实现高精度秒表计时器。项目基于STM32F103C8T6最小系统板,通过定时器中断和GPIO控制,实现0.1秒精度的计时功能,并解析了共阳极数码管的动态扫描原理及按键消抖等关键技术。

n8m7b6v5c4的博客 951

Android编译可执行c程序

将可执行文件push到安卓板子中,此处使用的时nanopc-t4。结果如下,到此编译运行成功。

ytuglt的博客 876

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

linux驱动由浅入深系列:基于高通平台分析触摸屏(TP)、虚拟按键驱动

触摸屏的触摸板(touch panel简称TP)驱动的基本架构和普通按键驱动基本一致,可以参考文章:linux驱动由浅入深系列:输入子系统之二(编写一个gpio_key驱动)。只是其功能稍稍复杂些,配置也多些,下面一起来看一下。 TP包括 触摸屏、虚拟按键、虚拟按键背光灯 TP驱动芯片厂商主要有:Goodix(汇顶),FocalTech(敦泰科技),cypress(赛普拉斯),synapt

Radia的专栏 4767

安卓c java_在Android上运行Java和C程序

在linux上运行java程序,直接用javac编译,再用java启动虚拟机运行就行了。但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的。下面介绍Android上运行Hello world!一、单个java文件编译运行1.在Ubuntu虚拟机上将Hello.java编译成Hello.class文件2.在Ubuntu上的Android编译环境下生成Hello.jar文件# ...

weixin_32867357的博客 303

Coverity本地增量C/C++代码检查(Linux)操作简介

Coverity 是一款精确的综合静态分析与应用安全测试 (SAST) 平台,它可以在编写代码时发现关键的缺陷和安全缺陷,防止它们变成安全漏洞、故障或维护缺陷。

1482

安卓studio如何C语言,android studio 运行c语言程序

效果图:java 步骤1:选择Configure => SDK managerandroid 步骤2:选择SDK Tools ,勾选CMake,LLDB,NDK,这三个,点击下面的apply,而后下载安装,而后点okapp 步骤3:新建一个项目,勾选Include C++ support,而后一直下一步,点击finishmaven 步骤4:个人3.1.2的android studio报了错误...

weixin_35656285的博客 2203

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

安卓模拟器中运行C程序

先说几句乱起八糟的,上周来到公司实习,开始搞从来没有接触

GetnextWindow的专栏 2291

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android:如何交叉编译要在安卓板上运行的C程序

交叉编译在安卓板上运行的C程序 写给一直在做linux下驱动或应用开发的小伙伴们,这里描述了在安卓开发板中,如何编写,编译,生成可执行的C程序,并在安卓真机中测试的一整套基本操作流程.   新建C项目 在你的安卓源码目录下新建一个文件夹用来存放你的工程代码,譬如我的安卓源码目录为"/root/sc60-android/google_android7.1.2",在此目录下我新建了...

甘霖的博客 1442

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

linux如何运行安卓程序,如何在Android系统上运行C语言的程序

问题阐述:本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样的方法将程序移植到mini6410的android系统中也可以成功运行,但是当我运行程序的时候却提示我不能找到可执行文件(xlisten-arm是交叉编译出来的可执行文件):/ # ./xlisten-a...

weixin_39883079的博客 183

如何在Android系统上运行C++程序

一、前言 有两种方式: 使用 NDK,通过 JNI 的方式来调用 C++ 的方法。这部分知识点很多,可以参考:Android NDK 从入门到精通(汇总篇) Android 的本质是基于 Linux 系统的,我们是可以直接运行 C++ 的程序 关于第二点,是需要我们有 root 权限的。但是它也是很方便的,例如有一个 C++ 的 SDK,需要运行在 Android 系统上测试,直接编写一个可...

阿飞的博客 3万+

在 Android 中使用 C/C++:初学者综合指南

作为一名 Android 开发人员,我们都一直在使用 Java 或 Kotlin 来构建漂亮的 UI 和功能。整个 Android 堆栈,从应用程序开发到应用程序执行,都围绕 JVM 和 Java*风格的*功能,不包括用 C 编写的内核(Linux 内核)。

特立独行的博客 9807

Android运行C/C++程序,无需ROOT!

如果随便 Android 中的任意目录,执行,需要root 权限,现在手机,大部分情况已经没有 su 命令了;adb shell 直接执行 Android 中的 androidCpp;7:如果有相关动态链接库,可以放到这个目录:设置查找so库路径的环境变量。6: ./androidCpp , 执行程序;1: 配置 adb.exe 相关目录到环境变量;ndk 编译完成 C++ 可执行程序;3: 连接手机, adbshell。

chinabinlang的专栏 1705

c程序在Android下执行

Android编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile文件,而其他的每个component都使用统一标准Android.mk. Android.mk文件本身是比较简单的,不过它并不是我们熟悉的Makefile,而是经过了Android自身编译系统的很多处理,因此要真正理清楚其中的联系还比较复杂,不过这种方式的好处在于,编写一个新的Android.mk来给And

xmzzy2012的专栏 461

Android工程怎么调用C/C++代码(保姆级别,每一步截图+讲解)?

关于ReleaseByteArrayElements的最后一个参数,绝大部分场景使用0就OK,意思是他会把C/C++源码对这个变量所做的修改刷新回去给Java层。还有一个点要注意,就是Java层的byte是有符号的,可以是负数,C/C++层的unsigned char是无符号的。传入并使用对象类型的时候,记得用完立刻释放,不然有时候需要循环的业务逻辑会消耗掉JNI可以开辟的空间,听说最多是五百个对象。假如我们在CMake里面写了SHARED的话,编译之后,生成的是动态库,.so文件。

Shujie 5010

如何在android studio中使用C语言编写app

要在Android Studio中使用C语言编写应用程序,您可以使用Android NDK(Native Development Kit),它是Android SDK的一部分,提供了一组工具和库,可以使您编写本地代码,例如C或C++代码。以下是一些基本步骤: 安装Android Studio和NDK:您需要先安装Android Studio和NDK。在Android Studio中,您可以通过“...

weixin_42613018的博客 1450

自己动手编译C程序并运行于Android系统

自己动手编译C程序并运行于Android系统准备工作搭建交叉编译环境搭建代码架构编译运行 准备工作 很多半路出家的安卓开发工程师并不了解怎么样在Android Studio上搭建交叉编译环境;不过没关系,不懂我们可以学习,了解底层的运行原理对于我们成为更为高级的工程师或者架构师很有帮助; 工欲善其事必先利其器,首先我们把环境搭建一下; 搭建交叉编译环境 从androidStudio2.2版本开始,...

zhonglunshun的专栏 1万+

Android手机运行c/c++程序

android手机可以运行C/C++可执行程序 具体运行使通过adb将可执行文件通过adb push命令上传到Android手机上 adb push elf_file /data/push_file chmod 777 elf_file     // 设置成可执行 具体步骤 1 编写c源文件 2 编写Android.mk文件,用于编译c文件生成在Android手机上可以执行的文件

u013265795的专栏 9886
下一篇: 第一个android-opencv程序
zsoftdevelop
博客等级 码龄18年 12粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值