通过命令行构建Android Studio应用程序

B. *_*son 129 command-line gradle android-studio android-gradle-plugin

我想构建一个Android Studio应用程序(Gradle构建系统),但我想通过命令行执行此操作.

Fue*_*Fro 176

Android Studio会在项目的根目录中自动创建Gradle包装器,这就是它调用Gradle的方式.包装器基本上是一个调用实际Gradle二进制文件的脚本,并允许您使Gradle保持最新,这使得使用版本控制更容易.要运行Gradle命令,只需使用gradlew项目根目录(或gradlew.batWindows)中的脚本,然后使用要运行的任务的名称.例如,要构建Android应用程序的调试版本,可以./gradlew assembleDebug从存储库的根目录运行.在默认项目设置中,可以在中找到生成的apk app/build/outputs/apk/app-debug.apk.在*nix机器上find . -name '*.apk',如果不存在,您也可以运行以找到它.

  • 我花了2个多小时才了解从命令行运行Gradle的正确方法 (30认同)
  • chmod 755 gradlew以防许可错误 (6认同)
  • 我从命令行`c:\ path_to_my_app\gradlew.bat ./gradlew assemblyDebug`运行它,它显示我**下载https://services.gradle.org/distributions/gradle-2.10-all.zip**.而且它被困在那里.我错过了什么? (4认同)

sup*_*org 24

试试这个(仅限OS X):

brew install homebrew/versions/gradle110
gradle build

您可以使用gradle tasks查看当前项目的所有可用任务.没有Android Studio这里需要.

  • 确保你已经安装了自制软件! (4认同)

Dha*_*ani 21

使用Gradle构建设置构建应用程序有两种构建类型:一种用于调试应用程序 - 调试 - 一种用于构建最终包以用于发布 - 发布模式.

在调试模式下构建

  • 首先使用CMD导航到Android工作室项目Root文件夹 在此输入图像描述

  • 运行此命令 gradlew.bat assembleDebug

  • 输出窗口如下所示 在此输入图像描述

在发布模式下构建签名的apk

  • 编辑build.gradle文件以在发布模式下构建项目:

    android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("myreleasekey.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }}
    
    Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 运行此命令gradlew.bat assembleRelease

Done.Good运气!

  • @DhavalJivani你是在模拟器中推出的吗?如果是这样,那只是简单的adb命令.您甚至可以定位要启动的特定活动.https://developer.android.com/studio/command-line/adb.html (3认同)
  • 有没有办法在构建成功后自动启动应用程序? (2认同)

Gib*_*olt 7

你很可能在这里,因为你也想安装它!

建立

gradlew
Run Code Online (Sandbox Code Playgroud)

(在Windows上gradlew.bat)

然后安装

adb install -r exampleApp.apk
Run Code Online (Sandbox Code Playgroud)

(-r使其替换现有副本,-s在模拟器上添加if安装)

奖金

我在my中设置了一个别名~/.bash_profile,使其成为2char命令.

alias bi="gradlew && adb install -r exampleApp.apk"
Run Code Online (Sandbox Code Playgroud)

(构建和安装的缩写)


Moh*_*raj 7

我遇到了同样的问题,谷歌似乎已经做了很多改变。

我可以告诉您从头开始纯粹通过命令行安装的步骤。我于 2021 年 2 月 22 日在 Ubuntu 上测试了它。

创建sdk文件夹

export ANDROID_SDK_ROOT=/usr/lib/android-sdk
sudo mkdir -p $ANDROID_SDK_ROOT
Run Code Online (Sandbox Code Playgroud)

安装openjdk

sudo apt-get install openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)

下载安卓sdk

转到https://developer.android.com/studio/index.html 然后转到仅命令行工具单击 Linux 链接,接受协议,而不是下载右键单击并复制链接地址

cd $ANDROID_SDK_ROOT
sudo wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
sudo unzip commandlinetools-linux-6858069_latest.zip
Run Code Online (Sandbox Code Playgroud)

移动文件夹

将解压后的目录从 cmdline-tools 重命名为 tools,并将其放置在 $ANDROID_SDK_ROOT/cmdline-tools 下,所以现在它应该如下所示: $ANDROID_SDK_ROOT/cmdline-tools/tools。在其中,您应该有:NOTICE.txt bin lib source.properties。

设置路径

PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
Run Code Online (Sandbox Code Playgroud)

这对我没有影响,因此下一步

浏览到 sdkmanager

cd $ANDROID_SDK_ROOT/cmdline-tools/tools/bin
Run Code Online (Sandbox Code Playgroud)

接受许可

yes | sudo sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)

创建构建

最后,在您的项目中运行它

chmod 777 gradlew
sudo ./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)

