1
votes

Impossible d'appeler la méthode multiply () sur un objet nul

J'essaye de générer un apk fractionné en react-native et j'obtiens cette erreur après avoir défini ces deux propriétés:
def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true
Voici l'erreur que j'obtiens:

Impossible d'appeler la méthode multiply () sur un objet nul
Ouvrir le fichier

En cliquant sur le fichier ouvert, cela me pointe vers ce code:

defaultConfig {
        applicationId PACKAGE_NAME
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode VERSION_CODE
        multiDexEnabled true
        versionName MY_VERSION_HERE
        ndk {
            abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
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 enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.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, "x85_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
            }
        }
    }

Mes configurations sont comme ceci:

 if (abi != null) {  // null for the universal-debug, universal-release variants
        output.versionCodeOverride =
             versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
 }

S'il vous plaît, aidez-moi ou au moins donnez-moi une idée de pourquoi cela devrait se produire.


0 commentaires

3 Réponses :


0
votes

J'ai fini de créer un autre projet, d'installer tout le référentiel et cela a fonctionné.
Je ne sais toujours pas pourquoi cela se passait en premier lieu.


0 commentaires

0
votes

vous devez changer "x85_64" -> "x86_64" dans le paramètre applicationVariants.all


0 commentaires

0
votes

Débogage ici, j'ai ajouté une ligne:

def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a":3, "x86_64":4]

avant la ligne output.versionCodeOverride et j'ai vu l'abi nécessaire. Ensuite, ajouté l'abi en ligne def versionCodes . Il se termine comme:

 println abi


0 commentaires