react-native run-android失败

时间:2017-03-06 22:50:30

标签: android gradle react-native

由于我已经升级到react-native 0.42.0,我再也无法运行我的应用程序了。

我有一个奇怪的问题,而不是从node_modules获取react-native,gradle将从maven存储库获取旧版本0.21。我已经尝试冻结版本,抑制所有构建或缓存相关,我甚至通过仅复制js文件开始新鲜。但我仍然遇到与gradle相关的错误,而不是在为native -modules查找react-native。

这是我的settings.gradle:

rootProject.name = 'My App'

include ':app'
include ':react-native-google-analytics-bridge'
project(':react-native-google-analytics-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-analytics-bridge/android')

和我的应用程序的build.gradle依赖项:

dependencies {
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:0.42.0"  // From node_modules
    compile "com.facebook.fresco:animated-gif:0.11.0"
    compile project(':react-native-google-analytics-bridge')
}

最后是项目build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}

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"
            url "http://private-repos"
        }
    }
}

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

尝试检查package.json并查看其中的内容。

如果您在那里找到旧版本,则可以更改它,然后运行npm install或运行npm install --save react-native@<the-desired-version>

如果您收到需要升级的错误,请运行 npm install --save react@<needed-version>

在我的情况下,我不得不使用这种替代方法,因为标准的(基于git)不起作用。

有关此替代方案和标准方案的更多详细信息: https://facebook.github.io/react-native/docs/upgrading.html

答案 1 :(得分:0)

发现问题:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}

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"
        }
        maven {
            url "http://private-repos"
        }
    }
}

您必须为要添加的每个网址创建maven部分。 当你像我先说的那样指定它时,它甚至不会抛出错误,它只是忽略了第一个URL 因记录不当而丢失的时间......