如何通过命令行使用Gradle创建Android项目?

47

如何在命令行中使用gradle创建安卓项目(不使用任何IDE)?

以前可以使用像下面这样的android工具

android create project --target 1 --name MyAndroidApp --path ./MyAndroidAppProject --activity MyAndroidAppActivity --package com.example.myandroid

1
这是 https://dev59.com/umQm5IYBdhLWcg3wnAGR 的副本。 - ditkin
这方面正在进行工作。请查看:https://github.com/gradle/gradle/blob/master/design-docs/build-initialisation.md - ditkin
1
最近,Android SDK 终于有了 gradle 模板。 - Paul Verest
3个回答

52
类似于如何创建Java Gradle项目,建议使用android create project创建Android项目,然后添加build.gradle模板以用于经典的Android项目gh.c/N/n-1/b/m/o.n.e.e.g/docs/android/build.gradle。(这样可以在任何IDE中开发,因为旧的结构更广泛地被采用。)
当然,在未来还会有一些gradle init选项或者android create(来自SDK)。

更新:

Android SDK 19有一个android CLI -g选项,允许使用gradle模板。您可能还需要使用CLI -v选项指定android gradle插件版本,请检查android gradle插件兼容性表。创建使用android gradle插件(v 0.10)添加gradle支持的项目的示例命令。
android create project \
    --gradle \
    --gradle-version 0.10 \
    --activity Main \
    --package com.example.app \
    --target android-19 \
    --path AppWithGradleTemplate

如果使用buildTools 19.1+,则需要通过--gradle-version使用更新版本的Gradle Android插件:

android create project \
    --gradle \
    --gradle-version 0.11.+ \
    --activity Main \
    --package com.example.app \
    --target android-25 \
    --path AppWithGradleTemplate

查看帮助请使用android create project -h

然而,Android Studio 0.6.1无法正确打开它(没有显示源代码),因为它将第一个项目文件夹(即gradle)作为模块文件夹->您需要导入,而不仅仅是打开。

在Eclipse中,可以通过将src文件夹视为项目根目录的技巧来实现。

.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="java"/><!--ADJUSTED HERE -->
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

还有 build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
    }
}
apply plugin: 'android'

android {
   //{ for Android Gradle as Eclipse project
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['java']
            resources.srcDirs = ['java']
            aidl.srcDirs = ['java']
            renderscript.srcDirs = ['java']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        androidTest.setRoot('../tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
    //}
    compileSdkVersion 'Google Inc.:Google APIs:10'
    buildToolsVersion '19.0.3'

    buildTypes {
        release {
            runProguard false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
    lintOptions {
        abortOnError false
    }
}

http://marketplace.eclipse.org/content/gradle

请阅读http://www.nodeclipse.org/projects/gradle/


"gradle assembleDebug" 失败,显示“无法找到 com.android.tools.build:gradle:2.8”。如何选择 gradle 版本? - Ciro Santilli OurBigBook.com

$ android create project -h ************************************************************************** “android” 命令已被弃用。 请使用 Android Studio 进行手动 SDK、AVD 和项目管理。 对于命令行工具,请使用 tools\bin\sdkmanager.bat 和 tools\bin\avdmanager.bat。 **************************************************************************

更新 SDK 的其他方法吗?
- Banee Ishaque K
2
"android create project" 在 SDK 工具 26.0.1 中已被移除:https://dev59.com/DWIi5IYBdhLWcg3w8AJy#46994747 - Ciro Santilli OurBigBook.com

15

android create project在SDK tools 26.0.1中已被移除。

更多详情请参见https://askubuntu.com/questions/906942/android-update-project-path-target-android-25-on-ubuntu-16-04.

尝试使用它会失败并显示:

*************************************************************************
The "android" command is deprecated.
For manual SDK, AVD, and project management, please use Android Studio.
For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager
*************************************************************************
Invalid or unsupported command "project create"

Supported commands are:
android list target
android list avd
android list device
android create avd
android move avd
android delete avd
android list sdk
android update sdk

解决方法:使用Android Studio模板和复制助手脚本

我最好的解决方法是:

  • 从Android Studio图形界面手动创建一个新的Gradle项目
  • 使用助手脚本复制该模板并在此过程中重命名类

下面的助手脚本可以让你做到:

./template NewAppName AppTemplateProject

从使用Android Studio创建的现有AppTemplateProject中获取一个新应用程序NewAppName

#!/usr/bin/env bash
set -ex
new="$1"
shift
if [ $# -gt 0 ]; then
  old="$1"
  shift
else
  old='Min'
fi
old="$(echo "$old" | sed -E 's/\/$//')"
new="$(echo "$new" | sed -E 's/\/$//')"
new_lower="$(echo "$new" | tr 'A-Z' 'a-z')"
old_lower="$(echo "$old" | tr 'A-Z' 'a-z')"
cp -r "$old" "$new"
cd "$new"
find . -type f -print0 | xargs -0 sed -i "s/${old}/${new}/g"
find . -type f -print0 | xargs -0 sed -i "s/${old_lower}/${new_lower}/g"
cd 'app/src/main/java/com/cirosantilli/android_cheat'

GitHub上游地址:https://github.com/cirosantilli/android-cheat/blob/0e6b7462705179658b48d0e2e27f0dbce308393c/gradle/template

是的,它不完美。但CLI支持似乎次于Google,所以你能做什么:-(


1
应该列在https://github.com/cirosantilli/android-cheat/blob/master/gradle.md中。 - Paul Verest
1
@PaulVerest 感谢您的反馈。我正在将所有示例移植到Gradle,第一批示例目前位于https://github.com/cirosantilli/android-cheat/tree/master/gradle。当迁移完成后,我将把gradle/目录移到顶层。 - Ciro Santilli OurBigBook.com

3

这里是解决方案:PHP Android CLI

只需运行:

phpandroid create HelloWorld com.example.helloworld

如果您的项目使用最新版的Android Studio参数进行搭建,例如编译和目标SDK为29,buildToolsVersion为29.0.1且minSdk为16。

如果您想做出更改,例如将minSdk设置为14:

phpandroid create PROJECT PACKAGE --minSdk=14

PHP Android CLI也可以创建变体和模块(应用程序/库):
phpandroid create PROJECT PACKAGE --modules=common:library,admin --variants=free:type,paid:type,php:backend,firebase:backend

这将生成两个应用程序:appadmin 和一个库 commonApp 有两个维度:类型后端,共有四个变体: 类型 维度的 免费付费 变体;后端 维度的 phpfirebase 变体。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接