㈠ unbontu下安卓交叉編譯環境怎麼創建
有兩種方式獲取交叉編譯所需的工具鏈:git下prebuilt這個project或者直接去下載NDK,我這里arm-eabi的版本是最新的4.4.0。
㈡ 我在ubuntu操作系統上用c語言寫了linux程序,現在要讓程序在arm的板子上運行,板子上的操作系統是安卓
這個要看的板子支持了那些指令,然後到網站下載相應的交叉編譯工具。在和gcc一樣編譯就好了。
你可以看看怎麼製作交叉編譯工具,你就能明白是怎麼一回事。
㈢ 不懂編程如何將自己的想法添加到App中去呢有沒有一個不用懂編程就能實現自己對App製作的平台呢
在門外漢來看,App軟體開發是一件非常困難的事情,然而使用APICloud快速高效App開發平台,輕松6個步驟就可以完成App軟體開發。
根據不同的應用需要,為您提供了Deep Engine(適合 Web 開發者)、SuperWebView(適合已有原生應用的開發者)以及數據雲(適合需要快速簡便實現服務端的開發者)。
APICloud不光為App製作提供服務,也提供App上線之後的運營管理。APICloud運營雲產品涵蓋推送、雲修復、大數據統計分析等App運營必備功能。版本更新更能實現應用內增量更新,無需重新提交App。在這里要單獨講解一下雲修復和大數據統計分析兩個功能,通過雲修復可實現App內快速回滾,讓App擁有自我修復能力在App內部快速回滾的過程中,支持斷點續傳,全面保障App自我修復的完整性。而大數據統計分析的功能使得App的新增及活躍用戶數據,幾分鍾即可擺在你的眼前,讓你成為App的運營專家。同時還支持對App進行自定義事件統計,幫助你去了解用戶在App中的特定行為數據、支持版本、終端分布及錯誤報告。
㈣ linux下的應用程序移植到android系統,求思路!
我沒有做過你這樣的,但測試過一次Lazarus的,你可以網路參考。
大致說,你需要編寫一個外殼程序,使用java,將你的現有程序編譯為庫進行調用。
㈤ android bionic 在ndk中嗎
1. 概述
首先回顧一下 Android NDK 開發中,Android.mk 和 Application.mk 各自的職責。
Android.mk,負責配置如下內容:
(1) 模塊名(LOCAL_MODULE)
(2) 需要編譯的源文件(LOCAL_SRC_FILES)
(3) 依賴的第三方庫(LOCAL_STATIC_LIBRARIES,LOCAL_SHARED_LIBRARIES)
(4) 編譯/鏈接選項(LOCAL_LDLIBS、LOCAL_CFLAGS)
Application.mk,負責配置如下內容:
(1) 目標平台的ABI類型(默認值:armeabi)(APP_ABI)
(2) Toolchains(默認值:GCC 4.8)
(3) C++標准庫類型(默認值:system)(APP_STL)
(4) release/debug模式(默認值:release)
由此我們可以看到,本文所涉及的編譯選項在Android.mk和Application.mk中均有出現,下面我們將一個個詳細介紹。
2. APP_ABI
ABI全稱是:Application binary interface,即:應用程序二進制介面,它定義了一套規則,允許編譯好的二進制目標代碼在所有兼容該ABI的操作系統和硬體平台中無需改動就能運行。(具體的定義請參考 網路 或者 維基網路 )
由上述定義可以判斷,ABI定義了規則,而具體的實現則是由編譯器、CPU、操作系統共同來完成的。不同的CPU晶元(如:ARM、Intel x86、MIPS)支持不同的ABI架構,常見的ABI類型包括:armeabi,armeabi-v7a,x86,x86_64,mips,mips64,arm64-v8a等。
這就是為什麼我們編譯出來的可以運行於Windows的二進製程序不能運行於Mac OS/Linux/Android平台了,因為CPU晶元和操作系統均不相同,支持的ABI類型也不一樣,因此無法識別對方的二進製程序。
而我們所說的「交叉編譯」的核心原理也跟這些密切相關,交叉編譯,就是使用交叉編譯工具,在一個平台上編譯生成另一個平台上的二進制可執行程序,為什麼可以做到?因為交叉編譯工具實現了另一個平台所定義的ABI規則。我們在Windows/Linux平台使用Android NDK交叉編譯工具來編譯出Android平台的庫也是這個道理。
這里給出最新 Android NDK 所支持的ABI類型及區別:
那麼,如何指定ABI類型呢?在 Application.mk 文件中添加一行即可:
APP_ABI := armeabi-v7a //只編譯armeabi-v7a版本
APP_ABI := armeabi armeabi-v7a //同時編譯armeabi,armeabi-v7a版本
APP_ABI := all //編譯所有版本
3. LOCAL_LDLIBS
Android NDK 除了提供了Bionic libc庫,還提供了一些其他的庫,可以在 Android.mk 文件中通過如下方式添加依賴:
LOCAL_LDLIBS := -lfoo
其中,如下幾個庫在 Android NDK 編譯時就默認鏈接了,不需要額外添加在 LOCAL_LDLIBS 中:
(1) Bionic libc庫
(2) pthread庫(-lpthread)
(3) math(-lmath)
(4) C++ support library (-lstdc++)
下面我列了一個表,給出了可以添加到「LOCAL_LDLIBS」中的不同版本的Android NDK所支持的庫:
下面是我總結的一些常用的CFLAGS編譯選項:
(1)通用的編譯選項
-O2 編譯優化選項,一般選擇O2,兼顧了優化程度與目標大小
-Wall 打開所有編譯過程中的Warning
-fPIC 編譯位置無關的代碼,一般用於編譯動態庫
-shared 編譯動態庫
-fopenmp 打開多核並行計算,
-Idir 配置頭文件搜索路徑,如果有多個-I選項,則路徑的搜索先後順序是從左到右的,即在前面的路徑會被選搜索
-nostdinc 該選項指示不要標准路徑下的搜索頭文件,而只搜索-I選項指定的路徑和當前路徑。
--sysroot=dir 用dir作為頭文件和庫文件的邏輯根目錄,例如,正常情況下,如果編譯器在/usr/include搜索頭文件,在/usr/lib下搜索庫文件,它將用dir/usr/include和dir/usr/lib替代原來的相應路徑。
-llibrary 查找名為library的庫進行鏈接
-Ldir 增加-l選項指定的庫文件的搜索路徑,即編譯器會到dir路徑下搜索-l指定的庫文件。
-nostdlib 該選項指示鏈接的時候不要使用標准路徑下的庫文件
(2) ARM平台相關的編譯選項
-marm -mthumb 二選一,指定編譯thumb指令集還是arm指令集
-march=name 指定特定的ARM架構,常用的包括:-march=armv6, -march=armv7-a
-mfpu=name 給出目標平台的浮點運算處理器類型,常用的包括:-mfpu=neon,-mfpu=vfpv3-d16
-mfloat-abi=name 給出目標平台的浮點預算ABI,支持的參數包括:「soft」, 「softfp」 and 「hard」
㈥ 如何用java進行安卓應用的開發
Android應用是以Java為外殼的,C艹代碼得先通過NDK交叉編譯成.so共享庫再由Java調用,C艹代碼和Java交互是使用jni來實現,Android已經有了 Native Interface,其中就用到了很多jni的內容。JNI全名Java native interface。
直接網路搜索安卓開發教程,資源非常多。先去把Java和C學好再說。Java可以選擇Head first java作為入門書,C可以選擇C Primer Plus作為入門書
㈦ 安卓NDK開發中,一個C++文件中用到#include<String> <map> <iostream>
Android NDK Jni 開發C和C++的區別 JNI是Java Native Interface的縮寫,中文為JAVA本地調用。從Java1.1開始,Java Native Interface(JNI)標准成為java平台的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它並不妨礙你使用其他語言,只要調用約定受支持就可以了。使用java與本地已編譯的代碼交互,通常會喪失平台可移植性。但是,有些情況下這樣做是可以接受的,甚至是必須的,比如,使用一些舊的庫,與硬體、操作系統進行交互,或者為了提高程序的性能。JNI標准至少保證本地代碼能工作在任何Java 虛擬機實現下。 標準的java類庫可能不支持你的程序所需的特性。 JNI·或許你已經有了一個用其他語言寫成的庫或程序,而你希望在java程序中使用它。你可能需要用底層語言實現一個小型的時間敏感代碼,比如匯編,然後在你的java程序中調用這些功能。 NDK是Google公司推出的幫助Android開發者通過C/C++本地語言編寫應用的開發包,包含了C/C++的頭文件、庫文件、說明文檔和示例代碼,我們可以理解為Windows Platform SDK一樣,是純C/C++編寫的,但是Android並不支持純C/C++編寫的應用,同時NDK提供的庫和函數功能很有限,僅僅處理些演算法效率敏感的問題,所以推薦初學者學好Java後再學習JNI。 NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平台、ABI等差異,開發人員只需要簡單修改mk文件(指出「哪些文件需要編譯」、「編譯特性要求」等),就可以創建出so。 NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。
㈧ C/C++源文件直接交叉編譯生成.so文件供安卓應用程序調用,可以嗎
Jni調用就行了,是要按規則寫介面api,如果介面很多,也沒法,那是你的業務問題,要重新設計業務邏輯。我們之前用的c++單獨交叉編譯一個進程,和安卓界面用tcp通信,如果介面多也以為著協議多,一樣的。
㈨ 安卓ndk 功能是不是可以實現linux應用程序
可以直接在android工程下使用,因為android就是linux內核。
1.android的NDK開發需要在linux下進行:
因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。
2.安裝android-nd...
㈩ 本人對python一竅不通,出於好奇,將最新的python3.2交叉編譯弄到安卓上,憑借linux內
你安裝時的目錄是否有改變? 提示說找不到相應的目錄了。