18

Прежде всего, я знаю о this вопрос; однако я не могу следовать за ответом, потому что там нет каталогов.Android Studio создать шаблон проекта для новых проектов

При создании нового проекта Android Studio Я хочу следующий будет создан автоматически:

  1. Конкретные пакеты и каталоги;
  2. Gradle зависимости
  3. несколько классов (могут быть импортированы из другого места)

Можно ли создать шаблон Android Studio для этих задач?

ответ

12

Проверьте эту папку под андроид папку SDK:

android-sdk\tools\templates\projects 

enter image description here

Есть три предопределенные шаблоны, как показано ниже, которые мы обычно используем.

Каждая папка шаблон имеет различные ftl файлы, которые являются шаблонами для каждого из существующих проектов:

enter image description here

Вы можете создать новую папку шаблонов и дизайн ftl файлов, как вы хотите. А также определить структуры проекта.

Просто откройте один из них, и вы получите представление о том, как существуют шаблоны по умолчанию. Расширьте или создайте свой собственный с нуля, как хотите.

С учетом указанных выше сказал, ваши вопросы можно ответить следующим образом:

Для создания пакетов создать структуру папок в папке root, чтобы соответствовать ваше имя пакета.

Для градиентных зависимостей добавьте их в свои файлы *.gradle.ftl, если требуется.

Для копирования/импорта выходящих классов/файлов смотрите recipe.xml.ftl, чтобы получить представление о том, как копировать.




UPDATE: После того, как люди сообщали, что не будет работать, если изменить в указанной выше папке под Android SDK

я снова искал и нашел другое место где эти шаблоны хранятся, т.е. непосредственно под установочной папкой Android Studio, а не в папку Android SDK.

Проверенно для Android Studio Version 1.5 & Android Studio Version 2.0 Beta:

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

enter image description here

Типы файлов и организации из них так же, как уже упоминалось ранее.

+0

Большое спасибо за ваш ответ! Знаете ли вы, есть ли приличные ресурсы на материалах 'xml.ftl'? – Mikhail

+0

Посмотрите, поможет ли это: http://freemarker.incubator.apache.org/docs/xgui_imperative_learn.html Также было просмотрено несколько хороших руководств с прямым поиском google. Попробуйте это. – AndroidMechanic

+0

По какой-то причине изменение 'NewAndroidApplication/root/build.gradle.ftl' не помогло - когда я создал новый проект после изменения, файл' build.gradle' не содержал никаких новых зависимостей, указанных в '.ftl 'файл. Я проверил местоположение sdk в Android Studio - он указывает на правильную папку (в которой я изменил шаблон) – Mikhail

4

re: default Gradle Зависимости Ничего изв. ответы работали для меня. Файл ключа

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.+' 

} 

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

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

ПРЕДУПРЕЖДЕНИЕ. Я просто попытался обновить свою Android-студию, и она перестает работать, потому что замечено изменение файла. Итак, УБЕДИТЕСЬ, ЧТОБЫ ВЫПОЛНИТЬ ЭТОТ ФАЙЛ, прежде чем изменять его. а затем ВОССТАНОВИТЬ ФАЙЛ до обновления Android Studio.

Смежные вопросы