4
votes

React Native: Tâche: react-native-maps: compileDebugRenderscript FAILED

J'essaie d'implémenter React Native MapView pour Android. J'ai suivi l'installation de github a > instruction mais je suis confronté à une erreur de compilation lorsque j'essaye de courir en utilisant la commande react-native run-android .

Tâche: react-native-maps: compileDebugRenderscript FAILED

ÉCHEC: la compilation a échoué avec une exception.

  • Ce qui n'a pas fonctionné: Impossible de résoudre tous les fichiers pour la configuration «: react-native-maps: debugCompileClasspath». Impossible de résoudre com.android.support:support-compat:26.1.0. Requis par: projet: react-native-maps Impossible de trouver une version de 'com.android.support:support-compat' qui satisfait les contraintes de version: Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.facebook.react: react-native: 0.59.0' -> 'com.android.support:appcompat-v7:28.0.0' - -> 'com.android.support:support-compat:28.0.0' Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.facebook.react: react-native: 0.59.0' -> 'com.android.support:appcompat-v7:28.0.0' - -> 'com.android.support:support-core-utils:28.0.0' -> 'com.android.support:support-compat:28.0.0' Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.facebook.react: react-native: 0.59.0' -> 'com.android.support:appcompat-v7:28.0.0' - -> 'com.android.support:support-fragment:28.0.0' -> 'com.android.support:support-compat:28.0.0' Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.facebook.react: react-native: 0.59.0' -> 'com.android.support:appcompat-v7:28.0.0' - -> 'com.android.support:support-vector-drawable:28.0.0' -> 'com.android.support:support-compat:28.0.0' Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.google.android.gms: play-services-base: 16.0.1' -> 'com.google.android.gms: play-serv ices-sous-sol: 16.0.1 '->' com.android.support:support-v4:26.1.0 '->' com.android.support:support-compat:26.1.0 ' Chemin de dépendance 'MapViewDemo: react-native-maps: unspecified' -> 'com.facebook.react: react-native: 0.59.0' -> 'com.android.support:appcompat-v7:28.0.0' - -> 'com.android.support:support-core-utils:28.0.0' -> 'com.android.support:loader:28.0.0' -> 'com.android.support:support-compat:28.0 .0 ' 'com.android.support:support-annotations' strictement '26 .1.0 'en raison de la raison suivante son: debugRuntimeClasspath utilise la version 26.1.0 Chemin de contrainte 'MapViewDemo: react-native-maps: unspecified' -> 'com.android.support:support-annotations' strictement '26 .1.0 'en raison de la raison suivante son: debugRuntimeClasspath utilise la version 26.1.0

ÉCHEC DE LA CONSTRUCTION dans 5s 8 tâches réalisables: 8 exécutées erreur Impossible d'installer l'application sur l'appareil, lisez l'erreur ci-dessus pour plus de détails. Assurez-vous d'avoir un émulateur Android en cours d'exécution ou un appareil connecté et configurer votre environnement de développement Android: https://facebook.github.io/react-native/docs/ getting-started.html erreur La commande a échoué: application gradlew.bat: installDebug

Gradle au niveau de l'application

{
  "name": "MapViewDemo",
  "version": "0.0.1",
  "private": true,
  "scripts": {
  "start": "node node_modules/react-native/local-cli/cli.js start",
  "test": "jest"
},
"dependencies": {
"react": "16.8.3",
"react-native": "0.59.0",
"react-native-maps": "^0.23.0"
},
  "devDependencies": {
  "@babel/core": "7.3.4",
  "@babel/runtime": "7.3.4",
  "babel-jest": "24.5.0",
  "jest": "24.5.0",
  "metro-react-native-babel-preset": "0.53.0",
  "react-test-renderer": "16.8.3"
 },
  "jest": {
  "preset": "react-native"
}
}

Gradle au niveau du projet strong>

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

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

    // 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"
    }
}
}

Package.json

apply plugin: "com.android.application"

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"


def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false

android {
compileSdkVersion rootProject.ext.compileSdkVersion

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    applicationId "com.mapviewdemo"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86-64"
    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86-64": 4]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
}
}

