これはReact Nativeプロジェクトです。別のマシンで正常に動作しましたが、マシンに移動すると失敗します。
私が見つけたほとんどのソリューションは、jcenter()をプロジェクトレベルgradle.buildのリポジトリに追加することを提案しました。私の場合、すでに追加されています。
Gradle同期は次のエラーで失敗します:
Could not find any matches for com.Android.tools.build:gradle:2.2.+ as no versions of com.Android.tools.build:gradle are available. Searched in the following locations: https://jcenter.bintray.com/com/Android/tools/build/gradle/maven-metadata.xml https://jcenter.bintray.com/com/Android/tools/build/gradle/ Required by: project :react-native-image-picker
Android build.gradleファイル:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenLocal()
mavenCentral()
jcenter()
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.1' }
}
allprojects {
repositories {
google()
mavenCentral()
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 'https://jitpack.io' }
}
}
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 19
compileSdkVersion = 26
targetSdkVersion = 26
supportLibVersion = "26.1.0"
googlePlayServicesVersion = "11.8.0"
androidMapsUtilsVersion = "0.5+"
}
subprojects { subproject ->
afterEvaluate {
if ((subproject.plugins.hasPlugin('Android') || subproject.plugins.hasPlugin('Android-library'))) {
Android {
variantFilter { variant ->
def names = variant.flavors*.name
if (names.contains("reactNative51") || names.contains("reactNative55")) {
setIgnore(true)
}
}
}
}
}
}
}
アプリbuild.gradle:
apply plugin: "com.Android.application"
import com.Android.build.OutputFile
/**
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
* and bundleReleaseJsAndAssets).
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
* and their defaults. If you decide to add a configuration block, make sure to add it before the
* `apply from: "../../node_modules/react-native/react.gradle"` line.
*
* project.ext.react = [
* // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.Android.bundle",
*
* // the entry file for bundle generation
* entryFile: "index.Android.js",
*
* // whether to bundle JS and assets in debug mode
* bundleInDebug: false,
*
* // whether to bundle JS and assets in release mode
* bundleInRelease: true,
*
* // whether to bundle JS and assets in another build variant (if configured).
* // See http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
* // The configuration property can be in the following formats
* // 'bundleIn${productFlavor}${buildType}'
* // 'bundleIn${buildType}'
* // bundleInFreeDebug: true,
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
* // where to put the JS bundle asset in debug mode
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
*
* // where to put the JS bundle asset in release mode
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in debug mode
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in release mode
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
*
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
* // that we don't look at files in Android/ or ios/ to determine whether the tasks are up to
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in Android/
* // for example, you might want to remove it from here.
* inputExcludes: ["Android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
Android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.sos"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
// 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]
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
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.Android.support' && requested.name != 'multidex') {
details.useVersion "${rootProject.ext.supportLibVersion}"
}
}
}
dependencies {
implementation project(':react-native-fetch-blob')
implementation project(':react-native-linear-gradient')
implementation project(':react-native-maps')
implementation project(':react-native-image-picker')
implementation project(':react-native-vector-icons')
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-navigation')
implementation 'com.Android.support:design:25.4.0'
implementation "com.Android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation project(':react-native-maps')
}
// 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'
}
ところで、アプリのbuild.graldeファイルでは、import com.Android.build.OutputFile
のAndroid
がエラーをスローします:解決できません
編集:
ビルドプロセスの一部は既に正常に渡されていますが、次のエラーが発生し始めました:Unable to find a matching configuration of project :react-native-fetch-blob: None of the consumable configurations have attributes.
このライブラリが修正バージョンをリリースするまで待てない場合、修正方法は次のとおりです。
ルート(app/gradleではなく)のサブプロジェクトセクションの下のbuild.gradleに追加するだけです
subprojects {
if (project.name.contains('react-native-image-picker') ||
project.name.contains('react-native-vector-icons')) {
buildscript {
repositories {
jcenter()
maven { url "https://dl.bintray.com/Android/android-tools/" }
}
}
}
}
クレジットは https://github.com/akolpakov に行きます
これは新しいバージョンのreact-native-image-pickerで対処された新しい問題です。ルートフォルダーに移動して、react-native-image-pickerを再インストールします。
npm install --save react-native-image-picker
次に、ルートフォルダーに移動し、react-native-image-pickerがバージョン「^ 0.27.2」であることを確認します
React-native-vector-iconsパッケージでも同じ問題が発生します。
これは、これら2つの壊れたリポジトリが原因ですか?
https://jcenter.bintray.com/com/Android/tools/build/gradle/maven-metadata.xml
https://jcenter.bintray.com/com/Android/tools/build/gradle/
両方とも「要求されたパスが見つかりませんでした」と応答します。
編集
ログ情報に基づいて:
project :react-native-vector-icons
com.intellij.openapi.externalSystem.model.ExternalSystemException:
Could not find any matches for com.Android.tools.build:gradle:2.3.+ as
no versions of com.Android.tools.build:gradle are available.
「2.3。+」を検索して、明示的なバージョン番号(2.3.0など)に置き換えます。問題は解決します。
バージョンコードで+の使用を避けることに関するAndroidからの提案を読みましたが、その提案は現在実施されている可能性があります。
一部のリポジトリが誤って削除されたようです。Googleの担当者によると、現在復元に取り組んでいるものです。
https://issuetracker.google.com/issues/120759347#comment
みなさんこんにちは、
私たちは今、何が起こったかを知っており、賢明な方法でそれをロールバックすることに取り組んでいます。問題の基本的な概要は次のとおりです。
- JCenterに偽の/不正な形式のcom.google。*およびcom.Android。*のアーティファクトがいくつかありました
- これらのアーティファクトのほとんどは、maven.google.com(別名google())で適切にホストされていました。
- ビルドシステムがGoogle Mavenバージョンを見つける前にjCenterバージョンを見つけた場合、ビルドが中断します
- Googleはこれに気付き、jFrogにcom.google。*およびcom.Android。*の下にあるすべてのものを削除するように依頼しました。これは、すべてがGoogle Mavenにもあると想定したためです。
- 私たちは間違っていました:
- JCenterから削除されたアーティファクトの一部がビルドでエラーを引き起こしている
私たちはいくつかのことに取り組んでいます:
- 削除された一部のライブラリは、Google Mavenにプッシュされています。これには、com.google.gms:google-servicesプラグイン、firebaseパフォーマンスプラグイン、およびExoplayerが含まれます。 buildscriptブロックとアプリリポジトリブロックにgoogle()を追加して、それが役立つかどうかを確認してください。これは多くの人々を助けると期待していますが、すべての人を助けるわけではありません。 *どのライブラリが不適切に削除されたかのリストを作成する作業を行っています。上記のステップ4で削除されたもののいくつかは、正当な理由で行われたものであるため、それらも復元したくありません。
前に言ったように、私たちはあなたのビルドを壊したことを嫌い、それを修正する間あなたの忍耐に感謝します!
- サム
また、その間に次の回避策を提案します。
---(https://issuetracker.google.com/issues/120759347#comment36
状態
- Googleサービスライブラリ(com.google.gms:google-services)ライブラリが復元されました。更新番号31をご覧ください。
- Bintray.com/googleでホストされているすべてのリポジトリを再公開するリクエストがjCenterに送信されました。 JFrogのjCenter管理者は、私たちのためにオンラインに戻す作業を行っています。この時点でできることは、待つだけです。すぐにオンラインになることを期待しています。一部のライブラリはすでに戻っています。
- Jcenter.bintray.comとmaven.google.comの両方でデュアルホーム化された一部のAndroid/Firebaseライブラリには、以前のバージョン(以前はjCenterでホストされていました)がありません。必要に応じて、jcenter.bintray.comまたはmaven.google.comでこれらをオンラインに戻す作業を引き続き行っています。ここでは、問題の原因となった最初の競合が再作成されないように慎重に作業しています。作業は継続中です。これらのライブラリの新しいバージョンは、maven.google.comで入手できるため、影響を受けません。
回避策
- Googleサービスライブラリの場合、回避策は必要ありません。このライブラリはすでに復元されています。/googleの他のライブラリも同様に復元中です。
- 解決されていないbintray.com/Androidまたはbintray.com/firebaseから提供されるプロジェクトについては、maven.google.comで既にホストされている新しいバージョンへのアップグレードを検討してください。 (これが実行可能でない場合は、以下を参照してください。)
Bintray.com/googleのプロジェクトの場合、またはAndroidまたはFirebaseライブラリの新しいバージョンにアップグレードできない場合...次のようなブロックをビルドに一時的に追加する必要があります.gradle:
リポジトリ{maven {url " https://google.bintray.com/ $(REPOSITORY)"}}
$(REPOSITORY)を https://bintray.com/google のプロジェクト名に置き換えます。
Bintray.com/firebaseの場合、「 https://firebase.bintray.com/ $(REPOSITORY)」を使用します。 bintray.com/Androidの場合、「 https://dl.bintray.com/Android/ $(REPOSITORY)」を使用します。
繰り返しますが、この回避策は、すべてのバージョンをjCenterに再登録するか、maven.google.comにミラーリングするまで一時的なものです。
調査
JCenterからプロジェクトのリストから外すために送信されたリクエストは広範にわたるものであり、その変更を行う権限を持たないGoogleの別のチームによって送信されました。 Googleのリポジトリ管理者は、このリクエストがjCenterによって実行される前に相談されませんでした。これについては、今後さらに検討する予定です。現時点では、影響を受けるライブラリのすべてのバージョンへのアクセスを復元することが最優先事項です。
また、maven.google.comからjCenterへのミラーリングを妨げているGoogleのリポジトリに設定ミスがある可能性があり、これが最初の削除要求の原因でした。この誤った構成を修正することで、何も削除する必要がなくなった可能性があります。内部で追加のフォローアップが行われています。
この質問が行われた日-2018年12月10日-JCenterがGoogleからリポジトリからいくつかのバイナリを削除するリクエストを受け取ったため、1日以上続く問題がありました:
Googleは、バイナリの提供を停止するように依頼しました。公式のGoogleリポジトリを使用してください。 https://Twitter.com/bintray/status/1072275597315923971
すぐに回避策が必要な場合、アクションの最善の方法は、必要な依存関係をMaven URLに直接追加することです。例:repositories { (...) maven { url 'https://dl.bintray.com/Android/android-tools' } }
https://issuetracker.google.com/issues/120759347#comment
上記のスレッドは、この記事を書いている時点でまだ進行中であるため、問題の解決策をたどるのに適した場所です。
私のために働いたgradleの正確なバージョンを使用してみてください
classpath 'com.Android.tools.build:gradle:2.2.3'
React-native-vector-iconsパッケージでこのエラーに遭遇した人向け:
ソース: https://github.com/oblador/react-native-vector-icons/issues/605#issuecomment-446081342