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

时间:2014-06-24 23:40:30

标签: android-studio gradle command-line android-gradle

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

14 个答案:

答案 0 :(得分:168)

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

答案 1 :(得分:21)

试试这个(仅限OS X):

brew install homebrew/versions/gradle110
gradle build

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

答案 2 :(得分:19)

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

以调试模式构建

  • 首先使用CMD导航到Android工作室项目Root文件夹 enter image description here

  • 运行此命令 gradlew.bat assembleDebug

  • 输出窗口如下所示 enter image description here

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

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

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

enter image description here

  • 运行此命令 gradlew.bat assembleRelease

Done.Good Luck!

答案 3 :(得分:7)

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

构建

gradlew

(在Windows上gradlew.bat

然后安装

adb install -r exampleApp.apk

-r使其替换现有副本,如果在模拟器上安装,则添加-s

加成

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

alias bi="gradlew && adb install -r exampleApp.apk"

(构建和安装的缩写)

答案 4 :(得分:5)

用于在Linux上从Android Studio项目的命令行运行Gradle的Cheatsheet:

cd <project-root>
./gradlew
./gradlew tasks
./gradlew --help

应该让你开始..

答案 5 :(得分:4)

这是完整指南的尝试

1。安装Gradle和Android SDK

任何一个

  • 安装这些,但您认为合适
  • 运行./gradlew,如果运行Windows,则运行gradlew.bat
    • 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,检查您的设备是否已列出,并且 device 在旁边

根据更改自动构建并安装

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

gradle -t --continue installDebug
  • -t:又名--continuous,在文件更改后自动重新运行任务
  • --continue:出现错误后继续。防止发生错误时停止

运行gradle -h以获取更多帮助

答案 6 :(得分:2)

对于Mac,请使用此命令

  ./gradlew task-name

答案 7 :(得分:0)

仅适用于MAC用户

扩展Vji的答案。

一步一步的程序:

  1. 打开终端
  2. 将目录更改为项目(cd PathOfYourProject)
  3. 复制并粘贴此命令,然后按Enter键:

    chmod +x gradlew
    
  4. 正如Vji建议:

    ./gradlew task-name
    

    不要忘记添加。(DOT)之前/ gradlew

答案 8 :(得分:0)

enter code here使用gradle和adb命令创建脚本文件,执行脚本文件

./gradlew clean

./ gradlew assembleDebug ./gradlew installDebug

adb shell开始-n applicationID /启动器活动的完整路径

答案 9 :(得分:0)

Official Documentation is here:

要构建调试APK,请打开命令行并导航至项目目录的根目录。要启动调试版本,请调用assembleDebug任务:

gradlew assembleDebug

这将在module_name-debug.apk中创建一个名为project_name/module_name/build/outputs/apk/的APK。

答案 10 :(得分:0)

请注意,您也可以在Android Studio中通过单击gradle窗口,然后单击“ elephant”按钮来执行此操作。这将打开一个名为“运行任何内容”的新窗口(也可以通过在“随处搜索”中搜索该名称来找到),您可以在其中手动键入所需的任何gradle命令。不是“相当”命令行,但通常会提供更多信息我需要的不是Windows命令行。

这使您可以为gradle任务等提供可选参数。

答案 11 :(得分:0)

我也遇到了同样的问题,google 好像做了很多改动。

我可以告诉你从头开始完全通过命令行安装的步骤。 我于 2021 年 2 月 22 日在 Ubuntu 上对其进行了测试。

创建sdk文件夹

export ANDROID_SDK_ROOT=/usr/lib/android-sdk
sudo mkdir -p $ANDROID_SDK_ROOT

安装 openjdk

sudo apt-get install openjdk-8-jdk

下载安卓软件开发包

转到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

移动文件夹

将解压后的目录从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

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

浏览到 sdkmanager

cd $ANDROID_SDK_ROOT/cmdline-tools/tools/bin

接受许可

yes | sudo sdkmanager --licenses

创建构建

最后,在你的项目中运行这个

sudo ./gradlew assembleDebug

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

最后的步骤

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

下载_APK_Code_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 . . . ####################################"

Build_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 . . . #################################################"
./gradlew assembleDebug
echo "#######################################      Building APK Done. . .  ############################################"

echo "##################################### APK generated here:  $currentDir/app/build/outputs/apk/debug/app-debug.apk ###################################"
##########################################################

运行这些命令。

chmod 777 Download_APK_Code_NOSUDO4.sh
chmod 777 Build_App_NOSUDO4.sh
./Download_APK_Code_NOSUDO4.sh
./Build_App_NOSUDO4.sh

参考文献

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

Android Command line tools sdkmanager always shows: Warning: Could not create settings

"Failed to install the following Android SDK packages as some licences have not been accepted" error

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

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

根据您的方便进行编辑。

答案 12 :(得分:0)

MacOS 变体

./gradlew <moduleName>:assemble<build_variant>
//e.g
./gradlew <moduleName>:assembleDebug

*./ 表示当前目录

[More info]

答案 13 :(得分:-2)

为所有这些答案增加价值,

许多人在构建成功后就要求在AVD中运行App的命令。

adb install -r {path-to-your-bild-folder}/{yourAppName}.apk