dependencies {
implementation project(':react-native-maps')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+"  // From node_modules

implementation(project(':react-native-maps')) {
    exclude group: 'com.google.android.gms', module: 'play-services-base'
    exclude group: 'com.google.android.gms', module: 'play-services-maps'
}
implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-maps:16.1.0'


}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
 }

configurations.all {
resolutionStrategy {
    force 'com.android.support:support-v4:28.0.0'
    force 'com.android.support:appcompat-v7:28.0.0'
}
}


0 commentaires

5 Réponses :


0
votes

cela a également fonctionné pour moi.

Modifiez android / build.gradle comme suit

1) Ajoutez google () dans les référentiels

// from version 2.14.1

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

// change to 4.10.1

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

2) Mettez à jour com.android.tools. build.gradle vers 3.1.0

android.enableAapt2=false // < ---  add here
android.useDeprecatedNdk=true
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias

3) Ajouter google () à l'intérieur des dépôts après les dépendances:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
      classpath 'com.android.tools.build:gradle:3.1.0'
    }
    allprojects {
      repositories {
        mavenLocal()
        jcenter()
        // add googgle() here
        google()

4) Ajoutez android.enableAapt2 = false à android / gradle.properties

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
      // classpath 'com.android.tools.build:gradle:2.2.3'
      // update from 2.2.3 to 3.1.0 
      classpath 'com.android.tools.build:gradle:3.1.0'

5) Mettez à jour la version de gradle dans android / gradle / wrapper / gradle-wrapper. properties:

buildscript {
    repositories {
        jcenter()
        // add google() here
        google()

6) Exécutez react-native run-android


2 commentaires

J'ai suivi vos instructions mais j'affiche toujours l'erreur > Impossible d'obtenir la propriété inconnue 'mergeResourcesProvider' pour l'objet de type com.android.build.gradle.internal.api.ApplicationVariantImpl‌.


dans mon niveau d'application, je n'ai pas inséré les lignes suivantes. implémentation (projet (': react-native-maps')) {groupe d'exclusion: 'com.google.android.gms', module: 'play-services-base' groupe d'exclusion: 'com.google.android. gms ', module:' play-services-maps '} implémentation' com.google.android.gms: play-services-base: 16.1.0 'implementation' com.google.android.gms: play-services-maps: 16.1 .0 '}



4
votes

Après deux jours de difficultés, je trouve ma solution par moi-même.Le vrai problème est mon projet en utilisant compileSdkVersion = 28 et react-native-maps node_module en utilisant une version différente de compileSdkVersion .

Pour résoudre ce problème, vous devez mettre à jour la version de react-native-maps node_module compileSdkVersion .

nom_projet> node_modules> react-native-maps> lib> android> build.gradle

 ext {
    buildToolsVersion = "28.0.3"
    minSdkVersion = 20
    compileSdkVersion = 28
    targetSdkVersion = 28
    supportLibVersion = "28.0.0"
}

La version du SDK de compilation du module et la version de la bibliothèque de support doivent être identiques à celles du SDK de compilation du projet version et version de la bibliothèque de support.


0 commentaires

0
votes

avez-vous réussi à le faire fonctionner?. j'ai trouvé une autre solution. dans mon cas, cela se produit à cause de la version de react-native (0.59.0). donc je change ma version react-native dans mon formulaire de fichier package.json 0.59.0 en ^ 0.58.6 . et la version react-native-maps à ^ 0.23.0 . voici les autres étapes.

1) dans les paramètres au niveau de l'application.gradle, incluez ceci

<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="AIzaSyBTSDBtI7_dfdfBeYkNAtdQ8sT67HiOuO0VU"/>

2) dans le niveau du projet, supprimez ou commentez

XXX

(à l'intérieur de buildscript {})

3) également au niveau du projet gradle, changez le chemin de classe. build.gradle version 3.1.1

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

ajouter également une autre URL à l'intérieur de maven {} (à l'intérieur de tous les projets {})

defaultConfig {
    applicationId "com.mapviewdemo"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}

4) changez maintenant le niveau de niveau de l'application comme suit

d'abord, changez compileSdkVersion en 28 et ajoutez une nouvelle buildToolVersion

