Соединение нативного android SDK - здесь - PullRequest
0 голосов
/ 20 февраля 2020

В настоящее время я пытаюсь соединить Heremaps android sdk для реактивного через внешнюю библиотеку. Я успешно соединил его в локальном реактивном нативном проекте, и в настоящее время я нахожусь в процессе создания android части библиотеки.

В настоящее время с текущей реализацией, которую я имею, я сталкиваюсь с этой ошибкой, когда Я пытаюсь запустить android build:

  • Что пошло не так: не удалось определить зависимости задачи ': app: preDebugBuild'. Не удалось разрешить все зависимости задач для конфигурации ': app: debugRuntimeClasspath'. Не смог найти: ЗДЕСЬ-sdk :. Требуется: project: app> project: response-native-heremaps-bridge

SDK находится в {libraryname} / android / app / libs в моей внешней библиотеке

Мой android / app build.gradle во внешней библиотеке выглядит следующим образом.

apply plugin: 'com.android.library'

def safeExtGet(prop, fallback) {
    rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

repositories {
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion safeExtGet("compileSdkVersion", 28)
    buildToolsVersion safeExtGet("buildToolsVersion", '28.0.3')

    defaultConfig {
        minSdkVersion safeExtGet('minSdkVersion', 17)
        targetSdkVersion safeExtGet('targetSdkVersion', 26)
        versionCode 1
        versionName "1.0"                    nb 
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

    // React Native
    implementation "com.facebook.react:react-native:+"

    // HereMaps SDK

    implementation(name:'HERE-sdk', ext:'aar')
}

и android уровень build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 17
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        flatDir {
            dirs 'libs'
        }
    }
}

На реагирующей нативной стороне мой build.gradle на уровне android / app имеет только эти изменения:

dependencies {
    implementation project('{project-name}')
}

И мои settings.gradle включают эти изменения:

include ':{library name}'
project(':{library name}').projectDir = new File(rootProject.projectDir, '../node_modules/{library name}/android/app')

И, наконец, в моем MainApplication. java:

    @Override
    protected List<ReactPackage> getPackages() {
      @SuppressWarnings("UnnecessaryLocalVariable")
      List<ReactPackage> packages = new PackageList(this).getPackages();
      // Packages that cannot be autolinked yet can be added manually here, for
      // example:
      packages.add(new HeremapsPackage()); //<------added this line
      return packages;
    }

Есть идеи, что мне здесь не хватает? Я бы не хотел добавлять sdk в мое основное приложение Reaction-native, так как оно близко к 100mbs. Спасибо!

1 Ответ

0 голосов
/ 24 февраля 2020

Тип сборки gradle должен совпадать на уровне root и уровне приложения для разрешения зависимостей. Также, если вы используете облегченную версию, вы можете подумать об обновлении версии sdk.

buildTypes {debug {...} release {...}}

у вас есть файл (app) build.gradle. Вы должны включить все buildTypes {} с такими же именами, как

buildTypes {debug {...} release {...} }

для создания файлов build.gradle всех библиотек / модулей, включенных в проект.

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

...