


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android下使用ACE開(kāi)源網(wǎng)絡(luò)庫(kù)
最近公司要求將PC平臺(tái)下的代碼移植到Android平臺(tái),其中涉及到的ACE開(kāi)源代碼,雖然ACE比較笨重,但由于種種歷史原因,我不可能將ACE給踢掉重新開(kāi)發(fā),故需要解決ACE開(kāi)源庫(kù)在Android下的編譯和使用問(wèn)題,由于工程中使用多個(gè)第三方靜態(tài)庫(kù),對(duì)于我這種半路出家的純C++程序猿來(lái)說(shuō),還是有些挑戰(zhàn)的,在此記錄大致過(guò)程,以方便其它同學(xué)參考,少走些彎路。
首先請(qǐng)自行安裝Android開(kāi)發(fā)工具:NDK(r9d)、jdk(jdk1.7.0_45)、ADT(v22.3.0-887826);
ACE——6.0以后的版本已經(jīng)自帶的Android下編譯的MakeFile,本人使用的版本是6.2.4,編譯需要安裝cygwin,請(qǐng)自行安裝,安裝時(shí)選擇Devel-install,安裝開(kāi)發(fā)工具gcc、g++、ld等。
備注:公司歷史版本為5.5.0,由于該版本尚未加入AndroidMakefile,但并非不支持,但較6.2.4并未出現(xiàn)大的改動(dòng),基本可以直接使用,當(dāng)然如果你偏偏使用了它更改了的代碼的話,就需要你自行修改了。
均安裝完畢后編譯ACE源代碼,進(jìn)入cygwin
1、設(shè)置環(huán)境變量:
編輯~/.bash_profile文件,在最下方添加
NDK=D:/android-ndk-r9d
exportNDK
ACE_ROOT=$NDK/sources/ACE-6.2.4
exportACE_ROOT
ANDROID_ARCH=arm
exportANDROID_ARCH
SYSROOT=$NDK/platforms/android-9/arch-arm
exportSYSROOT
PATH=$PATH:$ACE_ROOT/toolchain/bin
exportPATH
保存后,執(zhí)行命令source~/.bash_profile使其生效;
2、生成交叉編譯環(huán)境
執(zhí)行命令
cd$NDK
./build/tools/make-standalone-toolchain.sh--toolchain=arm-linux-androideabi-4.6--arch=arm--platform=android-9--install-dir=./sources/ACE-6.2.4/toolchain
--system=windows-x86_64
注:本人系統(tǒng)為window764bit,故需指定系統(tǒng)版本(--system=windows-x86_64)。
3、ACE源代碼準(zhǔn)備
將源代碼解壓到$NDK/sources/ACE-6.2.4目錄下,并作適當(dāng)?shù)男薷?,分別為:
a、新建ace/config.h文件,內(nèi)容如下
#ifndef__ACE_INLINE__
#define__ACE_INLINE__
#endif
#ifdefWIN32
#include"ace/config-win32.h"
#else
#include"ace/config-android.h"
#endif
b、新建include/makeinclude/platform_macros.GNU文件,指定makefile,內(nèi)容如下
include$(ACE_ROOT)/include/makeinclude/platform_android.GNU
c、輯$(ACE_ROOT)/ace/Basic_Types.h,在適當(dāng)位置添加如下代碼:
#ifdefined(ANDROID)
#
include<sys/endian.h>
#endif
備注:由于在單獨(dú)使用ace/ACE.h或ace/Basic_Types.h時(shí),ACE對(duì)ACE_BYTE_ORDER的定義自相矛盾,所以此處在判斷出是Android時(shí),強(qiáng)行導(dǎo)入android下的大小頭定義文件。
d、打開(kāi)$(ACE_ROOT)/include/makeinclude/platform_android.GNU,并加入如下代碼:
CPPFLAGS+=-DANDROID
編譯ACE靜態(tài)庫(kù),故需添加如下命令:
static_libs=1
備注:如果提示arm-linux-androideabi-g++不存在,請(qǐng)?jiān)诖宋募蠧ROSS_COMPILE的定義處修改為:
CROSS_COMPILE=$(ACE_ROOT)/toolchain/bin/arm-linux-androideabi-
4、編譯
只編譯ACE源代碼,不編譯sample等其它代碼,進(jìn)入
cd$ACE_ROOT/ace
make
等待編譯完成,會(huì)自動(dòng)生成到$ACE_ROOT/lib目錄。
5、使用
在此列出其中一個(gè)工程使用libACE.a的android.mk文件
LOCAL_PATH:=$(callmy-dir)
include$(CLEAR_VARS)
LOCAL_ARM_MODE:=arm
LOCAL_MODULE:=libNetwork
LOCAL_MODULE_TAGS:=optional
LOCAL_CPP_EXTENSION:=.cpp
LOCAL_SRC_FILES:=\
LOCAL_C_INCLUDES:=\
$(LOCAL_PATH)
LOCAL_CFLAGS:=\
'-DANDROID'\
'-DANDROID_ACE'\
'-D__ACE_INLINE__'
LOCAL_WHOLE_STATIC_LIBRARIES:=\
p2p_lib\
p2p_client\
p2p_media\
ACE
LOCAL_SHARED_LIBRARIES:=\
libstlport
LOCAL_LDLIBS+=-llog-ljnigraphics-lz-landroid
include$(BUILD_SHARED_LIBRARY)
相關(guān)內(nèi)容請(qǐng)自行添加;
本
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深圳市二手房裝修工程施工合同
- 跨國(guó)(非獨(dú)占)品牌授權(quán)合作合同專業(yè)版
- 勞動(dòng)合同判例解析:合同糾紛與法律適用
- 實(shí)習(xí)生實(shí)習(xí)與就業(yè)合同書(shū)
- 反擔(dān)保責(zé)任合同模板
- 購(gòu)銷合同的反擔(dān)保書(shū)
- 全球商標(biāo)使用權(quán)轉(zhuǎn)讓合同
- 實(shí)習(xí)人員合同范本
- 終止建筑工程合同協(xié)議書(shū)
- 企業(yè)學(xué)徒工用工合同范本
- 開(kāi)學(xué)安全第一課主題班會(huì)課件
- 一年級(jí)珍惜糧食主題班會(huì)學(xué)習(xí)教案
- 新版《醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年人教版數(shù)學(xué)五年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 海岸動(dòng)力學(xué)英文課件Coastal Hydrodynamics-復(fù)習(xí)
- 碳足跡研究-洞察分析
- 硬質(zhì)巖層組合切割開(kāi)挖技術(shù)
- 2024解析:第二章聲現(xiàn)象-講核心(解析版)
- 2024年考研管理類綜合能力(199)真題及解析完整版
- 2025年初級(jí)社會(huì)工作者綜合能力全國(guó)考試題庫(kù)(含答案)
- 2024解析:第十章 浮力綜合應(yīng)用-講核心(解析版)
評(píng)論
0/150
提交評(píng)論