文章目录
- gradlew命令
- [gradlew编译debug apk](#gradlew编译debug apk)
- [gradlew编译release apk](#gradlew编译release apk)
- apksigner签名apk
- gradlew注意事项
gradlew命令
gradlew 是一个脚本文件,它允许你在没有全局安装 Gradle 的情况下运行 Gradle 构建。这个脚本在多平台上可用,对于 Windows 系统来说是 gradlew.bat 文件,而对于 Unix、Linux 和 macOS 系统来说则是 gradlew 脚本文件。
- ./gradlew build 这个命令会执行项目的构建过程,包括编译代码、运行测试等
- ./gradlew tasks 显示项目中所有可用的 Gradle 任务。
- ./gradlew clean 清除之前的构建输出,如编译后的类文件、JAR 文件等。
- ./gradlew assembleDebug 可以指定要运行的具体任务,例如 assembleDebug 用于构建调试版本的应用。
- ./gradlew build --offline 在没有网络连接的情况下使用缓存中的依赖项来构建项目。
命令行下进入Android Studio工程目录,所有命令都在这里执行
理论上直接输入./gradlew build就可以进行项目的构建过程,包括编译代码、运行测试等。
但是因为它包含的比较多,可能Android Stduio中能编译过的项目用指令后就出错了
> Task :app:lintDebug FAILED
Lint found 61 errors, 1313 warnings. First failure:
/Users/temp/Documents/project/test/app/src/main/res/layout/activity_call_test.xml: Error: The lint detector
androidx.appcompat.view.OnClickXmlDetector
The full lint text report is located at:
/Users/temp/Documents/project/test/app/build/intermediates/lint_intermediate_text_report/debug/lint-results-debug.txt
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:lintDebug'.
> Lint found errors in the project; aborting build.
Fix the issues identified by lint, or create a baseline to see only new errors:
android {
lint {
baseline = file("lint-baseline.xml")
}
}
gradlew编译debug apk
./gradlew :app:assembleDebug
生成如下apk文件:
gradlew编译release apk
./gradlew :app:assembleRelease
apksigner签名apk
查看Android sdk目录下的build-tools
这里有多个版本,选一个就行,签名工具就是里面的apksigner
/Users/temp/Library/Android/sdk//build-tools/30.0.2/apksigner
写入脚本sign_apk.sh
shell
#!/bin/bash
ANDROID_SDK=/Users/temp/Library/Android/sdk
echo $#
function usage {
echo "$0 keystore alis pass apk"
}
if [ $# -ne 4 ]; then
usage
exit
fi
key=$1
alis=$2
pass=$3
apk=$4
echo "apksigner.jar sign --ks $key --ks-key-alias $alis --ks-pass pass:$pass --key-pass pass:$pass --out sign.apk $apk"
java -jar /Users/temp/Library/Android/sdk//build-tools/30.0.2/build-tools/30.0.2/apksigner sign --ks $key --ks-key-alias $alis --ks-pass pass:$pass --key-pass pass:$pass --out sign.apk $apk
假设sign_apk.sh放在 ~/Downloads目录下
签名文件是debug.keystore
别名是alias_name
密码是mypass
要签名的apk是app/build/intermediates/apk/debug/app-debug.apk
则对其签名命令如下:
bash
~/Downloads/sign_apk.sh ./debug.keystore alias_name mypass .//app/build/intermediates/apk/debug/app-debug.apk
gradlew注意事项
- 在首次运行 gradlew 时,它会自动下载指定版本的 Gradle 并将其存储在本地缓存中,因此可能需要一些时间。
- 如果你的项目依赖于互联网上的资源(如远程仓库中的库),确保在运行 gradlew 命令前有稳定的网络连接。
作者:帅得不敢出门