React-native-gesture-handler: Não foi possível encontrar o método compileOnly () para os argumentos [com.facebook.react: react-native: +] no objeto do tipo org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Criado em 30 nov. 2018  ·  3Comentários  ·  Fonte: software-mansion/react-native-gesture-handler

Eu o configuro de acordo com os documentos oficiais para usar o react-navigation3.0.2
meu package.json

{
  "name": "mpx",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.4",
    "react-native-gesture-handler": "^1.0.10",
    "react-native-scrollable-tab-view": "^0.10.0",
    "react-native-vector-icons": "^6.1.0",
    "react-navigation": "^3.0.2",
    "teaset": "^0.5.10"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "babel-preset-react-native": "4.0.1",
    "jest": "23.6.0",
    "react-test-renderer": "16.3.1"
  },
  "jest": {
    "preset": "react-native"
  }
}

e MainActivity.java

package com.mpx;

import com.facebook.react.ReactActivity;
// add start (react-native-gesture-handler)
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
// add end
public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    <strong i="10">@Override</strong>
    protected String getMainComponentName() {
        return "mpx";
    }
    // add start (react-native-gesture-handler)
    <strong i="11">@Override</strong>
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegate(this, getMainComponentName()) {
            <strong i="12">@Override</strong>
            protected ReactRootView createRootView() {
                return new RNGestureHandlerEnabledRootView(MainActivity.this);
            }
        };
    }
    // add end
}

em seguida, react-native run-android
encontrar erro

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/mao/Desktop/lzbk/mpx/node_modules/react-native-gesture-handler/android/build.gradle' line: 32

* What went wrong:
A problem occurred evaluating project ':react-native-gesture-handler'.
> Could not find method compileOnly() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Eu quero saber como resolver isso.

Comentários muito úteis

No arquivo Build '/Users/mao/Desktop/lzbk/mpx/node_modules/react-native-gesture-handler/android/build.gradle', na seção de dependências, altere "compileOnly" para "compile". Eu sou novo no React Native, então não tenho certeza do porquê, mas eu apenas olhei para outros pacotes em node_modules e descobri que eles usam "compilar". Boa sorte.

Todos 3 comentários

No arquivo Build '/Users/mao/Desktop/lzbk/mpx/node_modules/react-native-gesture-handler/android/build.gradle', na seção de dependências, altere "compileOnly" para "compile". Eu sou novo no React Native, então não tenho certeza do porquê, mas eu apenas olhei para outros pacotes em node_modules e descobri que eles usam "compilar". Boa sorte.

Resolvi esse problema com as alterações abaixo:

  1. alterar a configuração em android/build/gradle . Isso faz parte do meu código:
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'

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

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

adicione google() a buildscript e allprojects e altere a versão do gradle no classpath. Abra ...\node_modules\react-native-vector-icons\android\build.gradle , você encontrará que a versão do gradle no classpath é 3.1.4, é por isso que precisamos fazer essa alteração.

  1. Em seu projeto android, abra android/gradle/wrapper/gradle-wrapper.properties , modifique o DistributionUrl:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

Como esta biblioteca depende da versão do gradle acima de 3.1.4, devemos definir uma nova versão.

Reconstrua o projeto, ele finalmente funciona.

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.4.2")
        classpath 'com.google.gms:google-services:4.3.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }

        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven { url "https://maven.google.com" }
    }
}

resolvido por make build.gradle file assim.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

brunolemos picture brunolemos  ·  3Comentários

brentvatne picture brentvatne  ·  5Comentários

jacobrosenskold picture jacobrosenskold  ·  3Comentários

TerrerSandman picture TerrerSandman  ·  3Comentários

muhaimincs picture muhaimincs  ·  3Comentários