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 命令前有稳定的网络连接。
    作者:帅得不敢出门
相关推荐
北京自在科技3 小时前
谷歌安卓 Gemini 迎来界面改版,Find Hub 接入 Gemini 支持物品记忆查找
android·安卓
1024奇点3 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源
YB13755 小时前
Jetpack Compose 动画Modifier.animateItem()
android
2401_885885046 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
收纳过往6 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
狂热开发者7 小时前
车载中控要给鸿蒙用户,能不能和 Android 共用一个二维码?
android·华为·harmonyos
weixin_399380698 小时前
TongWeb7.0.4.9M11如何接入到idea(by lqw)
java·ide·intellij-idea
.Bryce.8 小时前
T2-LLM评测不等于Agent评测
android·java·人工智能·后端·gpt·agent·1024程序员节
美狐美颜SDK开放平台9 小时前
视频美颜SDK如何应对快速转头与大幅度面部动作?
android·人工智能·ios·音视频·直播美颜sdk·视频美颜sdk
2601_968900779 小时前
玻璃深加工的工艺窗口:4 道工序的温度与时间参数边界
android·java·javascript