现象
执行npx react-native run-android
后始终卡在download中,结束报错Could not download或者could not resource
原因
原来配置的central为外网,国内可以用阿里云镜像代替
解决方法
1.修改android/build.gradle(buildscript和allprojects两部分)(注意,网上有解决案用的是http的url,经尝试会被新版gradle认为不安全,导致后续其他报错)
buildscript {
repositories {
// google()
// mavenCentral()
// maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } //gradle-plugin
maven { url 'https://maven.aliyun.com/repository/google' } //google
maven { url 'https://maven.aliyun.com/repository/public' } //public
maven { url 'https://maven.aliyun.com/repository/jcenter'} //jcenter
}
}
repositories {
// maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } //添加这句,使用阿里云镜像
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } //gradle-plugin
maven { url 'https://maven.aliyun.com/repository/google' } //google
maven { url 'https://maven.aliyun.com/repository/public' } //public
maven { url 'https://maven.aliyun.com/repository/jcenter'} //jcenter
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")
}
// mavenCentral {
// // We don't want to fetch react-native from Maven Central as there are
// // older versions over there.
// content {
// excludeGroup "com.facebook.react"
// }
// }
// google()
maven { url 'https://www.jitpack.io' }
}
2.网上很多解决案只配置了第一步,发现还是跑不通,配置了阿里镜像但是看gradle 的build过程下载依赖还是从国外下载。此时配置本地插件classpath(“com.facebook.react:react-native-gradle-plugin”)
因为插件项目也需要加载依赖,在node_modules中,修改下面这两个文件(build.gradle.kts、settings.gradle.kts)就可以跑通了。
build.gradle.kts:
/*repositories {
* google()
* mavenCentral()
* }
*/
repositories {
maven { url = uri("https://maven.aliyun.com/repository/google/") }
maven { url = uri("https://maven.aliyun.com/repository/jcenter/") }
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url = uri("https://maven.aliyun.com/repository/public") }
}
settings.gradle.kts:
pluginManagement {
/* repositories {
* mavenCentral()
* google()
* gradlePluginPortal()
* }
*/
repositories {
maven { url = uri("https://maven.aliyun.com/repository/google/") }
maven { url = uri("https://maven.aliyun.com/repository/jcenter/") }
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url = uri("https://maven.aliyun.com/repository/public") }
}
}