April 18, 2020 6:54 AM - BEAUTIFULZZZZ
.
0 前言
在上上篇《[編譯] 5、在Linux下搭建安卓APP的開發燒寫環境(makefile版)—— 在Linux上用命令列+VIM開發安卓APP》中我寫了一個基於VIM(記事本)開發安卓APP的介紹,並且用類似的方法開源了很多小DEMO:
- [01] HelloAndroid: hello world demo
- [02] BluetoorhScan: bluetooth scan + surface(canvas) + handler + bundle
- [03] FlyGame: surface(canvas) + fly game demo
- [04] ListView: ListView DIY demo
- [05] GridView: GridView DIY demo
- [06] TuyaMeshTest: ble scan(fast scan) + textview
- [07] SmartStepCounter: bluetooth scan connect read + line chart
- [08] SmartFan: bluetooth scan connect write
GitHub:https://github.com/nbtool/android_app_linux_tool
但是隨著工程越來越複雜,採用java、aapt去操作使全自動run.sh指令碼越來越難寫(特別是有些lib庫很難找準,有些lib除了庫之外還有資原始檔,就更復雜了),因此,這裡引入一個更先進的工具:gradle。
本文主要介紹gradle的安裝、命令列的用法、給出一個基於gradle的全自動指令碼run.sh,以及一個小DEMO(這裡的全自動是:全自動構建安卓開發環境,全自動編譯安裝執行到裝置)
1 gradle 安裝配置
1.1 解除安裝系統預設裝的gradle
sudo pacman -R gradle
.
1.2 下載對應版本的二進位制檔案
gradle所有版本的下載地址:https://gradle.org/releases/
➜ Downloads wget https://downloads.gradle-dn.com/distributions/gradle-2.14.1-bin.zip
➜ Downloads unzip gradle-2.14.1-bin.zip
➜ Downloads cd gradle-2.14.1
➜ gradle-2.14.1 pwd
/home/btfz/Downloads/gradle-2.14.1
.
1.3 配置gradle:
注:看資料夾下的getting-started.html檔案
export GRADLE_HOME=/home/btfz/Downloads/gradle-2.14.1
export PATH=$PATH:$GRADLE_HOME/bin
.
1.4 檢查配置
在工程根目錄的 SDK Location 配置檔案local.properties
中:
將sdk.dir=D\:\\develop\\AndroidSDK
改為自己系統正確的樣子:sdk.dir=/home/btfz/Android/Sdk
在工程根目錄的 Project 配置檔案build.gradle
中:(暫不需要修改)
在工程根目錄向裡進一層的目錄的 Module 配置檔案build.gradle
中:
將諸如SDK和編譯工具的版本寫成對應的版本:
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
對應關係如下:
.
1.5 gradle 命令列操作
gradle -v
檢視當前gradle版本
gradle clean
將會去下載gradle的一些依賴包
gradle build
編譯生成apk
注:有時候直接用build打包會報錯,因為要配置一些打包相關的東西,如果除錯用,可以先用:gradle assembleDebug
編譯並打Debug包,不要用gradle assembleRelease
編譯並打Release的包(後續會寫為什麼用build和打release不行)。
2 全自動指令碼編寫
2.1 自動構建安卓開發環境
判斷是否有android SDK,如果沒有,則下載一個android SDK;
下載好android SDK後,可以利用其中的SDKMANAGER工具,安裝platforms和build-tools(這兩個有很多個版本,找到適合自己的);
判斷對應版本的gradle是否存在,如果不存在,則從遠端下載對應版本;
function tool(){
#export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
if [ ! -d $ANDROID_SDK_PATH ]; then
#download tool
echo "> download tool...."
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
mkdir -p $ANDROID_SDK_PATH
unzip sdk-tools-linux-3859397.zip -d $ANDROID_SDK_PATH
rm -rf sdk-tools-linux-3859397.zip
sudo chmod 777 -R $ANDROID_SDK_PATH
fi
#install sdk build-tools platform
echo "> install sdk build-tools platform...."
echo $SDKMANAGER
$SDKMANAGER "platform-tools" "platforms;android-$ANDROID_PLATFORM_VERSION"
$SDKMANAGER "platform-tools" "build-tools;$ANDROID_BUILD_TOOLS_VERSION"
$SDKMANAGER --list
if [ ! -d $GRADLE_PATH ];then
#download gredle
echo "> download gredle..."
wget https://downloads.gradle-dn.com/distributions/gradle-$GRADLE_VERSION-bin.zip
unzip gradle-$GRADLE_VERSION-bin.zip -d $TOOL_PATH
rm -rf gradle-$GRADLE_VERSION-bin.zip
fi
}
.
2.2 編譯、執行、清除
藉助於gradle,實現編譯、清除比較方便,寫入裝置還是用adb:
function build(){
export GRADLE_HOME=$GRADLE_PATH
export PATH=$PATH:$GRADLE_HOME/bin
gradle clean
gradle assembleDebug
}
function clean(){
echo "Cleaning..."
rm -rf build
rm -rf $PROJECT_ROOT/example/$PROJECT_NAME/$MODULE_NAME/build
}
function program(){
echo "Launching..."
adb install -r $APK_PATH/*.apk
adb shell am start -n com.telink.lt/.ui.AdvDeviceListActivity
}
3 效果展示
- : 本專案的github關注起來https://github.com/nbtool/android_app_linux_tool~
- 大家覺得不錯,可以點推薦給更多人~
LINKS
[1].Android Studio 命令列Gradle編譯
[[2].BLE_826X_Generic]]#2
[3].21、android studio 疑難雜症