React-native-device-info: DeviceInfo.getBuildNumber() wrong when enableSeparateBuildPerCPUArchitecture

Created on 14 Oct 2019  路  1Comment  路  Source: react-native-device-info/react-native-device-info

DeviceInfo.getBuildNumber() return wrong versionCode when i enable enableSeparateBuildPerCPUArchitecture in android/app/build.gradle. When i disable enableSeparateBuildPerCPUArchitecture everything is ok but apk size too big. How can i fix it?

My android/app/build.gradle
`android {
compileSdkVersion rootProject.ext.compileSdkVersion

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    applicationId "com.pvgaswstest"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 61
    versionName "1.60"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
    }
}
signingConfigs {
    release {
        if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
            storeFile file(MYAPP_UPLOAD_STORE_FILE)
            storePassword MYAPP_UPLOAD_STORE_PASSWORD
            keyAlias MYAPP_UPLOAD_KEY_ALIAS
            keyPassword MYAPP_UPLOAD_KEY_PASSWORD
        }
    }
    debug {
        storeFile file('debug.keystore')
        storePassword 'android'
        keyAlias 'androiddebugkey'
        keyPassword 'android'
    }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        // Caution! In production, you need to generate your own keystore file.
        // see https://facebook.github.io/react-native/docs/signed-apk-android.
        signingConfig signingConfigs.debug
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}
// 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:
        // https://developer.android.com/studio/build/configure-apk-splits.html
        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
        }

    }
}
packagingOptions {
   pickFirst 'lib/x86/libc++_shared.so'
   pickFirst 'lib/x86_64/libjsc.so'
   pickFirst 'lib/arm64-v8a/libjsc.so'
   pickFirst 'lib/arm64-v8a/libc++_shared.so'
   pickFirst 'lib/x86_64/libc++_shared.so'
   pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}
dexOptions {
    javaMaxHeapSize "4g"
}

}`

Most helpful comment

Have you looked at what it does when you enable separate build per architecture?

From the gradle you posted even (and also in my own project - I do this):

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // https://developer.android.com/studio/build/configure-apk-splits.html
        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
        }

    }
}

So you're getting some multiple of 1048576 added to it, or similar? That's exactly what you asked for :-)

>All comments

Have you looked at what it does when you enable separate build per architecture?

From the gradle you posted even (and also in my own project - I do this):

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // https://developer.android.com/studio/build/configure-apk-splits.html
        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
        }

    }
}

So you're getting some multiple of 1048576 added to it, or similar? That's exactly what you asked for :-)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

NemanjaManot picture NemanjaManot  路  4Comments

HAPENLY picture HAPENLY  路  5Comments

dozel picture dozel  路  4Comments

clozr picture clozr  路  5Comments

pgonzalez-santiago picture pgonzalez-santiago  路  3Comments