Почему при попытке использовать класс из библиотеки появляется сообщение «Не удается разрешить символ»? - PullRequest
0 голосов
/ 16 декабря 2018

Intro

У меня есть приложение, и в настоящее время я начал работать с некоторым внутренним кодом.Чтобы предотвратить дублирование кода, я хочу переместить часть своего кода в библиотеку.

Вот что я сделал:

  • Для своей библиотеки я создалфайл jar с использованием IntelliJ IDEA (структура проекта - артефакты и т. д.)
  • Я скопировал файл jar в папку lib моего приложения для Android
  • Я включил зависимость (в build.gradleЯ поставил implementation files('libs/numbers-lib.jar'))

Задача

Теперь, когда я пытаюсь использовать один из классов, я получаю Cannot resolve symbol 'Level' (см. Также скриншот).Что мне не хватает?

РЕДАКТИРОВАТЬ: Я уже очистил / перестроил свой проект и аннулировал кэши.

EDIT2: Вот мой gradle (по запросу)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.my.example"
        minSdkVersion 21
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        targetSdkVersion 27
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'junit:junit:4.12'
    implementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    implementation 'postgresql:postgresql:9.0-801.jdbc4'
    implementation files('libs/numbers-lib.jar')
}

EDIT3: Вот скриншот.Вы можете видеть, что библиотека имеет правильный класс ... enter image description here

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

измените

implementation fileTree(include: ['*.jar'], dir: 'libs')

на

implementation fileTree(dir: 'libs', include: ['*.jar'])

и не забудьте поместить банку в папку libs.

0 голосов
/ 18 декабря 2018

Оказалось, что я должен был поместить свои библиотечные классы в пакет перед созданием библиотеки.

0 голосов
/ 16 декабря 2018

Поместите файл lib jar в app / libs, в файл проекта вашего проекта и добавьте эту строку в зависимости:

compile fileTree(dir: 'libs', include: ['*.jar'])
...