Как переопределить defaultConfig abiFilters в buildTypes - PullRequest
0 голосов
/ 15 ноября 2018

abiFilters установлен в Android build.gradle defaultConfig блок.

Я бы хотел исключить x86 из выпуска buildType, но не могу найти простой способ сделать это

Вот это build.gradle:

defaultConfig {
    ndk {
        abiFilters "armeabi", "x86"
        moduleName "cipher_v1"
        cFlags "-DRELEASE=1"
        if (rootProject.ext.has("testCrack")) {
            cFlags += " -DTEST_CRACK"
        }
        if (project.ext.has("authKey") && project.ext.has("androidId")) {
            cFlags += "-DAUTH_KEY=\\\"" + project.ext.authKey + "\\\""
            "-DANDROID_ID=\\\"" + project.ext.androidId + "\\\""
        }
    }
}

buildTypes {
   release {
        ndk {
            abiFilters "armeabi"
        }
    }
}

Вот что я получаю:

unzip -l base-release.aar|grep cipher
17752  02-01-1980 00:00   jni/armeabi/libcipher_v1.so
17640  02-01-1980 00:00   jni/x86/libcipher_v1.so

Вот что я действительно хочу:

unzip -l base-release.aar|grep cipher
17752  02-01-1980 00:00   jni/armeabi/libcipher_v1.so

Я бы хотел сохранить полный abiFilters в блоке defautlConfig

И указать в некоторых buildType


РЕДАКТИРОВАТЬ 1:

Да, удаление defaultConfig и установка abiFilters в обоих блоках debug и release будут работать. Но мой вопрос, как использовать defaultConfig

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Параметр подачи в командной строке, например, " no_x86 "

  1. Добавьте ниже к вашему app/build.gradle

    defaultConfig {
        ndk {
    
            ...
            if (project.hasProperty("no_x86")) {
                abiFilters "armeabi"
            } else {
                abiFilters "armeabi", "x86"
            }
    
            ...
        }
    }
    
  2. Используйте приведенную ниже команду для генерации APK без x86 ABI путем подачи опции no_x86 в команду.

    ./gradlew assemble -Pno_x86
    

    но не вводите параметр no_x86 в команду, если вы хотите создать APK с x86 abi. * * * * * * * * * * * * * * 10 *, чтобы сохранить полный abiFilters в соответствии с вашими требованиями.

    Для определенного buildType вы можете вызвать соответствующую команду построения, передавая или не вводя свойство -Pno_x86. Например. ./gradlew assembleRelease -Pno_x86

Ссылка: https://stackoverflow.com/a/52980193/8034839

0 голосов
/ 19 ноября 2018

Благодаря Мартину я нашел из этого подходящее решение:

when defaultConfig would only have armeabi configured and build-type debug would then add x86, this might work out

Я понимаю, что adding wanted abi to debug - это обходной путь для removing unwanted abi for release

Работает у меня

defaultConfig {
    ndk {
      //abiFilters "armeabi", "x86"
        abiFilters "armeabi"
    }
}

buildTypes {
    debug {
        ndk {
          //abiFilters "armeabi", "x86"
            abiFilters "x86"
        }
    }
    release {
        //ndk {
        //    abiFilters "armeabi"
        //}
   }
}
0 голосов
/ 15 ноября 2018
android {
    buildTypes {
        debug {
            ndk {
                abiFilters "armeabi", "x86"
            }
        }
        release {
            ndk {
                abiFilters "armeabi"
            }
        }
    }
}

productFlavors также будет поддерживать измерение abi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...