當前位置:首頁 » 安卓系統 » c開發android應用

c開發android應用

發布時間: 2022-05-17 07:24:08

『壹』 如何用c++寫安卓手機軟體

用c++寫安卓手機軟體的方法:

安裝ndk,使用純c++開發安卓程序,下邊是詳細的步驟與說明:

1、編寫入口函數

android_main為入口函數,和C++中的main函數是一樣的。這里創建CELLAndroidApp的對象,直接調用main函數。

voidandroid_main(structandroid_app*state)

{

CELLAndroidAppapp(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繪圖中的dc

3.構造函數說明

CELLAndroidApp(android_app*app):_app(app) { _surface=0; _context=0; _display=0; _width=64; _height=48; app->userData=this;//用戶數據 app->onAppCmd=handle_cmd;//窗口的創建銷毀等 app->onInputEvent=handle_input;//回調函數 }

值得注意的是,這里的app中的userData,傳入用戶數據,這里直接傳入this,onAppCmd傳入的handle_cmd回調函數,onInputEvent傳入的事handle_input回調函數

4.類中函數main()說明

virtualvoidmain(intargc,char**argv)

{

intident;

intevents;

android_poll_source*source;

while(true)

{

while((ident=ALooper_pollAll(0,NULL,&events,(void**)&source))>=0)

{

if(source!=NULL)

source->process(_app,source);//有觸摸事件,調用input函數,相當於dispatchmessage

if(_app->destroyRequested!=0)

return;

}

render();

}

}

5.調用render()函數,繪制圖形。

6.初始化設備函數initDevice()

virtualvoidinitDevice()

{

constEGLintattribs[]=

{

EGL_SURFACE_TYPE,EGL_WINDOW_BIT,

EGL_BLUE_SIZE,8,

EGL_GREEN_SIZE,8,

EGL_RED_SIZE,8,

EGL_NONE

};

EGLintformat;

EGLintnumConfigs;

_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);

#if0

EGLintcontextAtt[]={EGL_CONTEXT_CLIENT_VERSION,2,EGL_NONE,EGL_NONE};

_context=eglCreateContext(_display,_config,0,contextAtt);

#else

_context=eglCreateContext(_display,_config,0,0);

#endif

if(eglMakeCurrent(_display,_surface,_surface,_context)==EGL_FALSE)

{

LOGW("UnabletoeglMakeCurrent");

return;

}

eglQuerySurface(_display,_surface,EGL_WIDTH,&_width);

eglQuerySurface(_display,_surface,EGL_HEIGHT,&_height);

onCreate();

//InitializeGLstate.

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()

virtualvoidrender()

{

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.編譯程序,將程序導入到模擬器中,最終運行的效果圖如下:

『貳』 如何用 純C++開發安卓應用

純C++,你想多的。
除非你從頭開始寫系統api。
沒有android給你提供的api,或者別人提供的類庫,你用純C++自己實先去。

C/C++ 開發android,可以使用NDK;
Android NDK 是在SDK前面又加上了「原生」二字,即Native Development Kit,因此又被Google稱為「NDK」。
眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。
NDK包括了:
從C / C++生成原生代碼庫所需要的工具和build files。
將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平台的一系列原生系統頭文件和庫
為何要用到NDK?
概括來說主要分為以下幾種情況:
1. 代碼的保護,由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2. 在NDK中調用第三方C/C++庫,因為大部分的開源庫都是用C/C++代碼編寫的。
3. 便於移植,用C/C++寫的庫可以方便在其他的嵌入式平台上再次使用。

2、或者使用Qt for android。使用qt提供的C++類庫(加上了Qt自己的特性)開發andriod

不過建議對C/C++非常熟練才用C/C++開發。不然內存溢出呵呵。

不是浸淫C++技術的高手的話,老老實實學java或者go吧。

『叄』 用C語言可以編寫Android應用嗎

現在主流是用java來寫,借用某些平台,可以實現代碼大部分是C++或者python等。
JNI的實現也是C/C++代碼,但是只是對java層功能的一種補償。
簡而言之,Android應用層程序的主體實現是java代碼。但是借用其他包裝好的平台(比如cocos)可以實現較少java或者不用java。

『肆』 Android能用純C/C++開發嗎

目前截止到2.3系統來看,最終安裝的文件仍然是apk格式,界面和系統大多數功能均使用Java開發,但是稍微高端的應用考慮到性能和安全性使用
C/C++是必要的,C/C++最終編譯的so文件就相當於Windows下的dll動態庫,需要一個宿主去載入調用,我們通過Java的JNI去調用這些本地方法,目前從NDK的版本來看Google不斷增強和開放C++在Android開發的用處,以保證和iPhone這種使用本地語言開發出來的軟體體驗度不能差距太大。

『伍』 開發Android APP使用的是什麼語言

開發Android APP可以使用Java語言和C語言。

Java是一種編程語言,被特意設計用於互聯網的分布式環境。Java具有類似於C++語言的「形式和感覺」,但它要比C++語言更易於使用,而且在編程時徹底採用了一種「以對象為導向」的方式。

使用Java編寫的應用程序,既可以在一台單獨的電腦上運行,也可以被分布在一個網路的伺服器端和客戶端運行。另外,Java還可以被用來編寫容量很小的應用程序模塊或者applet,做為網頁的一部分使用。applet可使網頁使用者和網頁之間進行互動式操作。

C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

(5)c開發android應用擴展閱讀:

Java平台由Java虛擬機(Java Virtual Machine)和Java 應用編程介面(Application Programming Interface、簡稱API)構成。Java 應用編程介面為Java應用提供了一個獨立於操作系統的標准介面,可分為基本部分和擴展部分。

在硬體或操作系統平台上安裝一個Java平台之後,Java應用程序就可運行。現在Java平台已經嵌入了幾乎所有的操作系統。這樣Java程序可以只編譯一次,就可以在各種系統中運行。Java應用編程介面已經從1.1x版發展到1.2版。目前常用的Java平台基於Java1.5,最近版本為Java1.9。

C程序是由一組變數或是函數的外部對象組成的。 函數是一個自我包含的完成一定相關功能的執行代碼段。我們可以把函數看成一個「黑盒子」,你只要將數據送進去就能得到結果,而函數內部究竟是如何工作的,外部程序是不知道的。

C程序中函數的數目實際上是不限的,如果說有什麼限制的話,那就是,一個C程序中必須至少有一個函數,而且其中必須有一個並且僅有一個以main為名,這個函數稱為主函數,整個程序從這個主函數開始執行。

『陸』 Android現在到底支不支持純C語言開發第三方應用

可以使用C做第三方開發。
但是有幾個問題:
1 C介面在圖形界面上支持的不太好,所以用純C,做界面會很惡心。
2 C語言編譯依賴於編譯器,而不同平台編譯器不同,所以無法做到通用。也就是說,用C編出來的一個bin文件,只能用於一個型號或者一系列型號的。 對推廣很不利。
3 C編譯的文件,要想運行,在當前安卓架構中,添加很不方便。
由於以上幾個原因,很少有用C來做開發應用的。反而是C++,有一些人在用QT做可移植開發

『柒』 關於 Android C語言 開發

剛好最近我正在學習android可以幫到你。
1.JAVA開發是Android的應用部分
2.C/C++語言開發是Android核心的部分
Android的C語言其實是指的Android底層的Linux內核開發,剛好你是學習Linux C語言的這樣就有用武之地。Android的底層是由Linux開發的,並建立在Linux之上的JAVA虛擬機來實現的。
所以要學習Android C語言的開發,建議看看《Android系統原理及開發要點詳解》著本書講的內容都是底層的內容,一定要買。不過JAVA語言的部分也一定要看,因為C語言做的驅動最後還是需要被JAVA虛擬機調用。
另外要做AndroidC語言開發還需要注意一下幾點:
1.需要購買開發板來學習,或者開源的手機,這樣可以直觀的了解驅動的運作模式和有效調試
2.需要下載android源代碼,因為Android SDK開發是不會用到C語言的
3.android的NDK開發其實也是C/C++語言調用一些函數來實現,建議也看
4.最後這個網址可以去看,多是講底層資料的:http://bbs.starandroid.com/showtopic.aspx?topicid=10712&page=end

建議:
1.JAVA還是要看的
2.建議往Android底層硬體開發走

熱點內容
加密狗威步 發布:2025-08-17 09:40:51 瀏覽:136
月報的演算法 發布:2025-08-17 09:36:25 瀏覽:893
安卓版本10怎麼打開隱藏游戲 發布:2025-08-17 09:33:25 瀏覽:589
php獲取地址欄 發布:2025-08-17 09:31:59 瀏覽:120
燃料存儲檢查 發布:2025-08-17 09:30:45 瀏覽:679
怎麼取消qq漫遊密碼 發布:2025-08-17 09:24:53 瀏覽:456
linux微型 發布:2025-08-17 09:18:26 瀏覽:524
一個伺服器怎分為多台電腦 發布:2025-08-17 09:17:29 瀏覽:975
伺服器被入侵怎麼辦 發布:2025-08-17 09:12:29 瀏覽:56
python保存到excel 發布:2025-08-17 09:12:28 瀏覽:669