compileSdkVersion 28
buildToolsVersion "27.0.3"

puis, changez min et cible SdkVersion comme suit (à l'intérieur de defaultConfig)

maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "https://maven.google.com"
            url "$rootDir/../node_modules/react-native/android"
        }

5) dans votre AndroidManifest.xml,

ajoutez d'abord ce code. il s'agit de donner la permission d'accéder à l'emplacement sur votre appareil. ajoutez ceci avant la balise .

classpath 'com.android.tools.build:gradle:3.1.1'

alors vous devez ajouter vos méta-données avant code >.

    ext {
    buildToolsVersion = "28.0.3"
    minSdkVersion = 20
    compileSdkVersion = 28
    targetSdkVersion = 28
    supportLibVersion = "28.0.0"
}

(ajoutez votre propre clé API pour android:value)

6) puis exécutez npm install et essayez si cela fonctionne ou non. si cela ne fonctionne pas, vous devez télécharger le SDK Android à partir du studio Android. dans mon cas, j'ai téléchargé Android 7.0 et 6.0


3 commentaires

Oui, je suis capable de le faire fonctionner. Votre solution est également correcte mais je pense que la mise à niveau de la version react-native-maps du projet react-native-maps est une meilleure solution.


content de l'entendre. Alors, quelle est la nouvelle version de react-native-maps dans votre projet?


J'ai mis à jour la version react-native de react-native-maps qui est 0.59.0.



0
votes

J'ai résolu ce problème en utilisant cette installation npm - enregistrez "react-native-maps @ jerolimov / react-native-maps # fix-rn59rc-compile-issues"

de: https://github.com/react -native-community / react-native-maps / pull / 2702

le problème est avec React native 0.59+ qui compile avec compileSdkVersion 28 et les cartes utilisent 26


0 commentaires

0
votes

Au bout de 2 jours, j'ai trouvé le problème dans mon projet. J'ai modifié les valeurs de compileSdkVersion , supportLibVersion et playServicesVersion dans android / build.gradle et android / app / build.gradle aux mêmes valeurs que dans node_modules / react-native-maps / lib / android / build .gradle et node_modules / react-native-maps / build.gradle , cela a fonctionné pour moi.

Valeurs de compileSdkVersion , supportLibVersion et playServicesVersion sont identiques dans tous les fichiers ci-dessous.

dans le fichier android / build.gradle :

...
ext {
    minSdkVersion = 16
    compileSdkVersion = 28
    targetSdkVersion = 28
    supportLibVersion = '28.0.0'
    playServicesVersion = '16.1.0'
  }
...

dans le fichier android / app / build.gradle :

...
android {
  compileSdkVersion safeExtGet('compileSdkVersion', 28)

  defaultConfig {
    minSdkVersion safeExtGet('minSdkVersion', 16)
    targetSdkVersion safeExtGet('targetSdkVersion', 27)
  }
}


dependencies {
  ...
  implementation "com.android.support:appcompat-v7:${safeExtGet('supportLibVersion', '28.0.0')}"
  implementation "com.google.android.gms:play-services-base:${safeExtGet('playServicesVersion', '16.1.0')}"
  implementation "com.google.android.gms:play-services-maps:${safeExtGet('playServicesVersion', '16.1.0')}"
  implementation 'com.google.maps.android:android-maps-utils:0.5'
}
...

dans le fichier node_modules / react-native-maps / lib / android / build.gradle :

...
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
    applicationId "com.reactnativeapp2"
    minSdkVersion 19
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
...
...
}
...
dependencies {
   ...
   ...
   implementation 'com.google.android.gms:play-services-base:16.1.0'
   implementation 'com.google.android.gms:play-services-maps:16.1.0'
}
...

dans le fichier node_modules / react-native-maps / build.gradle :

...
ext {
    compileSdkVersion   = 28
    targetSdkVersion    = 27
    buildToolsVersion   = "28.0.3"
    minSdkVersion       = 16
    supportLibVersion   = "28.0.0"
    playServicesVersion = "16.1.0" // or set latest version
    androidMapsUtilsVersion = "0.5+"
}
...


0 commentaires