2016-01-01 64 views
1

aFreeRDP是FreeRDP項目的Android客戶端。如何編譯Linux上的FreeRDP

我正在使用64位Ubuntu 15.04 Vivid。

我的目標是編譯一個FreeRDP。我在終點線,但無法越過它。我成功安裝了所需的軟件包Android NDK,然後編譯了外部openssl(android shell腳本自動執行)。然後我生成了make文件。有趣的是既不

cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DANDROID_SDK=/home/csaba/android-sdk-linux

也不

cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DCMAKE_BUILD_TYPE=Debug -DANDROID_BUILD_JAVA=OFF -DANDROID_SDK=/home/csaba/android-sdk-linux -DFREERDP_EXTERNAL_JPEG_PATH=/home/csaba/GitRepos/FreeRDP/external/jpeg8d

產生的任何apk,但它們愉快地編譯libfreerdp-android.so

我需要一個apk,所以我去了client/Android/aFreeRDP,因爲我在那裏有一個build.xml,我說ant build install。構建過程已開始,但隨後在資源編譯階段死亡。我擁有Android SDK的當前級別的23個Android構建工具和配套內容。我從源頭上看到,源代碼最初是針對21級的。我也添加了21級SDK,並試圖在AndroidManifest.xml中強制maxSdkVersion到21,但這並沒有幫助。編譯日誌:

http://pastebin.com/Nc0mqGrQ

正如你可以資源錯誤

