Vasko Vasilev
Vasko Vasilev

Reputation: 574

Trying to add module to project. Plugin with id 'kotlin-android' not found

I am trying to add a epub reader library to a project I have already created. The library I am trying to add to my project as a moduel is the Folio Reader Library (https://github.com/FolioReader/FolioReader-Android). I have downloaded this library on my computer and have tried adding it through File -> New -> Import Module. However, during the process I receive this error:

ERROR: Plugin with id 'kotlin-android' not found.

This file is located in the build.gradle file of the Folio Reader Library.

build.gradle file:

apply plugin: 'com.android.library'
apply from: '../config/quality/quality.gradle'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

ext {
bintrayRepo = 'maven'
bintrayName = 'folioreader'

publishedGroupId = 'com.folioreader'
libraryName = 'FolioReader'
artifact = 'folioreader'

libraryDescription = 'An epub reader for Android'

siteUrl = 'https://github.com/FolioReader/FolioReader-Android'
gitUrl = 'https://github.com/FolioReader/FolioReader-Android.git'

libraryVersion = versions.folioreaderSdk

developerId = 'mobisystech'
developerName = 'Folio Reader'
developerEmail = '[email protected]'

licenseName = 'FreeBSD License'
licenseUrl = 'https://en.wikipedia.org/wiki/FreeBSD_Documentation_License#License'
allLicenses = ["FreeBSD"]
}

android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion versions.androidCompileSdk

defaultConfig {
    minSdkVersion versions.androidMinSdk
    targetSdkVersion versions.androidTargetSdk
    versionCode versions.projectVersionCode
    versionName versions.projectVersionName
    vectorDrawables.useSupportLibrary = true
}

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src/main/java']
        res.srcDirs = ['res']
    }
    test {
        java.srcDirs = ['src/test/java']
    }
}

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
    exclude 'META-INF/services/javax.annotation.processing.Processor'
}

lintOptions {
    abortOnError false
    lintConfig file("lint.xml")
}

checkstyle {
    ignoreFailures = true
}
}

apply from: '../folioreader/bintray/installv1.gradle'
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

implementation "androidx.appcompat:appcompat:$versions.appcompat"
implementation "androidx.constraintlayout:constraintlayout:$versions.constraintLayout"
implementation "androidx.recyclerview:recyclerview:$versions.recyclerview"
implementation "com.google.android.material:material:$versions.material"
testImplementation 'junit:junit:4.12'

implementation 'org.slf4j:slf4j-android:1.7.25'
implementation 'com.daimajia.swipelayout:library:1.2.0@aar'

//Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin"

implementation 'org.greenrobot:eventbus:3.1.1'

implementation "com.fasterxml.jackson.core:jackson-core:$versions.jackson"
implementation "com.fasterxml.jackson.core:jackson-annotations:$versions.jackson"
implementation "com.fasterxml.jackson.core:jackson-databind:$versions.jackson"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$versions.jackson"
implementation "com.google.code.gson:gson:$versions.gson"

implementation "com.squareup.retrofit2:retrofit:$versions.retrofit"
implementation "com.squareup.retrofit2:converter-jackson:$versions.retrofit"
implementation "com.squareup.retrofit2:converter-gson:$versions.retrofit"

// R2 modules
api("com.github.codetoart:r2-shared-kotlin:$versions.r2SharedKotlin") {
    changing = true
}
api("com.github.codetoart:r2-streamer-kotlin:$versions.r2StreamerKotlin") {
    exclude group: "org.slf4j", module: "slf4j-api"
    changing = true
}

// Only ReflectionUtils in Spring framework is used
implementation 'org.springframework:spring-core:4.3.19.RELEASE'

// Lifecycle
implementation "androidx.lifecycle:lifecycle- 
extensions:$versions.lifecycle"
}
apply from: '../folioreader/bintray/bintrayv1.gradle'

I have tried some of the answers posted here but they do not work. How can I solve this problem?

EDIT:

I added

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.4-3"

in my dependencies and have received the following error:

ERROR: Could not get unknown property 'versions' for object of type org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension.

it is occuring on line 20 on the same build.gradle file:

libraryVersion = versions.folioreaderSdk

updating to newer version does not work:

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.40"

Upvotes: 9

Views: 13190

Answers (2)

Jhn
Jhn

Reputation: 1

I solved it using the following in the main "build.gradle" file of the project:

`allprojects {
    configurations.all {
        resolutionStrategy {
            cacheChangingModulesFor 0, 'seconds'
        }
    }
}`

Upvotes: 0

Vinay W
Vinay W

Reputation: 10190

Looking at the library structure on Github, it seems you need to do the following

  • Go to YOUR project level build.gradle file (not the module level build.gradle)
  • Look at the repositories, dependencies in the Library's project level build.gradle file and copy them over to YOUR project level build.gradle file (including the kotlin-gradle-plugin dependency)

Note: in case you haven't worked with External variables syntax before, you can find those variables for this library in the root directory of the github repository.

In this case, writing

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"` 

will resolve to the following (you can directly write this in your project)

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.11" 

Upvotes: 8

Related Questions