这会在 //build/outputs/apk/debug 处创建一个名为 -debug.apk 的 APK 文件已使用调试密钥进行签名并与 zipalign 对齐,因此您可以立即将其安装到设备上。

最后的步骤

这是最后的步骤。使用这些内容创建 2 个 .sh 文件。在两者上都使用chmod 777之前。不需要 sudo。

下载_APK_代码_NOSUDO4.sh

# Don't forget to do chmod 777 Download_APK_Code_NOSUDO2.sh
#!/bin/bash

if [ -d "camera-samples" ]; then
  echo "############################# Deleting older code base.      ######################################"
  rm -rf camera-samples
fi

echo "###########################     Download Source Code: Start ... #####################################"
git clone git://git.quicinc.com/camera-samples -b iot-concam-apk.lnx.1.1
echo "##########################      Download Source Code: Done . . . ####################################"
Run Code Online (Sandbox Code Playgroud)

构建_App_NOSUDO4.sh

# Don't forget to do chmod 777 Build_App_NOSUDO2.sh
#!/bin/bash

currentDir=$(pwd)
export ANDROID_SDK_ROOT=$(pwd)

# echo "############################################   Install JDK ...  ################################################"
# apt-get install openjdk-8-jdk

if [ -e "commandlinetools-linux-6858069_latest.zip" ]; then
  echo "############################# Deleting older zip file.      ######################################"
  rm -rf commandlinetools-linux-6858069_latest.zip
fi
echo "###########################################   Download Command Line Tools .. ###################################"
wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
echo "###########################################   Download Command Line Tools Done .. ##############################"

if [ -d "cmdline-tools" ]; then
  echo "############################# Deleting older cmdline-tools.      ######################################"
  rm -rf cmdline-tools
fi
echo "###########################################   Unzip Command Line Tools Start .. #################################"
unzip commandlinetools-linux-6858069_latest.zip
echo "###########################################   Unzip Command Line Tools Done .. #################################"


echo "###########################################   Creating Directory Structure .. #################################"
mv cmdline-tools tools
mkdir cmdline-tools
cp -r  tools cmdline-tools/
rm -rf tools/


PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin
echo "##########################################   Updated Path : $PATH ###############################################"

cd $ANDROID_SDK_ROOT/cmdline-tools/tools/bin

echo "##########################################   Accept All Licenses .. #############################################"
yes | sdkmanager --licenses

cd $currentDir/camera-samples/Camera2Video
echo "sdk.dir = $ANDROID_SDK_ROOT" > local.properties

echo "########################################     Building APK . . . #################################################"
chmod 777 gradlew
./gradlew assembleDebug
echo "#######################################      Building APK Done. . .  ############################################"

echo "##################################### APK generated here:  $currentDir/app/build/outputs/apk/debug/app-debug.apk ###################################"
##########################################################
Run Code Online (Sandbox Code Playgroud)

运行这些命令。

chmod 777 Download_APK_Code_NOSUDO4.sh
chmod 777 Build_App_NOSUDO4.sh
./Download_APK_Code_NOSUDO4.sh
./Build_App_NOSUDO4.sh
Run Code Online (Sandbox Code Playgroud)

参考

https://gist.github.com/guipmourao/3e7edc951b043f6de30ca15a5cc2be40

Android 命令行工具 sdkmanager 始终显示:警告:无法创建设置

“无法安装以下 Android SDK 包,因为某些许可证尚未被接受”错误

https://developer.android.com/studio/build/building-cmdline#sign_cmdline

/////////////////////////////////////////////////////////////////////

视窗

以下是通过 Powershell 适用于 Windows 的步骤。于 2021 年 3 月 6 日测试。您可以完全从头开始。

先决条件

  1. 下载git
  2. 安装JDK。我用的是jdk-8u281-windows-x64.exe

使用这些内容创建一个文件 DownloadAndBuild.ps1。


$location = Get-Location

if (Test-Path "$location\camera-samples") {
    Write-Host "########################### Deleting older code base: Start. ################################"
    Remove-Item -Force -Recurse -Path "$location\camera-samples"
    Write-Host "########################### Deleting older code base: Done. #################################"
}
Write-Host "########################## Download Source Code: Start. #####################################"
git clone https://source.codeaurora.org/quic/la/camera-samples -b iot-concam-apk.lnx.1.1
Write-Host "########################## Download Source Code: Done. ####################################"


