Как создать пользовательский шаблон проекта в Android Studio

Можно ли создать пользовательский шаблон проекта в Android Studio?

Я нахожу каталог "Android Studio.app/sdk/tools/templates/projects/NewAndroidApplication" и немного редактирую. Но теперь это работает.

У вас есть идея?

Я хочу создать проект из шаблона, такого как Xcode.

Ответы

Ответ 1

Я придумал этот хороший блог, он дает вам полное руководство по созданию шаблонов файлов в Android Studio, а также объясняет синтаксис кода шаблонов.

Если вы хотите, чтобы ваш шаблон создавал несколько файлов и пакетов при использовании (например, то, что Fragment и Activity делают в качестве шаблонов по умолчанию), я советую вам посетить этот пост, поскольку он дает полное руководство по этой теме.

Если когда-нибудь ссылка была неработоспособна, используйте эту захваченную версию enter image description here

Ответ 2

Ничего из предыдущего. ответы работали для меня. Вот что я нашел: Ключевым файлом является

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 gen'd, я раскомментирую соответственно.

Это заняло у меня весь день, чтобы разобраться. Я довольно недоволен w/w140 > doc'n и Android Studio Doc'n. Это была бы легкая задача с быстрым легким документом. Как бы то ни было, я до сих пор не понимаю, что Gradle очень хорошо конкретизируется. : - {

Последовательность каталогов выше для моей установленной Android Studio. Ваша Android-студия может быть установлена ​​в другом месте, но этот ответ по-прежнему имеет значение.

Ответ 3

Возможно, поздно ответить, но проверьте эту папку в папке Android SDK.

android-sdk\tools\templates\projects

Здесь хранятся существующие новые шаблоны проектов.

Я опубликовал подробный ответ, объясняющий в этом сообщении

Ответ 4

Редактирование "gradle -проектов/NewAndroidModule". Оно работает.