androidc
1. 如何在安卓上用C語言
害哥搞這個離線包搞了個把小時。為了清楚,上個圖: 敲個LS,什麼東西都沒有,這個目錄是cygwin的安裝目錄下面的home文件夾下的用戶名文件夾。接下來是配置與Android相關的。在home/用戶名,這個文件夾下有一個文件為.bash_profile,打開它,到最後添加兩行NDK的環境變數:NDK_ROOT=/cygdrive/d/android-ndk-r6export NDK_ROOT上面的意思是,ndk的目錄是,d:/android-ndk-r6添加完之後,關閉Cygwin重新啟動一下,然後敲入cd $NDK_ROOT,是否進入到ndk的目錄了?否則就看看哪個字母錯了。在ndk的目錄下samples下有很多例子,隨便弄個就可編譯了。下面是新建一個項目,以對C語言在項目中的位置更清楚。打開Eclipse新建一個Android項目,取名hellojni,為了清晰,便於維護,及各種各樣的好處,JNI的java代碼單獨一個類,單獨一個包。其實最好能不用JNI就別用JNI,這東西負作用巨大,特別是在用到JNI復雜的地方,什麼內存啊,類型啊,哪裡調用的方法,異常啊,可靠性都非常麻煩。非要用JNI的復雜功能,做好兩件事,做之前充分設計,設計之前充分學習一下JNI文檔。當然對於一些簡單的應用,那隻需要充分仔細。作好參數,返回值的檢查,記得釋放內存就行了。
打字不易,如滿意,望採納。
2. 如何在android設備上面跑C或C++程序
不能開發完整的程序,但你可以把邏輯演算法封裝在c/c++開發的.so庫文件中,然後在java層使用jni進行調用。 要使用C/c++需要安裝eclipse+cdt+ndk 但你仍然需要java開發環境eclipse+adt+sdk
3. android 底層是 c還是c++
安卓是基於linux的操作系統,所以應該說是C語言,但c++兼容C語言,說是c++也沒錯。
4. 如何在Android系統源碼中添加C項目
以hello_android為例,步驟如下:
1、在external目錄下創建hello_android目錄,然後在hello_android目錄中編寫hello_android C語言實現文件hello_android.h,hello_android.c:
(註:hello_android目錄可以放置在Android系統源碼下的任意目錄中,並非一定要在external下。)hello_android.h
#include<stdio.h>
#include<stdlib.h>void makePrintf(char *str)
{
printf("%s", str);
}hello_android.c
#include <stdio.h>
#include <stdlib.h>
#include "hello_android.h"int main(int argc, char** argv)
{
makePrintf("hello, android!\n");return 0;
}
2、編寫負責編譯的Android.mk文件:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := hello_android.cLOCAL_C_INCLUDES += $(LOCAL_PATH)LOCAL_MODULE := hello_androidLOCAL_MODULE_TAGS := enginclude $(BUILD_EXECUTABLE)
3、利用mm編譯生成hello_android二進制可執行文件;
4、將helllo_android文件復制到/system/bin目錄下執行:
#./hello_android
hello, android!
5、代碼結構
$ pwd
external/hello_android
$ tree
5. C、C++、ANDROID、JAVA各有什麼區別
1、C和C++
如果樓主學完C,想在下面領域大展身手,那麼學C++吧
嵌入式開發、游戲開發、驅動開發、操作系統開發、數據挖掘、桌面軟體開發等。
(具有黑客潛質)。
2、C#
C --> C# --> ASP.NET(Web開發)--> windows Form(基於C#的桌面程序開發)
在中小型網站和應用方面比較吃得開。
3、JAVA
C --> JAVA --> servlet和JSP --> struts2、spring、hibenate三大框架
一般大型的企業級應用都是用JAVA,或者大型系統的前台。
4、android
C-->JAVA
它是手機操作系統,主要基於JAVA API開發,所以要學JAVA啦(尤其是JAVA的J2ME)
c#、c++、java、還是android?都有什麼區別?
(應用領域就不說了,在上面寫了)
1、C++:功能強大,控制起來比較麻煩(牛人就另說了),不是一種純面向對象的語言。
2、C#:其運行需要微軟.Net Framework的支持,從C和C++繼承而來的,是一種面向對象的語言,相對簡單。
3、JAVA:也是一種面向對象的語言,需要JDK的支持。
4、android:是一種手機操作系統,都在上面開發一些JAVA小程序
希望對你有幫助、、
6. 手機的Android系統能在手機上用C/C++編程嗎
可以,有個手機編程軟體叫做C4droid,專門用來編譯C/C++文件的,要下載支持庫,不大的,你可以看看
7. 如何在 Android 系統中用 C 語言編寫程序並執行
可以的,只要編譯器支持,C語言程序不像JAVA,最終都會被編譯器編譯成機器代碼的,所以關鍵是編譯器能不能編譯成相關CPU和操作系統支持的代碼。dos是的批處理是不支持的。編寫手機軟體目前主要還是用C和JAVA,C用得最多
8. android 底層是用c還是c++
Linux系統是作為Android的底層操作系統
9. 關於 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底層硬體開發走
10. 如何在android系統上執行c文件
本人使用mini6410開發了一個sqlite資料庫的程序,在mini6410的linux系統下已經能夠成功運行了。因為Android使用的也是linux內核,所以我想當然的認為按照同樣的方法將程序移植到mini6410的android系統中也可以成功運行,但是當我運行程序的時候卻提示我不能找到可執行文件(xlisten-arm是交叉編譯出來的可執行文件): / # ./xlisten-arm /system/bin/sh: ./xlisten-arm: not found 1.探索: 在網上搜索起初認為可能是庫文件的不全導致的,於是在查看可執行文件xlisten-arm所需要的動態鏈接庫: 執行語句: # arm-linux-readelf -a ./xlisten-arm grep "Shared" 0x00000001 (NEEDED) Shared library: [libsqlite3.so.0] 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libcrypt.so.1] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] 知道所需的動態鏈接庫後,到android文件系統中去照著寫庫文件,在目錄/system/lib 中,果然缺少相應的庫文件,於是認為找到了我問題的根源所在,在復制相應庫文件的時候為了保留原來的屬性,還特意用了 #cp -a filename dir 誰知將這些庫都添加進去以後,仍然無濟於事! 看來不僅僅事庫文件缺失的問題了,而且一般來說,如果真的是因為缺少庫文件而導致的問題,終端會提示我們鏈接某庫文件時沒有找到該庫文件。 2.正確的解決方法: 將程序編譯的時候選擇靜態編譯,即使用選項 -static 我是對Makefile文件中的CFLAG變數進行修改 CFLAGS = -Wall 改為; CFLAGS = -Wall -static 然而此時又出現問題了: undefined reference to `pthread_mutex_*' undefined reference to `dl*' 提示沒有定義這些函數,於是在包含的庫文件中添加了這兩個庫文件 在Makefile中,修改LIBS變數; LIBS = -lsqlite3 -lm -lcrypt 改為: LIBS = -lsqlite3 -lm -lcrypt -lpthread -ldl 然後進行交叉編譯,成功了! 編譯出來的可執行文件比較大,因為事靜態編譯的,我的有2M多, 拷貝到開發板的andriod系統中, 修改許可權: #chmod 777 xlisten-arm 執行: / # ./xlisten-arm OK!能夠正確的執行了!