gpt4 book ai didi

android - 构建的 apk 包含不需要的资源

转载 作者:行者123 更新时间:2023-12-03 05:01:30 50 4
gpt4 key购买 nike

有一个问题,我们的 Gradle 构建生成的 apk 在 test/resources 中包含一堆不必要的文件目录

我们的应用程序构建 gradle 包含几个本地模块依赖项,这些依赖项构建为 android 库。

我知道有packagingOptions Gradle 中的字段,但据我所知,您不能排除目录。排除每个文件不是一种选择。无论如何,我想知道造成这种情况的根本原因。

应用程序等级构建:

apply from: "${rootDir}/android_application.gradle"

dependencies {
compile project(':local-lib1')
//... etc
compile project(':local-libN')

testCompile libraries['junit']
}

android {
defaultConfig {
versionCode 1
versionName "1.0"

multiDexEnabled true
}
}

和 android_application.gradle:
apply plugin: 'com.android.application'

android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
resources.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}

compileSdkVersion android_sdk_version
buildToolsVersion android_build_tools_version

defaultConfig {
minSdkVersion android_min_sdk_version
targetSdkVersion android_target_sdk_version
}

buildTypes {

}
}

所有模块的结构如下:
module
|
--AndroidManifest.xml
--build.gradle
--assets/
--res/
--src
|
-- main/
| |
| --java/
| --resources/
|
-- test/
|
--java/
--resources/

为什么是 test/resources被包含在apk中?我怎样才能排除它们?

编辑(以显示 lib gradle):

示例库分级:
apply from: "${rootDir}/android_library.gradle"


dependencies {
compile 'com.android.support:multidex:1.0.0'
// ...etc external deps

// test deps
testCompile libraries['logback-classic']
testCompile libraries['junit']
testCompile libraries['mockito-core']
// etc...
}

android {
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}

android_library 分级:
apply plugin: 'android-library'

android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
resources.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}

compileSdkVersion android_sdk_version
buildToolsVersion android_build_tools_version

defaultConfig {
minSdkVersion android_min_sdk_version
targetSdkVersion android_target_sdk_version
}

buildTypes {
release {

}
}
}

我正在使用 gradlew.bat -x test build 构建
test/resources包含在apk中包含对应 test/resources中的所有文件对于每个库。目录(未压缩)的大小为 10mb,因此增加了不合理的数量到整个 apk 的大小。

最佳答案

试试 resource shrinking .根据 Google 文档:“Android 的 Gradle 构建系统支持

resource shrinking": the automatic removal of resources that are unused, at build time, in the packaged app. In addition to removing resources in your project that are not actually needed at runtime, this also removes resources from libraries you are depending on if they are not actually needed by your application


android {
...
buildTypes {
test {
minifyEnabled true
shrinkResources true
...
}
}
}

关于android - 构建的 apk 包含不需要的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824402/

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