Android Studio 为新项目创建项目模板

Android Studio create project template for new projects

首先,我知道this问题;但是我无法理解答案,因为那里没有提到目录。

创建新的 Android Studio 项目时,我希望自动创建以下项目:

  1. 特定的包和目录;
  2. Gradle 依赖关系
  3. 几个类(可能是从别处导入的)

是否可以为这些任务创建 Android Studio 模板?

查看 android SDK 文件夹下的这个文件夹:

android-sdk\tools\templates\projects

我们常用的预定义模板有如下三种。

每个模板文件夹都有不同的 ftl 个文件,它们是每个现有项目的模板:

您可以创建一个新的模板文件夹并根据需要设计 ftl 文件。并定义项目结构。

只需打开其中一个,您就会了解默认模板是如何存在的。根据需要扩展它们或从头开始创建您自己的。

综上所述,您的问题可以回答如下:

用于创建包root 文件夹中创建一个文件夹结构以匹配您的包名称。

对于 gradle 依赖项,根据需要将它们添加到您的 *.gradle.ftl 文件中。

对于 copying/importing 退出 classes/files 查看 recipe.xml.ftl 了解如何复制。




UPDATE: After people reported it not to be working if changed in the above mentioned folder under Android SDK

我再次搜索并找到了存储这些模板的另一个位置,即 直接位于 Android Studio 安装文件夹 下,而不是 Android SDK 文件夹下。

已验证 Android Studio Version 1.5 & Android Studio Version 2.0 Beta:

<installation folder>\plugins\android\lib\templates

它们的文件类型和组织与前面提到的相同。

回复:默认 Gradle 依赖项 None 上一个。答案对我有用。 密钥文件是

C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl

重要的部分是它在 NewAndroidModule 中,而不是 NewAndroidProject

我的文件如下所示:

<#if !(perModuleRepositories??) || perModuleRepositories>
buildscript {
    repositories {
        jcenter()
<#if mavenUrl != "mavenCentral">
        maven {
            url '${mavenUrl}'
        }
</#if>
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:${gradlePluginVersion}'
    }
}
</#if>
<#if isLibraryProject?? && isLibraryProject>
apply plugin: 'com.android.library'
<#else>
apply plugin: 'com.android.application'
</#if>
<#if !(perModuleRepositories??) || perModuleRepositories>

repositories {
        jcenter()
<#if mavenUrl != "mavenCentral">
        maven {
            url '${mavenUrl}'
        }
</#if>
}
</#if>

android {
    compileSdkVersion <#if buildApiString?matches("^\d+$")>${buildApiString}<#else>'${buildApiString}'</#if>
    buildToolsVersion "${buildToolsVersion}"

    defaultConfig {
    <#if isLibraryProject?? && isLibraryProject>
    <#else>
    applicationId "${packageName}"
    </#if>
        minSdkVersion <#if minApi?matches("^\d+$")>${minApi}<#else>'${minApi}'</#if>
        targetSdkVersion <#if targetApiString?matches("^\d+$")>${targetApiString}<#else>'${targetApiString}'</#if>
        versionCode 1
        versionName "1.0"
    }
<#if javaVersion?? && (javaVersion != "1.6" && buildApi lt 21 || javaVersion != "1.7")>

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_${javaVersion?replace('.','_','i')}
        targetCompatibility JavaVersion.VERSION_${javaVersion?replace('.','_','i')}
    }
</#if>
<#if enableProGuard>
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
</#if>
}

dependencies {
    <#if dependencyList?? >
    <#list dependencyList as dependency>
    compile '${dependency}'
    </#list>
    </#if>
    compile fileTree(dir: 'libs', include: ['*.jar'])
<#if WearprojectName?has_content && NumberOfEnabledFormFactors?has_content && NumberOfEnabledFormFactors gt 1 && Wearincluded>
    wearApp project(':${WearprojectName}')
    compile 'com.google.android.gms:play-services:+'
</#if>
<#if unitTestsSupported>
    testCompile 'junit:junit:${junitVersion}'
</#if>

//from C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl
//logback
//    compile 'MyAwesomeDependency:1.1.+' 
//    compile 'MyOtherAwesomeDependency:1.1.+'
//    compile 'org.slf4j:slf4j-api:1.7.+'  
//end logback
//    compile 'com.google.code.gson:gson:2.+'

}

这是模块应用的正确输出 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.ntier.myapplication"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

//from C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl
//logback
//    compile 'MyAwesomeDependency:1.1.+' 
//    compile 'MyOtherAwesomeDependency:1.1.+'
//    compile 'org.slf4j:slf4j-api:1.7.+' 
//end logback
//    compile 'com.google.code.gson:gson:2.+'

    compile 'com.android.support:appcompat-v7:23.4.0'
}

所以,最后,在生成 build.gradle 之后,我相应地取消了注释。

这花了我一整天的时间才搞清楚。我对 Gradle 文档和 Android Studio 文档非常不满意。这应该是一个简单的任务,带有快速简单的文档。事实上,我仍然不太了解gradle confign。 :-{

上面的目录顺序适用于我安装的 Android Studio。您的 Android Studio 可能安装在其他地方,但此答案仍然相关。

警告:我刚刚尝试更新我的 Android Studio,但由于它注意到文件中的更改而犹豫不决。 因此,请确保在修改之前备份此文件。接着 在更新 Android Studio 之前恢复文件。