アプリモジュールで使用せずにライブラリモジュールでKotlinを使用しようとしています。 appモジュールはJavaのみを使用し、ライブラリのKotlinクラスを使用しません。Gradleはコンパイルしません:
Error:(2, 1) A problem occurred evaluating project ':<Library>'.
> Plugin with id 'kotlin-Android' not found.
Kotlinを含めるために行った変更:
{ライブラリルート}/build.gradle
buildscript {
ext.kotlin_version = '1.1.3-2'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
...
}
allprojects {
repositories {
jcenter()
}
}
{ライブラリルート}/{ライブラリモジュール}/build.gradle
apply plugin: 'com.Android.library'
apply plugin: 'kotlin-Android'
...
dependencies{
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
アプリモジュールに同じものを追加すると、プロジェクトは問題なくコンパイルされますが、アプリにコードを変更せずにこのライブラリを複数のアプリで使用したいので、アプリモジュールに追加しないでください。
使用されているGradleバージョン:3.3 Android gradleプラグインバージョン:2.3.3
編集:@Jushuaの答えは機能しますが、プロジェクトルートbuild.gradleを更新する必要があります。すべてを機能させるには、ライブラリへの依存関係のみを追加する必要があるソリューションを望んでいました。
私は問題なくそれをすることができます。
build.gradle(プロジェクト)
buildscript {
ext.kotlin_version = "1.1.4"
repositories {
jcenter()
}
dependencies {
classpath "com.Android.tools.build:gradle:2.3.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
build.gradle(アプリ)
apply plugin: "com.Android.application"
Android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
androidTestCompile("com.Android.support.test.espresso:espresso-core:2.2.2", {
exclude group: "com.Android.support", module: "support-annotations"
})
compile "com.Android.support:appcompat-v7:26.0.1"
testCompile "junit:junit:4.12"
compile project(path: ":library")
}
build.gradle(ライブラリ)
apply plugin: "com.Android.library"
apply plugin: "kotlin-Android"
apply plugin: "kotlin-Android-extensions"
Android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 17
targetSdkVersion 26
versionCode 13
versionName "1.1.4"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
androidTestCompile("com.Android.support.test.espresso:espresso-core:2.2.2", {
exclude group: "com.Android.support", module: "support-annotations"
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "com.Android.support:appcompat-v7:26.0.1"
testCompile "junit:junit:4.12"
}
モジュールビルドに追加するだけです。
buildscript {
// (Optional) ext.kotlin_version = '1.1.4-3'
repositories {
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'com.Android.library'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
その特定のビルドでkotlin_version
変数を宣言するか、プロジェクトルートビルドファイルで宣言することができます。kotlinバージョンは他のモジュールから更新できるためです。
buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.0-beta3'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}