gpt4 book ai didi

使用 Gradle 和产品风格构建的 Android 不包括库

转载 作者:搜寻专家 更新时间:2023-11-01 08:48:29 25 4
gpt4 key购买 nike

我有一个可以使用 Gradle(使用 Gradle 0.7)成功构建的 Android 应用程序。现在我想设置 Gradle 来构建两个单独的 .APK,一个只有 ARM native 库,另一个只有 Intel x86 native 库。我已尝试使用 productFlavors,如下例所示:
How to configure NDK with Android Gradle plugin 0.7
但是,由于在我的 Gradle 脚本中指定了 productFlavors,.APK 根本不包含任何库(libs 目录本身不在 .APK 中)。在没有 productFlavors 的情况下,将包含这些库 - 尽管生成的 APK 将同时包含 ARM 和 x86 库。

使用 Gradle,我们的库似乎被放置在以下目录中:build/javaResources/release/lib/armeabi-v7a
构建/javaResources/release/lib/x86
build/javaResources/debug/lib/armeabi-v7a
构建/javaResources/调试/lib/x86
如果 Gradle 脚本中没有 productFlavors,Gradle 似乎知道在这些目录中查找库。所以我不知道发生了什么。为什么包含 productFlavors 会阻止 Gradle 在那里寻找库?

最佳答案

关于您所指的示例,您使用的是主帖中的 fragment 还是最佳答案中的 fragment ?主帖中的那个有点过时,也许这就是它不适用于您的项目的原因。

您必须在 productFlavors 中使用 abiFilter 属性,并将您的 native 库放在 jniLibs 文件夹中。这是一个示例 build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 20
buildToolsVersion "20"

defaultConfig{
minSdkVersion 15
targetSdkVersion 20
versionCode 101
versionName "1.0.1"
}

flavorDimensions "abi"

productFlavors {
x86 {
flavorDimension "abi"
ndk {
abiFilter "x86"
}
versionCode 5
}
arm {
flavorDimension "abi"
ndk {
abiFilter "armeabi-v7a"
}
versionCode 2
}
all {
flavorDimension "abi"
versionCode 0
}
}

// make per-variant version code
applicationVariants.all { variant ->
// get the version code of each flavor
def abiVersion = variant.productFlavors.get(0).versionCode

// set the composite code
variant.mergedFlavor.versionCode = abiVersion * 100000 + defaultConfig.versionCode
}
}

请注意,在此示例中,我还为每个 productFlavor 修改了应用的版本代码,因此它可以正确地与 Play 商店中的多个 APK 处理功能配合使用。

您可以在此处获得有关所有这些工作原理的更多背景信息:http://ph0b.com/android-studio-gradle-and-ndk-integration/

关于使用 Gradle 和产品风格构建的 Android 不包括库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877573/

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