91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android下使用ACE開源網絡庫

發布時間:2020-03-05 14:32:59 來源:網絡 閱讀:1834 作者:Gobert 欄目:移動開發

   最近公司要求將PC平臺下的代碼移植到Android平臺,其中涉及到的ACE開源代碼,雖然ACE比較笨重,但由于種種歷史原因,我不可能將ACE給踢掉重新開發,故需要解決ACE開源庫在Android下的編譯和使用問題,由于工程中使用多個第三方靜態庫,對于我這種半路出家的純C++程序猿來說,還是有些挑戰的,在此記錄大致過程,以方便其它同學參考,少走些彎路。

   首先請自行安裝Android開發工具:NDK(r9d)、jdk(jdk1.7.0_45)、ADT(v22.3.0-887826);

   ACE——6.0以后的版本已經自帶的Android下編譯的MakeFile,本人使用的版本是6.2.4,編譯需要安裝cygwin,請自行安裝,安裝時選擇Devel-install,安裝開發工具gcc、g++、ld等。

   備注:公司歷史版本為5.5.0,由于該版本尚未加入Android Makefile,但并非不支持,但較6.2.4并未出現大的改動,基本可以直接使用,當然如果你偏偏使用了它更改了的代碼的話,就需要你自行修改了。

   均安裝完畢后編譯ACE源代碼,進入cygwin

   1、設置環境變量:

   編輯~/.bash_profile文件,在最下方添加   

    NDK=D:/android-ndk-r9d

    export NDK

    

     ACE_ROOT=$NDK/sources/ACE-6.2.4

    export ACE_ROOT

    

    ANDROID_ARCH=arm

    export ANDROID_ARCH

    

    SYSROOT=$NDK/platforms/android-9/arch-arm

    export SYSROOT

    

    PATH=$PATH:$ACE_ROOT/toolchain/bin

    export PATH

   保存后,執行命令 source ~/.bash_profile使其生效;

   2、生成交叉編譯環境

   執行命令

   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

   注:本人系統為window7 64bit,故需指定系統版本(--system=windows-x86_64)。

   3、ACE源代碼準備

   將源代碼解壓到$NDK/sources/ACE-6.2.4目錄下,并作適當的修改,分別為:

   a、新建ace/config.h文件,內容如下   

    #ifndef __ACE_INLINE__

    #define __ACE_INLINE__

    #endif

    #ifdef WIN32

    #include "ace/config-win32.h"

    #else

    #include "ace/config-android.h"

    #endif

   b、新建include/makeinclude/platform_macros.GNU文件,指定makefile,內容如下

               include $(ACE_ROOT)/include/makeinclude/platform_android.GNU

          c、輯$(ACE_ROOT)/ace/Basic_Types.h,在適當位置添加如下代碼:        

    #if defined(ANDROID)

    #  include <sys/endian.h>

    #endif

    備注:由于在單獨使用ace/ACE.h或ace/Basic_Types.h時,ACE對ACE_BYTE_ORDER的定義自相矛盾,所以此處在判斷出是Android時,強行導入android下的大小頭定義文件。

          d、打開$(ACE_ROOT)/include/makeinclude/platform_android.GNU, 并加入如下代碼:

               CPPFLAGS += -DANDROID

               編譯ACE靜態庫,故需添加如下命令:

                static_libs=1

               備注:如果提示arm-linux-androideabi-g++不存在,請在此文件中CROSS_COMPILE的定義處修改為:

                CROSS_COMPILE=$(ACE_ROOT)/toolchain/bin/arm-linux-androideabi-

            4、編譯

                只編譯ACE源代碼,不編譯sample等其它代碼,進入

    cd $ACE_ROOT/ace

    make

     等待編譯完成,會自動生成到$ACE_ROOT/lib目錄。

   5、使用

     在此列出其中一個工程使用libACE.a的android.mk文件

    LOCAL_PATH := $(call my-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)

     相關內容請自行添加;

     本工程最終生成libNetwork.so文件,鏈接到的靜態庫均有依賴ACE代碼,故在LOCAL_WHOLE_STATIC_LIBRARIES中將ACE寫在最后面;同時需在其它靜態庫工程Android.mk文件中同時添加__ACE_INLINE__宏定義,否則在*.so鏈接時會報鏈接錯誤,導致最終生成失敗。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红桥区| 横山县| 武清区| 溧水县| 饶平县| 邻水| 金堂县| 广州市| 利津县| 潞城市| 津市市| 即墨市| 博湖县| 开化县| 辛集市| 云和县| 永顺县| 儋州市| 常熟市| 鹤壁市| 大方县| 同德县| 临漳县| 河源市| 巴塘县| 元谋县| 观塘区| 高雄市| 贵阳市| 奉节县| 长白| 芒康县| 安康市| 河津市| 宜黄县| 商南县| 凯里市| 定日县| 郓城县| 建平县| 万山特区|