一般來說so文件我習(xí)慣在windows下去編譯鸵荠,并且一般需要linux環(huán)境的也能使用Mingw完成。但是進(jìn)過一些嘗試后發(fā)現(xiàn)FreeRDP無法使用MinGW去生成so文件脖苏。
但是我沒有私人linux環(huán)境敬辣,因此最快的獲得環(huán)境的方法就是買個(gè)vps。注意:內(nèi)存盡量大一點(diǎn)的陋气,內(nèi)存太小編譯過程中會(huì)報(bào)錯(cuò)導(dǎo)致無法編譯成功。
之前我用一個(gè)512M的去搭環(huán)境編譯然后編譯過程中報(bào)錯(cuò)引润。后面我就買了個(gè)8G的巩趁。裝了Centos 8 x86_64 bbr的系統(tǒng),因?yàn)槲蚁鄬?duì)習(xí)慣這個(gè)系統(tǒng)淳附。選了那家以便宜出名的议慰,因?yàn)榫C合看下來,他家真的最便宜奴曙,而且價(jià)格明了别凹。
根據(jù)README.android
可知,編譯so需要安裝配置cmake洽糟,ndk炉菲, sdk堕战。
這里有一點(diǎn)需要注意:相關(guān)路徑需盡量與通過Android studio配置的保持一致。
例如通過Android studio安裝cmake的話拍霜,路徑默認(rèn)為
C:\Users\admin\AppData\Local\Android\Sdk\cmake
linux環(huán)境中cmake放到sdk路徑下嘱丢。
之前我是通過編譯安裝,目錄與sh文件定義的位置不同祠饺,后面發(fā)現(xiàn)執(zhí)行sh文件的時(shí)候報(bào)錯(cuò)找不到cmake越驻。
因?yàn)閟h文件中默認(rèn)定義了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等工具缀旁,進(jìn)入linux環(huán)境中。如果ip不可用勺鸦,可使用跳板機(jī)诵棵。
首先,先使用SecureCRT登陸祝旷,Username一般是root履澳,密碼就是裝系統(tǒng)后顯示的那個(gè)密碼。
輸入密碼后就連接上了怀跛。
默認(rèn)SWAP大小為521M距贷,這個(gè)得調(diào)大。
可參考這篇文章:
搬瓦工VPS安裝Ubuntu擴(kuò)大swap分區(qū)
首先進(jìn)入swap文件對(duì)應(yīng)目錄吻谋。
關(guān)掉所有swap文件和swap分區(qū)
swapoff -a
刪除原來的swap文件
rm swap
在原位置新建8G的空文件忠蝗,這里按需更改即可。這里要等一段時(shí)間漓拾。
dd if=/dev/zero of=/swap bs=8M count=1024
將新建的空文件格式化為swap文件
mkswap /swap
修改swap文件為安全的權(quán)限
chmod 0644 /swap
啟用swap文件
swapon /swap
有一句權(quán)限的提示但是不影響阁最,此時(shí)查看面板可以看到已經(jīng)改好。
下面來開始安裝sdk骇两,ndk速种,cmake,jdk低千。
1.sdk的安裝配阵。
由于是Centos 系統(tǒng),這里可以選擇通過wget命令來下載示血,先安裝wget棋傍。
yum -y install wget
進(jìn)入/usr/local
目錄,下載sdk文件难审。
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
新建一個(gè)名為android-sdk的文件夾瘫拣。
mkdir /usr/local/android-sdk
進(jìn)入android-sdk文件夾。
cd /usr/local/android-sdk
用 mv 把sdk包移動(dòng)到 /usr/local/android-sdk/目錄下
mv /usr/local/android-sdk_r24.4.1-linux.tgz /usr/local/android-sdk/
使用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進(jìn)入編輯狀態(tài)地淀。
在文件末端 添加如下配置:
export ANDROID_SDK=/usr/local/android-sdk/android-sdk-linux
export PATH=$ANDROID_SDK/tools:$PATH
.export 在shell中用于變量的綁定失球,當(dāng)開啟一個(gè)新shell進(jìn)程時(shí),會(huì)拷貝這個(gè)變量用于變量輸出 帮毁。
編輯完后按ESC
,并且輸入:wq
保存退出实苞。
使配置文件立即生效
source /etc/profile
2.安裝JDK。
在此之前還需要先配置JDK烈疚。由于jdk部分版本需要賬號(hào)才能下載黔牵,新版本不需要,可以通過wget 下載爷肝,但是下載鏈接貌似隔天就會(huì)失效猾浦,因此這里放出官網(wǎng)鏈接。
https://www.oracle.com/java/technologies/javase-jdk15-downloads.html
選擇我需要的版本灯抛。
復(fù)制下載鏈接金赦。
進(jìn)入/usr/local
目錄。
通過鏈接下載jdk对嚼。注意:這個(gè)鏈接會(huì)失效夹抗,需自行從官網(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
查看當(dāng)前文件名纵竖。然后使用使用tar解壓漠烧。
tar -zxvf jdk-15.0.1_linux-x64_bin.tar.gz?AuthParam=1604989766_33c48b09c45145ae9d8253f0b2cfa941
解壓完后,配置環(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
3.安裝NDK。
ndk下載地址如下:https://developer.android.com/ndk/downloads
進(jìn)入
/usr/local/android-sdk/android-sdk-linux
目錄通殃。使用wget下載摆舟。
wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip
需要使用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
測試是否配置成功照宝。
會(huì)報(bào)錯(cuò),因?yàn)闆]有課編譯的文件句葵。
4.安裝Cmake
Cmake這里注意不要通過編譯安裝厕鹃,編譯安裝的話如果不配置安裝位置的話兢仰,在編譯FreeRDP的so文件的時(shí)候會(huì)有坑。
cmake官網(wǎng)的https://cmake.org/download/ 中下載鏈接是github的剂碴,但是em把将。。wget下載不了忆矛。但是https://cmake.org/files/這個(gè)目錄下的可以下載察蹲。
使用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
使用mv把cmake-3.13.0-Linux-x86_64文件夾名稱改為為cmake洽议。(注意,這里是必需的漫拭,不然執(zhí)行sh文件的時(shí)候可能找不到cmake亚兄,要么改這里要么改sh文件,得選一個(gè)吧)
mv cmake-3.13.0-Linux-x86_64 cmake
設(shè)置環(huán)境變量采驻。
vim /etc/profile
新增如下
PATH=/usr/local/android-sdk/android-sdk-linux/cmake/bin:$PATH
export PATH
使配置文件立即生效
source /etc/profile
使用cmake --version
測試
最終/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配置完成礼旅。
下面的目標(biāo)是編譯FreeRDP菲盾。
進(jìn)入/mnt
目錄下,使用git clone下載FreeRDP各淀。這里還需要下載git懒鉴。
yum install git
git clone https://github.com/FreeRDP/FreeRDP.git
由于需要執(zhí)行
./scripts/android-build-freerdp.sh --ndk <ANDROID_NDK> --sdk <ANDROID_SDK>
ANDROID_NDK和ANDROID_SDK需修改成本機(jī)的路徑,因此需進(jìn)入/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
但是會(huì)報(bào)錯(cuò):
/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
進(jìn)入jniLibs目錄悉默。
cd /mnt/FreeRDP/client/Android/Studio/freeRDPCore/src/main/jniLibs
隨便進(jìn)入一個(gè)文件夾下,就可以看到生成的so文件了苟穆。
然后需要將so文件從vps下載抄课。
具體可以參考這篇。
簡單快捷的方式從vps下載文件
然后使用過程中有個(gè)坑雳旅,由于Android7的so文件的使用是有bug跟磨,這種在library中加載so文件的方式在Android7中會(huì)加載失敗,因此測試的話要么避免使用Android7攒盈,要么就改工程文件吧抵拘,不使用Library就行。
然后在windows中打開Android studio型豁,選擇FreeRDP-master\client\Android\Studio
這個(gè)目錄打開僵蛛。
把你需要的so文件放到j(luò)niLibs目錄尚蝌,然后連上運(yùn)行即可。
參考鏈接:
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 升級(jí)
linux安裝cmake
Linux下make充尉、cmake指定安裝目錄
-bash: pip: command not found pip命令報(bào)錯(cuò) 解決方法
搬瓦工VPS安裝Ubuntu擴(kuò)大swap分區(qū)
簡單快捷的方式從vps下載文件
-bash: pip: command not found pip命令報(bào)錯(cuò) 解決方法
FreeRDP
linux 下安裝配置 android sdk-24.4
Linux 下安裝JDK1.8