美文网首页
gradle配置(release)

gradle配置(release)

作者: 太平洋_cfd2 | 来源:发表于2019-04-24 08:47 被阅读0次

    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 = true // Proguard 是一个 Java 字节码混淆压缩工具,它可以移除掉 React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减少 APK 的大小。

    android {

        signingConfigs {

            debug{

                storeFile file("debug.keystore")

                keyAlias 'androiddebugkey'

                keyPassword 'android'

                storePassword 'android'

            }

            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

                }

            }

        }

        compileSdkVersion rootProject.ext.compileSdkVersion

        compileOptions {

            sourceCompatibility JavaVersion.VERSION_1_8

            targetCompatibility JavaVersion.VERSION_1_8

        }

        defaultConfig {

            applicationId "com.unitenvironmentapp"

            minSdkVersion rootProject.ext.minSdkVersion

            targetSdkVersion rootProject.ext.targetSdkVersion

            missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57" // See note below!

            versionCode 1

            versionName "1.0"

            missingDimensionStrategy 'react-native-camera', 'general'

            ndk {

                abiFilters "armeabi-v7a", "x86"

            }

            multiDexEnabled true

        }

        compileOptions {

            sourceCompatibility JavaVersion.VERSION_1_8

            targetCompatibility JavaVersion.VERSION_1_8

        }

        splits {

            abi {

                reset()

                enable enableSeparateBuildPerCPUArchitecture

                universalApk false  // If true, also generate a universal APK

                include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"

            }

        }

        buildTypes {

            release {

                minifyEnabled true // 是否混淆代码

                shrinkResources true // 瘦包

                proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"

                signingConfig signingConfigs.release

            }

            debug {

                signingConfig signingConfigs.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, "arm64-v8a": 3, "x86_64": 4]

                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

                }

            }

        }

    }

    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-community_async-storage')

        implementation project(':react-native-baidu-map')

        implementation project(':react-native-svg')

        implementation fileTree(include: ['*.jar'], dir: 'libs')

        implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

        implementation 'com.facebook.react:react-native:0.20.1'

        // From node_modules

        implementation project(':react-native-navigation')

        implementation 'com.android.support:design:28.0.0'

        implementation project(':react-native-camera')

        implementation 'com.android.support:multidex:1.0.3'

    }

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

    }

    相关文章

      网友评论

          本文标题:gradle配置(release)

          本文链接:https://www.haomeiwen.com/subject/jeqwgqtx.html