編譯FreeRDP的so文件簡單記錄

一般來說so文件我習慣在windows下去編譯,并且一般需要linux環(huán)境的也能使用Mingw完成。但是進過一些嘗試后發(fā)現(xiàn)FreeRDP無法使用MinGW去生成so文件。
但是我沒有私人linux環(huán)境,因此最快的獲得環(huán)境的方法就是買個vps。注意:內(nèi)存盡量大一點的,內(nèi)存太小編譯過程中會報錯導致無法編譯成功。
之前我用一個512M的去搭環(huán)境編譯然后編譯過程中報錯。后面我就買了個8G的。裝了Centos 8 x86_64 bbr的系統(tǒng),因為我相對習慣這個系統(tǒng)。選了那家以便宜出名的,因為綜合看下來,他家真的最便宜,而且價格明了。


image.png

根據(jù)README.android

image.png

可知,編譯so需要安裝配置cmake,ndk, sdk。
這里有一點需要注意:相關(guān)路徑需盡量與通過Android studio配置的保持一致。
例如通過Android studio安裝cmake的話,路徑默認為C:\Users\admin\AppData\Local\Android\Sdk\cmake
image.png

image.png

linux環(huán)境中cmake放到sdk路徑下。
之前我是通過編譯安裝,目錄與sh文件定義的位置不同,后面發(fā)現(xiàn)執(zhí)行sh文件的時候報錯找不到cmake。
因為sh文件中默認定義了cmake 的位置為ANDROID_SDK路徑下。

//android-build-common.sh
CMAKE_PROGRAM=$(find $ANDROID_SDK/cmake -name cmake -type f -executable -print -quit)

下面來記錄下vps安裝Centos 系統(tǒng)后編譯so文件的完整流程。
使用SecureCRT或者xshell等工具,進入linux環(huán)境中。如果ip不可用,可使用跳板機。

首先,先使用SecureCRT登陸,Username一般是root,密碼就是裝系統(tǒng)后顯示的那個密碼。
輸入密碼后就連接上了。

image.png

默認SWAP大小為521M,這個得調(diào)大。
image.png

可參考這篇文章:
搬瓦工VPS安裝Ubuntu擴大swap分區(qū)
首先進入swap文件對應目錄。
image.png

關(guān)掉所有swap文件和swap分區(qū)

swapoff -a

刪除原來的swap文件

rm swap 
image.png

在原位置新建8G的空文件,這里按需更改即可。這里要等一段時間。

dd if=/dev/zero of=/swap bs=8M count=1024

將新建的空文件格式化為swap文件

mkswap /swap

修改swap文件為安全的權(quán)限

chmod 0644 /swap

啟用swap文件

swapon /swap
image.png

有一句權(quán)限的提示但是不影響,此時查看面板可以看到已經(jīng)改好。


image.png

下面來開始安裝sdk,ndk,cmake,jdk。
1.sdk的安裝。
由于是Centos 系統(tǒng),這里可以選擇通過wget命令來下載,先安裝wget。

yum -y install wget

進入/usr/local目錄,下載sdk文件。

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
image.png

新建一個名為android-sdk的文件夾。

mkdir /usr/local/android-sdk

進入android-sdk文件夾。

cd /usr/local/android-sdk

用 mv 把sdk包移動到 /usr/local/android-sdk/目錄下

mv /usr/local/android-sdk_r24.4.1-linux.tgz /usr/local/android-sdk/
image.png

使用tar解壓。

tar -zxvf android-sdk_r24.4.1-linux.tgz

解壓后需配置系統(tǒng)變量,在此之前需安裝vim。
安裝vim。

yum -y install vim

通過vim編輯/etc/profile 文件。

vim /etc/profile 

打開后,按i進入編輯狀態(tài)。
在文件末端 添加如下配置:

export ANDROID_SDK=/usr/local/android-sdk/android-sdk-linux
export PATH=$ANDROID_SDK/tools:$PATH

.export 在shell中用于變量的綁定,當開啟一個新shell進程時,會拷貝這個變量用于變量輸出 。
編輯完后按ESC,并且輸入:wq保存退出。

使配置文件立即生效

source /etc/profile 

2.安裝JDK。
在此之前還需要先配置JDK。由于jdk部分版本需要賬號才能下載,新版本不需要,可以通過wget 下載,但是下載鏈接貌似隔天就會失效,因此這里放出官網(wǎng)鏈接。
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
選擇我需要的版本。

image.png

image.png

復制下載鏈接。


image.png

進入/usr/local目錄。
通過鏈接下載jdk。注意:這個鏈接會失效,需自行從官網(wǎng)獲取。

wget https://download.oracle.com/otn-pub/java/jdk/15.0.1+9/51f4f36ad4ef43e39d0dfdbaf6549e32/jdk-15.0.1_linux-x64_bin.tar.gz?AuthParam=1604989766_33c48b09c45145ae9d8253f0b2cfa941

查看當前文件名。然后使用使用tar解壓。


image.png
tar -zxvf jdk-15.0.1_linux-x64_bin.tar.gz?AuthParam=1604989766_33c48b09c45145ae9d8253f0b2cfa941
image.png

解壓完后,配置環(huán)境變量。

vim /etc/profile 

增加如下

