Библиотека Android не работает над проектом Lib GDX - PullRequest
0 голосов
/ 25 мая 2018

Я использовал настройку GDX для создания структуры своего проекта с включенной в него библиотекой, но после попытки вызова Intent из библиотеки Android я заметил, что он не может найти класс, даже путь к библиотеке.Посмотрите этот скриншот:

Android-library-error.png

Затем я запустил новый проект самой Android Studio и тоже неплохо поработал:

Intent-working.png

Как вы можете видеть, это похоже на настройку проблемы gradle.Затем я попытался исправить это сам, но не смог.

Я знаю, что для добавления библиотеки нам нужно закодировать некоторые зависимости, даже если я удалю зависимость GDX, это вызовет ту же ошибку.Но Android не нужно добавлять, тогда я не знаю, как добавить, и если будет работать.

Зависимость GDX написана здесь:

    project(":core") {
apply plugin: "java"


dependencies {
    compile "com.badlogicgames.gdx:gdx:$gdxVersion"
    // If I remove that line it will causes same error
} [...]

Я сделал некоторое сравнение между GDX и AndroidStudio:

GDX made:

project(":android") {
    apply plugin: "android"

    configurations { natives }

    dependencies {

        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
    }
}

Android Studio made:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:support-v4:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

Я использую версию 3.0.1 Android Studio.

1 Ответ

0 голосов
/ 25 мая 2018

Вам не хватает одного основного аспекта libGDX как кроссплатформенного решения.Вы не можете вызвать специфичный для платформы код из вашего основного модуля, потому что он ничего не знает о конкретной платформе, такой как Android.

Приятно видеть, что в базовый модуль не включены специфичные для Android библиотеки, и это то, что намеревается.

   project(":core") {
    apply plugin: "java"
    dependencies {
    compile "com.badlogicgames.gdx:gdx:$gdxVersion"
   } 


Как вы можете видеть здесь, есть включения библиотек, специфичных для платформы Android, и включение модуля кода.

project(":android") {
  apply plugin: "android"

  configurations { natives }

  dependencies {

    compile project(":core")
    compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
  }
}

Этоозначает:
- Android имеет доступ ко всему в модуле ядра и в своем собственном модуле
- Ядро имеет доступ только ко всему в своем модуле, ничего выше

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

...