gpt4 book ai didi

android - 以一种聪明的方式根据风格排除 JNI 库

转载 作者:太空狗 更新时间:2023-10-29 13:02:25 24 4
gpt4 key购买 nike

我有一个 Android 项目,它使用了一些非常大的原生库。我在这个项目中有几种风格,其中一些没有使用这些库,所以我想将它们从 APK 中排除。

我知道几种实现此目的的方法,但我想在 build.gradle 文件中使用一些不错的代码来减少可能的错误并学习 groovy

我必须提到有一个 bool 值 buildConfigField(在本例中称为 DO_IT)。如果 DO_IT 为假,则 JNI 库将被排除。

这是我现在做的方式:

defaultConfig {
buildConfigField "boolean", "DO_IT", "true"
}

productFlavors {
flavor1 {
// for this flavor JNI libs will be included
}
flavor2 {
// for this flavor JNI libs will NOT be included
buildConfigField "boolean", "DO_IT", "false"
ndk {
abiFilters ''
}
}
}

备注:

1 - 考虑到我有很多口味和大量属性,我不想复制这个 block

ndk {
abiFilters ''
}

但我无法设法将此 block 放入方法中。

2 - 完美的解决方案将排除基于 DO_IT buildConfigField 的库在 defaultConfig 中的 flavor block EG 之外的例程中>.

最佳答案

android-soexcluder应该是要走的路。

步骤如下:

  1. 修改build.gradle 添加依赖。

    buildscript {
    repositories {
    //...
    }

    dependencies {
    classpath 'com.jween.gradle:android-soexcluder:1.1'
    }
    }

    apply plugin: 'com.android.application'
    apply plugin: 'android-soexcluder'
  2. 从您的构建风格中排除 .so

    soexcluder {

    // Remove all so files according to the flavor1
    flavor1 {
    exclude "lib/armeabi-v7a/foo.so", "lib/arm64-v8a/bar.so"
    }
    }

其他选项是为 packagingOptions 添加一个 gradle 参数:Set doNotStrip packagingOptions to a specific buildType

关于android - 以一种聪明的方式根据风格排除 JNI 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com