【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android下使用ACE開(kāi)源網(wǎng)絡(luò)庫(kù)_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android下使用ACE開(kāi)源網(wǎng)絡(luò)庫(kù)_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android下使用ACE開(kāi)源網(wǎng)絡(luò)庫(kù)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論