export JAVA_HOME=/usr/local/jdk-15.0.1
export PATH=.:$JAVA_HOME/bin:$PATH

使配置文件立即生效

source /etc/profile 

測試是否安裝成功。

java -version
image.png

3.安裝NDK。
ndk下載地址如下:https://developer.android.com/ndk/downloads

image.png

進入/usr/local/android-sdk/android-sdk-linux目錄。
使用wget下載。

wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip
image.png

需要使用unzip xxxx.zip 解壓,因此下載unzip。

yum install  unzip

使用unzip解壓。

unzip  android-ndk-r21b-linux-x86_64.zip

使用vim 配置環(huán)境變量。

vim /etc/profile 

增加如下所示。

export ANDROID_NDK=/usr/local/android-sdk/android-sdk-linux/android-ndk-r21b
export PATH=$ANDROID_NDK:$PATH

使配置文件立即生效

source /etc/profile 

使用ndk-build測試是否配置成功。
會報錯,因為沒有課編譯的文件。

image.png

4.安裝Cmake
Cmake這里注意不要通過編譯安裝,編譯安裝的話如果不配置安裝位置的話,在編譯FreeRDP的so文件的時候會有坑。

cmake官網(wǎng)的https://cmake.org/download/ 中下載鏈接是github的,但是em。。wget下載不了。但是https://cmake.org/files/這個目錄下的可以下載。
使用wget下載。

wget https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz

使用tar解壓。

tar -xzvf cmake-3.13.0-Linux-x86_64.tar.gz
image.png

使用mv把cmake-3.13.0-Linux-x86_64文件夾名稱改為為cmake。(注意,這里是必需的,不然執(zhí)行sh文件的時候可能找不到cmake,要么改這里要么改sh文件,得選一個吧)

mv cmake-3.13.0-Linux-x86_64  cmake 

設置環(huán)境變量。

vim /etc/profile 

新增如下

PATH=/usr/local/android-sdk/android-sdk-linux/cmake/bin:$PATH
export PATH

使配置文件立即生效

source /etc/profile 

使用cmake --version測試

image.png

最終/etc/profile 中新增如下。

export ANDROID_NDK=/usr/local/android-sdk/android-sdk-linux/android-ndk-r21b
export PATH=$ANDROID_NDK:$PATH

export ANDROID_SDK=/usr/local/android-sdk/android-sdk-linux
export PATH=$ANDROID_SDK/tools:$PATH

PATH=/usr/local/android-sdk/android-sdk-linux/cmake/bin:$PATH
export PATH

export JAVA_HOME=/usr/local/jdk-15.0.1
export PATH=.:$JAVA_HOME/bin:$PATH

至此,JDK,NDK,SDK,JDK配置完成。
下面的目標是編譯FreeRDP。
進入/mnt目錄下,使用git clone下載FreeRDP。這里還需要下載git。

yum install git 
image.png
git clone https://github.com/FreeRDP/FreeRDP.git
image.png

由于需要執(zhí)行

./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK>

ANDROID_NDK和ANDROID_SDK需修改成本機的路徑,因此需進入/mnt/FreeRDP目錄,然后執(zhí)行

./scripts/android-build-freerdp.sh --ndk /usr/local/android-sdk/android-sdk-linux/android-ndk-r21b --sdk /usr/local/android-sdk/android-sdk-linux

但是會報錯:

/usr/bin/env: python3: No such file or directory

仍然缺少東西。使用yum安裝python。

yum install python3

重新執(zhí)行android-build-freerdp.sh。

./scripts/android-build-freerdp.sh --ndk /usr/local/android-sdk/android-sdk-linux/android-ndk-r21b --sdk /usr/local/android-sdk/android-sdk-linux

進入jniLibs目錄。

cd /mnt/FreeRDP/client/Android/Studio/freeRDPCore/src/main/jniLibs

隨便進入一個文件夾下,就可以看到生成的so文件了。


image.png

然后需要將so文件從vps下載。
具體可以參考這篇。
簡單快捷的方式從vps下載文件

然后使用過程中有個坑,由于Android7的so文件的使用是有bug,這種在library中加載so文件的方式在Android7中會加載失敗,因此測試的話要么避免使用Android7,要么就改工程文件吧,不使用Library就行。
然后在windows中打開Android studio,選擇FreeRDP-master\client\Android\Studio這個目錄打開。

把你需要的so文件放到jniLibs目錄,然后連上運行即可。
image.png

參考鏈接:
Ubuntu:安裝cmake
centos6.5 安裝cmake 3.3.2
/usr/bin/env: python3: No such file or directory
Centos出現(xiàn)-bash: unzip: command not found的解決辦法
-bash: vim: command not found 兩種解決方法
解決: Linux – git: command not found
Linux:Centos 安裝配置NDK
ubuntu 16.04 + cmake 升級
linux安裝cmake
Linux下make、cmake指定安裝目錄
-bash: pip: command not found pip命令報錯 解決方法
搬瓦工VPS安裝Ubuntu擴大swap分區(qū)
簡單快捷的方式從vps下載文件
-bash: pip: command not found pip命令報錯 解決方法
FreeRDP
linux 下安裝配置 android sdk-24.4
Linux 下安裝JDK1.8

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容