用c写安卓app,怎么将c代码编译成android可执行程序

1,怎么将c代码编译成android可执行程序(1) 如果用Android NDK,将下面C语言开发的lib通过JNI接口给上层APP使用 。(2) Android底层本来就是Linux,如果是搞底层的东西 , 这和在Linux下开发C语言程序没什么区别 。
2,用c语言可以开发app吗可以的,c语言本来就是开发软件的程序 。C语言更适合做操作系统相关的开发,比如驱动、嵌入式之类的 。C语言开发手机App太困难了 , 似乎也很少有人这么做 。特有特点C语言是一个有结构化程序设计、具有变量作用域(variablescope)以及递归功能的过程式语言 。C语言传递参数均是以值传递(passbyvalue) , 另外也可以传递指针(apointerpassedbyvalue) 。不同的变量类型可以用结构体(struct)组合在一起 。只有32个保留字(reservedkeywords) , 使变量、函数命名有更多弹性 。部份的变量类型可以转换,例如整型和字符型变量 。通过指针(pointer),C语言可以容易的对存储器进行低级控制 。预编译处理(preprocessor)让C语言的编译更具有弹性 。
3 , C语言真的可以写手机程序要学嵌入式开发 。不是学了C就会哦 。写手机程序,android最容易 。可以,看手机是什么操作系统了 , 以前做的rda平台应用全部用c写的c语言可不是很好学的,这牵涉到很多技术性的问题,当然,如果你对c语言已经精通到不能再精通的程度 , 一些简单的程序还是可以的,【用c写安卓app,怎么将c代码编译成android可执行程序】
4 , 如何用c写安卓手机软件用c++写安卓手机软件的方法:安装ndk,使用纯c++开发安卓程序,下边是详细的步骤与说明:1、编写入口函数android_main为入口函数,和C++中的main函数是一样的 。这里创建CELLAndroidApp的对象,直接调用main函数 。void android_main(struct android_app* state)CELLAndroidApp app(state);app.main(0,0);}2.绘制类的实现说明protected:EGLConfig _config;EGLSurface _surface;EGLContext _context;EGLDisplay _display;android_app* _app;int _width;int _height; 部分参数说明:_surface:用于绘制图形,相当于windows绘图中的位图_context:可以看做是opengl对象_display:用于绘图的设备上下文,类似于windows绘图中的dc3.构造函数说明CELLAndroidApp(android_app* app):_app(app)值得注意的是 , 这里的app中的userData,传入用户数据 , 这里直接传入this,onAppCmd传入的handle_cmd回调函数,onInputEvent传入的事handle_input回调函数4.类中函数main()说明virtual void main(int argc,char** argv)int ident;int events;android_poll_source* source;while (true)while ((ident = ALooper_pollAll(0, NULL, &events, (void**)&source)) >= 0)if (source != NULL)source->process(_app, source); //有触摸事件 , 调用input函数,相当于dispatchmessageif (_app->destroyRequested != 0)return;}render();}} 5.调用render()函数,绘制图形 。6.初始化设备函数initDevice()virtual void initDevice()const EGLint attribs[] =EGL_SURFACE_TYPE, EGL_WINDOW_BIT,EGL_BLUE_SIZE, 8,EGL_GREEN_SIZE, 8,EGL_RED_SIZE, 8,EGL_NONE};EGLint format;EGLint numConfigs;_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);eglInitialize(_display, 0, 0);eglChooseConfig(_display, attribs, &_config, 1, &numConfigs);eglGetConfigAttrib(_display, _config, EGL_NATIVE_VISUAL_ID, &format);ANativeWindow_setBuffersGeometry(_app->window, 0, 0, format);_surface = eglCreateWindowSurface(_display, _config, _app->window, NULL);#if 0EGLint contextAtt[] = _context = eglCreateContext(_display, _config, 0, contextAtt);#else_context = eglCreateContext(_display, _config, 0, 0);#endif if (eglMakeCurrent(_display, _surface, _surface, _context) == EGL_FALSE)LOGW("Unable to eglMakeCurrent");return;}eglQuerySurface(_display, _surface, EGL_WIDTH, &_width);eglQuerySurface(_display, _surface, EGL_HEIGHT, &_height);onCreate();// Initialize GL state.glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);glEnable(GL_CULL_FACE);glShadeModel(GL_SMOOTH);glDisable(GL_DEPTH_TEST);glViewport(0,0,_width,_height);glOrthof(0,_width,_height,0,-100,100);7.绘制函数render()virtual void render()if(_display == 0)return;}glClearColor(0,0,0, 1);glClear(GL_COLOR_BUFFER_BIT);glEnableClientState(GL_VERTEX_ARRAY);if(g_arVertex.size() >= 2)glColor4f(1,1,1,1);glVertexPointer(3,GL_FLOAT,0,&g_arVertex[0]);glDrawArrays(GL_LINE_STRIP,0,g_arVertex.size());}eglSwapBuffers(_display,_surface); //双缓存的交换缓冲区} 8.编译程序,将程序导入到模拟器中,最终运行的效果图如下:5,如何用 纯C开发安卓应用可以使用C++Bulider xe8以后版本来进行 。如要写软件,那么用android studio+ndk即可如果写游戏,用你自己的ide+cocox2d/unity/ue4即可android的UI开发是用JAVA来实现的,但是通过JNI的调用方式,可以从java source code调用到C或者C++的source code 。所以java应该是开发的基础 用Eclipse加上ADT的插件,就可以进行可视化的开发,更多可咨询远标6,怎么用C需要写apk别扯到java了在PC上的程序可以轻松使用./或不用指明,默认读取的就是程序所在路径内的文件 。但在Android上,应用程序被打包成apk,程序运行时无法直接获取apk(压缩包)内的文件 。但在一些特殊场合,如加载图像处理训练好的分类器、模型等数据 , 要求每个apk到手机上都能运行,就必须解决这个问题 。本文深入研究apk安装过程,给出三种方法解决这个问题 。一、android apk安装过程 Android apk文件是将AndroidManifinest.xml、应用程序代码(.dex)、资源文件和其他文件打包成的一个压缩包文件,其中的.dex文件即使android上的可执行文件,由Java代码编译后的class文件链接而成 。因此可以用unzip直接将apk打开 。如下图所示,将本文后面要附源码的一个apk解压后java开发语言可以写android系统的软件,生成的android系统的软件后缀为apk 。(android系统 底层linux内核只提供基本功能,其他的应用软件则由各公司或者个人自行开发,部分程序以java编写,软件后缀为.apk)JNI编程 , 但还是要用java的壳 。具体的自己搜吧

    推荐阅读