Создание отладочных Apks на основе различных файлов конфигурации React Native - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь сгенерировать apk отладки на основе разных файлов конфигурации для моего собственного приложения реакции.Я использовал пакет react-native-config для создания другого файла .env для промежуточной и производственной среды (с различными переменными base_url для API).После этого учебного пособия : я добавил этот код в начало моего файла build.graddle:

project.ext.envConfigFiles = [
        debug: ".env",
        release: ".env",
        staging: ".env.staging",
        production: ".env.production"
]

и создал другие типы buildTypes, как было предложено в статье (я не касался выпуска,только что добавил debug, dev и staging:

buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
    debug {
      debuggable true
    }
    dev {
      initWith debug
    }
    staging {
      initWith debug
    }
}

Когда я запускаю ./gradlew tasks, действительно создается задача * 1012. * Когда я пытаюсь ее запустить, я получаю:

НЕИСПРАВНОСТЬ: сборка не удалась с исключением.

  • Что пошло не так: не удалось определить зависимости задачи ': app: compileStagingJavaWithJavac'.

    Не удалось разрешить все задачизависимости для конфигурации ': app: stagingCompileClasspath'. Не удалось разрешить проект: Reaction-native-config. Требуется: project: app Невозможно найти соответствующий вариант проекта: response-native-config: - Вариант возможности debugApiElements 'timeo:Reaction-native-config: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'. - ДругоеАтрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Возможность варианта 'debugRuntimeElements' timeo: Reaction-native-config: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант возможности releaseApiElements timeo: Reaction-native-config: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант функции releaseRuntimeElements timeo: Reaction-native-config: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.Не удалось разрешить проект: rn-fetch-blob.Требуется: project: app Невозможно найти подходящий вариант проекта: rn-fetch-blob: - Вариант 'debugApiElements', возможность timeo: rn-fetch-blob: unspecified: - Несовместимый атрибут:- Обязательное com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Возможность варианта 'debugRuntimeElements' timeo: rn-fetch-blob: unspecified: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант функции releaseApiElements timeo: rn-fetch-blob: unspecified: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант функции releaseRuntimeElements timeo: rn-fetch-blob: unspecified: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.Не удалось разрешить проект: response-native-file-opener.Требуется: project: app Невозможно найти подходящий вариант проекта: response-native-file-opener: - Вариант 'debugApiElements' возможность timeo: реагировать-native-file-opener: не указано: - Несовместимый атрибут: - Требуется com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант возможности 'debugRuntimeElements' timeo: Reaction-native-file-opener: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант 'releaseApiElements' с возможностью timeo: response-native-file-opener: не указано: - Несовместимый атрибут:- Обязательное com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Возможность 'releaseRuntimeElements' варианта timeo: response-native-file-opener: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.Не удалось разрешить проект: response-native-fs.Требуется: project: app Невозможно найти подходящий вариант проекта: Reaction-native-fs: - Возможность 'debugApiElements' варианта timeo: Reaction-native-fs: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант возможности 'debugRuntimeElements' timeo: react-native-fs: unspecified: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант возможности releaseApiElements timeo: Reaction-native-fs: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант функции releaseRuntimeElements timeo: Reaction-native-fs: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.Не удалось разрешить проект: response-native-document-picker.Требуется: project: app Невозможно найти подходящий вариант проекта: response-native-document-picker:- Вариант возможности 'debugApiElements' timeo: response-native-document-picker: не указан: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант возможности 'debugRuntimeElements' timeo: Reaction-native-document-picker: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант возможности releaseApiElements timeo: response-native-document-picker: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант функции releaseRuntimeElements timeo: response-native-document-picker: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.Не удалось разрешить проект: response-native-svg.Требуется: project: app Невозможно найти подходящий вариант проекта: Reaction-native-svg: - Вариант «debugApiElements», возможность timeo: реагировать-native-svg: не указано: - Несовместимый атрибут: - Требуется com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Вариант возможности 'debugRuntimeElements' timeo: react-native-svg: unspecified: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'debug'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'debug', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.- Вариант возможности releaseApiElements timeo: Reaction-native-svg: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-api'.- Возможность 'releaseRuntimeElements' варианта timeo: Reaction-native-svg: не указано: - Несовместимый атрибут: - Обязательный com.android.build.api.attributes.BuildTypeAttr 'staging' и найдено несовместимое значение 'release'.- Другие атрибуты: - Найден com.android.build.api.attributes.VariantAttr 'release', но не требуется.- Требуется com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' и найдено совместимое значение 'Aar'.- Требуется org.gradle.usage 'java-api' и найдено совместимое значение 'java-runtime'.

Однако когда я запускаю ./gradlew assembleDebug, он все равногенерирует APK.Что я делаю не так и как это исправить

Вот мой файл build.gradle:

    project.ext.envConfigFiles = [
        debug: ".env",
        release: ".env",
        staging: ".env.staging",
        production: ".env.production"
]

apply plugin: "com.android.application"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

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 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.timeo"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        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
        }
        debug {
          debuggable true
        }
        dev {
          initWith debug
        }
        staging {
          initWith debug
        }
    }
    // 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
            }
        }
    }
}

dependencies {
    compile project(':react-native-config')
    compile project(':rn-fetch-blob')
    compile project(':react-native-file-opener')
    compile project(':react-native-fs')
    compile project(':react-native-document-picker')
    compile project(':react-native-svg')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.react:react-native:+"  // From node_modules
}

// 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'
}
...