Gradle命令编译Android Studio工程项目并签名

文章目录

gradlew命令

gradlew 是一个脚本文件,它允许你在没有全局安装 Gradle 的情况下运行 Gradle 构建。这个脚本在多平台上可用,对于 Windows 系统来说是 gradlew.bat 文件,而对于 Unix、Linux 和 macOS 系统来说则是 gradlew 脚本文件。

  1. ./gradlew build 这个命令会执行项目的构建过程,包括编译代码、运行测试等
  2. ./gradlew tasks 显示项目中所有可用的 Gradle 任务。
  3. ./gradlew clean 清除之前的构建输出,如编译后的类文件、JAR 文件等。
  4. ./gradlew assembleDebug 可以指定要运行的具体任务,例如 assembleDebug 用于构建调试版本的应用。
  5. ./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注意事项

  1. 在首次运行 gradlew 时,它会自动下载指定版本的 Gradle 并将其存储在本地缓存中,因此可能需要一些时间。
  2. 如果你的项目依赖于互联网上的资源(如远程仓库中的库),确保在运行 gradlew 命令前有稳定的网络连接。
    作者:帅得不敢出门
相关推荐
*星星之火*4 小时前
【GPT入门】第5课 思维链的提出与案例
android·gpt
EasyCVR4 小时前
EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信
android·arm开发·网络协议·tcp/ip·音视频·webrtc
韩家老大5 小时前
RK Android14 在计算器内输入特定字符跳转到其他应用
android
张拭心7 小时前
2024 总结,我的停滞与觉醒
android·前端
夜晚中的人海7 小时前
【C语言】------ 实现扫雷游戏
android·c语言·游戏
ljx14000525508 小时前
Android AudioFlinger(一)——初识AndroidAudio Flinger
android
ljx14000525508 小时前
Android AudioFlinger(四)—— 揭开PlaybackThread面纱
android
Codingwiz_Joy8 小时前
Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器
android·安全·web安全·安全性测试
叶羽西8 小时前
Android15 Camera框架中的StatusTracker
android·camera框架
梦中千秋8 小时前
安卓设备root检测与隐藏手段
android