[aapt] Generating resource IDs... 
[aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base.xml:20: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'. 
[aapt] 
[aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base_text.xml:19: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'. 
[aapt] 

它死

BUILD FAILED 
/home/csaba/android-sdk-linux/tools/ant/build.xml:597: The following error occurred while executing this line: 
/home/csaba/android-sdk-linux/tools/ant/build.xml:649: The following error occurred while executing this line: 
/home/csaba/android-sdk-linux/tools/ant/build.xml:694: null returned: 1 

比較21級和23級的資源後看到,21級有方式更多的東西,23級有單個條目,非常模糊。我怎樣才能解決這個問題?讓我知道我應該發佈什麼文件。


更新1:

擺脫與ADT一個惱人的問題,這可能也影響了這個錯誤:Eclipse Error: Error parsing ...\android-22\android-wear\armeabi-v7a\devices.xml 不幸的是卸載磨損圖像所作的ADT錯誤消失,但aFreeRDP編譯錯誤仍然存在。


更新2: 我想回去的時間,我的目標是有一個Android SDK可提供21,但沒有23級 我支持我目前的Android SDK。 SDK下載tgz 22.6.2(https://dl.google.com/android/android-sdk_r22.6.2-linux.tgz)只提供目標21.但SDK下載tgz 23.0.0(https://dl.google.com/android/android-sdk_r23-linux.tgz)已經想升級到24.所以我不能讓系統進入狀態,當我沒有目標23 (它以某種方式間接地導致錯誤 - 更準確地說,目標23(滿足目標21)的級別24的兼容性設施),但是具有目標21.

(附加問題:爲什麼Google很難下載較舊的SDK ?我必須小提琴和猜測網址)。


更新3:

我設法從Android Studio中調試aFreeRDP(V 1.5)使用所述方向github.com/FreeRDP/FreeRDP/blob/master/docs/README.android

+0

新年快樂BTW –

+0

顯然Android的構建指令現在不同,並顯示Android Studio:https://github.com/FreeRDP/FreeRDP/blob/master/docs/README.android我有一些奇怪的啓動問題與Android Studio目前(堅持與啓動橫幅,並沒有真正啓動)。 –

+0

我設法使用https://github.com/FreeRDP/FreeRDP/blob/master/docs/README.android –

回答

1

我從23.0 SDK tgz開始,升級一輪(不升級到Android 6.0)。然後將麻煩的xml文件從Android SDK複製過來。所以我從SDK中刪除了這個values-v23文件夾。我還修改了aFreeRDP的AndroidManifest.xml,並將14的minSdkVersion設置爲14.刪除目錄當然有幫助,我不確定其他兩個步驟是否有貢獻,但我現在有一個apk。我認爲這是一個醜陋的黑客,但只是一個解決方法。因爲我現在不會將此標記爲答案。


更新: 我從一個完全更新的Android SDK開始,和中的minSdkVersion凹凸14日至17也無所謂。導致錯誤消失的唯一因素是從Android SDK內部侵入性地移除該值-v23目錄。


注: 編譯比較簡單,一年/幾年前比它。 android_setup_build_env.sh負責下載和編譯ssl庫和其他東西。

+0

從Android Studio(v 1.5)調試aFreeRDP這仍然不夠好,無法調試該項目。我分離了一個項目(我知道我有一些二進制文件),可以使用Eclipse ADT進行調試。我還沒有能夠使用Android Studio進行調試,但https://github.com/MrCsabaToth/aFreeRDP –

+0

我設法從Android Studio(v 1.5)使用路線github.com/FreeRDP/FreeRDP/blob/調試aFreeRDP master/docs/README.android –

1

我想發佈相同的主題,但你已經做了一個,所以我會在這裏發表。 應該評論,但我沒有50聲譽發表評論,所以我讓答案在這裏:注:(在這個崗位XXX = https://github.com

參考鏈接: XXX/FreeRDP/FreeRDP /維基/編譯 XXX/awakecoding/FreeRDP-Manuals/blob/master/Developer/FreeRDP-Developer-Manual.markdown 和其他來自互聯網的帖子

目標:爲Android設備構建一個FreeRDP。 2年前,我曾經爲Ubuntu 12/14構建它,但現在構建已被破壞。

一個新的環境需要設置再試:

-Windows 7企業的64位(MAIN OS) -WMware工作站10 -VM Ubuntu的15.10威利64位

準備的Ubuntu與NDK10e,JDK7,SDK23 ...

shaun @ ubuntu:〜$ lsb_release -a 沒有LSB模塊可用。 代理商ID:Ubuntu 描述:Ubuntu 15.10 內容:15。10 代號:老謀深算

安裝JDK

須藤附加的apt-庫PPA:webupd8team/JAVA

sudo易於得到更新

命令和apt-get安裝的Oracle java7的安裝程序

安裝Android NDK

CHMOD一個+ X機器人-NDK-r10e-Linux的x86_64.bin

./android-ndk-r10e-linux-x86_64.bin

須藤CHOWN -R根:根/家/肖恩/主/機器人-NDK-r10e

須藤MV /家/肖恩/主/ Android的NDK-r10e /選擇

出口NDK = /選擇/ Android的NDK-r10e

安裝Android SDK

下載並解壓縮Android的sdk_r23.0.2-linux.tgz

須藤MV /家庭/肖恩/主/ Android的SDK-的Linux的/ opt/Android的SDK

肖恩@ Ubuntu的內容:/ opt/Android的SDK /工具$ ./android

安裝依賴性GIT/CMake的/ GCC

命令和apt-get安裝\ 建立必要的git的核心cmake的\ 的libssl-dev的\ 的libx11-dev的libxext-dev的libxinerama-dev的libxcursor-dev的libxkbfile-dev的\ libxv-dev的libxi -dev libxdamage-dev libxrender-dev libxrandr-dev \ libasound2-dev libcups2-dev libpulse-dev \ libavutil-dev的libavcodec的-dev的\ libgstreamer0.10-dev的libgstreamer - 插件 - base0.10-dev的libcunit1-dev的libdirectfb-dev的xmlto的doxygen libxtst-dev的

命令和apt-get安裝lib32stdC++ 6

命令和apt-get安裝lib32z1

GET FreeRDP

混帳混帳克隆://github.com/FreeRDP/FreeRDP.git CD FreeRDP

添加PATH

肖恩@ Ubuntu的:〜$的gedit的〜/ .bashrc 出口ANDROID_NDK = /選擇/ Android的NDK-r10e 出口ANDROID_SDK = /選擇/ Android的SDK 出口FREERDP_EXTERNAL_SSL_PATH = /家庭/肖恩/主/ FreeRDP主/外部/ Android的外部的OpenSSL NDK靜電 出口PATH = $ PATH:$ FREERDP_EXTERNAL_SSL_PATH 出口PATH = 「$ PATH:$ ANDROID_SDK /工具:$ ANDROID_SDK /平臺的工具:$ ANDROID_NDK」

從FreeRDP - >運行./scripts/android_setup_build_env.sh - >查看長輸出....然後在最後看到: 準備好外部庫,現在可以構建應用程序。

最後運行:

cmake的-DCMAKE_TOOLCHAIN_FILE =的cmake/AndroidToolchain.cmake -DANDROID_NDK = $ ANDROID_NDK -DANDROID_SDK = $ ANDROID_SDK -DFREERDP_EXTERNAL_SSL_PATH = $ FREERDP_EXTERNAL_SSL_PATH -DFREERDP_EXTERNAL_JPEG_PATH =「/家/肖恩/主/ FreeRDP /外部/ jpeg8d「-DANDROID_NATIVE_API_LEVEL:STRING = L -DCMAKE_MAKE_PROGRAM = $ ANDROID_NDK/prebuilt/linux-x86/bin/make -DCMAKE_BUILD_TYPE =調試-DANDROID_BUILD_JAVA = OFF -L。 使

本作後,我有我需要的所有庫,但仍未能有APK:...

...長時間的輸出.... 總時間:2秒 客戶端/安卓/ aFreeRDP/CMakeFiles/android-package.dir/build.make:50:target'client/Android/aFreeRDP/bin/aFreeRDP-debug.apk'的配方失敗 make [2]:* [client/Android/aFreeRDP/bin/aFreeRDP-debug.apk] Error 1 CMakeFiles/Makefile2:2494:recipe'target/Android/aFreeRDP/CMakeFiles/android-package.dir/all'failed make [1]:* [client/Android /aFreeRDP/CMakeFiles/android-package.d IR /所有]錯誤2 生成文件:136:配方目標 '所有' 失敗 化妝:*** [全部]錯誤2

================= =========

導入到Eclipse和從Eclipse中成功地建造 - 具有新功能的最先進的功能再次APK和應用程序運行在我所有的設備是麥克風重定向工作以及:-)

但仍然不能在ANDROID STUDIO中工作,仍然嘗試:(如果你在AS中工作,請讓我知道。謝謝

+0

我設法從命令提示符構建。您不需要下載openssl和jpeg以及其他東西,./scripts/android_setup_build_env.sh應該注意這一點。最後,cmake生成並構建腳本。您可以稍後手動調用該方法,或者使用適當的命令在最後開始構建ant任務。 –

+0

我設法獲得了Eclipse ADT構建,但Android Studio仍然沒有運氣。由於我們正在處理本地庫(也就是C++),所以我不知道Android Studio支持多少。我試圖將Android部分(aFreeRDP與.so庫,基本上是客戶端/ Android庫)分隔開來。但我還沒有成功使用Android Studio。 –

+0

現在我仍然遇到麻煩,因爲aFreeRDP只是一個框架,真正的肉在FreeRDPCore Android庫項目中。似乎我必須統一這兩個,而不是使用Android庫來完成我的項目。 –