web-dev-qa-db-ja.com

Android Studioは新しいプロジェクトのプロジェクトテンプレートを作成します

まず第一に、私は this 質問を知っています。ただし、そこに記載されているディレクトリがないため、答えを追うことができません。

新しいAndroid Studioプロジェクトを作成するとき、次のものが自動的に作成されるようにします。

  1. 特定のパッケージとディレクトリ。
  2. Gradle依存関係
  3. いくつかのクラス(他の場所からインポートされる場合があります)

これらのタスク用にAndroid Studioテンプレートを作成できますか?

29
Mikhail

Android SDKフォルダーの下にあるこのフォルダーを確認してください。

Android-sdk\tools\templates\projects

enter image description here

以下に示すように、3つの定義済みテンプレートがあり、一般的に使用されます。

各テンプレートフォルダには、既存の各プロジェクトのテンプレートである異なるftlファイルがあります。

enter image description here

新しいテンプレートフォルダーを作成し、ftlファイルを必要に応じて設計できます。また、プロジェクト構造を定義します。

これらのいずれかを開くと、デフォルトのテンプレートがどのように存在するかがわかります。必要に応じて、それらを拡張するか、ゼロから独自に作成します。

上記のことで、あなたの質問は次のように答えることができます:

パッケージを作成する場合パッケージ名と一致するようにrootフォルダーにフォルダー構造を作成します。

gradle依存関係の場合必要に応じて、*.gradle.ftlファイルに追加します。

既存のクラス/ファイルをコピー/インポートする場合recipe.xml.ftlを見て、コピーの方法を理解してください。




更新:Android SDKの下の上記のフォルダーで変更された場合、機能しないと報告された後

もう一度検索して、これらのテンプレートが保存されている別の場所を見つけました。つまり、Android St​​udioインストールフォルダーの直下 Android SDKフォルダーではありません。

Android Studio Version 1.5およびAndroid Studio Version 2.0 Betaで検証済み:

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

enter image description here

ファイルの種類とそれらの構成は、前述のとおりです。

re:デフォルトの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.+'

}

モジュールアプリの正しい出力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 doc'nとAndroid Studio Doc'nに不満を感じています。これは、簡単で簡単なdoc'nを使用した簡単なタスクでした。現状では、私はまだgradle confignをあまりよく理解していません。 :-{

上記のディレクトリシーケンスは、インストール済みのAndroid Studioのものです。 Android Studioは他の場所にインストールされている可能性がありますが、この回答は引き続き関連しています。

警告:私はAndroid Studioを更新しようとしましたが、ファイルの変更に気付いたために白くなりました。したがって、変更する前にこのファイルをバックアップしてください。 Android Studioを更新する前にファイルを復元します。

4
JDOaktown