if (Test-Path "$location\commandlinetools-win-6858069_latest.zip") {
    Write-Host "########################### Deleting older zip file: Start. ################################"
    Remove-Item -Force -Recurse -Path "$location\commandlinetools-win-6858069_latest.zip"
    Write-Host "########################### Deleting older zip file: Done. #################################"
}
Write-Host "########################## Download Command Line Tools: Start. #####################################"
$client = new-object System.Net.WebClient
$client.DownloadFile("https://dl.google.com/android/repository/commandlinetools-win-6858069_latest.zip","commandlinetools-win-6858069_latest.zip")
Write-Host "########################## Download Command Line Tools: End. #####################################"

if (Test-Path "$location\cmdline-tools") {
    Write-Host "########################### Deleting older folder: Start. ################################"
    Remove-Item -Force -Recurse -Path "$location\cmdline-tools"
    Write-Host "########################### Deleting older folder: Done. #################################"
}
Write-Host "########################## Extract Command Line Tools: Start. #####################################"
Expand-Archive "$location\commandlinetools-win-6858069_latest.zip" -DestinationPath "$location"
Write-Host "########################## Extract Command Line Tools: End. #####################################"



Write-Host "########################## Create Directory Structure: Start. #####################################"
Rename-Item -Path "$location\cmdline-tools" -newName "$location\tools"
New-Item -ItemType Directory -Force -Path "$location\cmdline-tools"
Move-Item -Path "$location\tools" -Destination "$location\cmdline-tools"
Write-Host "########################## Create Directory Structure: End. #####################################"

Write-Host "########################## Accept Licenses: Start. #####################################"
Set-Location -Path $location/cmdline-tools/tools/bin
for($i=0;$i -lt 100;$i++) { $response += "y`n"}; $response | ./sdkmanager.bat --licenses
Write-Host "########################## Accept Licenses: End. #####################################"


Write-Host "########################## Build APK: Start. #####################################"
Set-Location -Path $location/camera-samples/Camera2Video
$Env:ANDROID_SDK_ROOT = $location
.\gradlew assembleDebug
Write-Host "########################## Build APK: End. #####################################"

Write-Host "##################################### APK generated here:  $location/camera-samples/Camera2Video/app/build/outputs/apk/debug/app-debug.apk ###################################"
PAUSE
Run Code Online (Sandbox Code Playgroud)

右键单击并通过 Powershell 运行。这将通过 git 下载 Android 项目、安装 SDK 并构建 Android 应用程序。

根据您的方便进行编辑。


bph*_*bph 6

用于在Linux上的Android Studio项目中从命令行运行Gradle的备忘单:

cd <project-root>
./gradlew
./gradlew tasks
./gradlew --help
Run Code Online (Sandbox Code Playgroud)

应该让您开始。


小智 5

这是完整指南的尝试

1.安装Gradle和Android SDK

要么

  • 安装这些,但您认为合适
  • 运行./gradlew,或者gradlew.bat在Windows上
    • chmod +x ./gradlew 可能是必要的

从现在开始,gradle无论您选择哪种方式,均指运行Gradle。相应地替换。

2.设置Android SDK

  • 如果您手动安装了SDK

    • export ANDROID_HOME=<install location>
    • ~/.profile如果未自动完成,则可能需要将其放入
  • 接受许可证: yes | sdkmanager

    • sdkmanager 可以在 $ANDROID_HOME/tools/bin
    • sdkmanager 可能必须以root身份运行
  • 尝试跑步 gradle

    • 如果有关于找不到许可证或SDK的投诉,请修复目录权限
      • chown -R user:group $ANDROID_HOME
      • 如果您很鲁and和/或是唯一的用户: chmod 777 -R $ANDROID_HOME

3.建筑

  • gradle tasks 列出所有可以运行的任务
  • :app:[appname] 是所有任务的前缀,在构建时会在Gradle日志中看到
    • 运行任务时可以将其排除在外

一些基本任务

  • gradle assemble:构建您应用的所有变体
    • 结果.apks在 app/[appname]/build/outputs/apk/[debug/release]
  • gradle assembleDebugassembleRelease:仅构建调试或发行版本
  • gradle installDebuginstallRelease构建并安装到连接的设备
    • 已经ADB安装
    • 连接已启用USB调试和USB文件传输的设备
    • 运行adb devices,检查您的设备是否已列出并且设备在旁边

更改后自动构建和安装

这样避免了必须连续运行相同的命令

gradle -t --continue installDebug
Run Code Online (Sandbox Code Playgroud)
  • -t:aka --continuous,更改文件后自动重新运行任务
  • --continue:出现错误后继续。防止发生错误时停止

运行gradle -h更多的帮助


yoA*_*ex5 5

通过命令行构建Android应用程序

MacOS 版本

./gradlew <moduleName>:assemble<build_variant>
//e.g
./gradlew <moduleName>:assembleDebug
Run Code Online (Sandbox Code Playgroud)

*./表示当前目录

[更多信息]