我有一个为Android构建的C ++库,我将其打包为Android存档(.aar
),以及一些Java类和Manifest。
一切都在Android Studio之外完成。要打包.aar
,我有一个包含以下内容的目录:
app/src/main/jniLibs/arm64-v8a/
:带库的目录app/src/main/java
:包含Java类的目录该目录还包含清单和Gradle文件。
以下是build.gradle
目录中的app
:
apply plugin: 'com.android.library'
android {
compileSdkVersion 27
buildToolsVersion "27.0.2"
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:27.0.2'
}
apply plugin: 'maven-publish'
publishing {
publications {
fooapp(MavenPublication) {
groupId 'com.example'
artifactId 'fooapp'
version "develop"
artifact('build/outputs/aar/app-release.aar')
}
}
repositories {
maven {
mavenLocal()
}
}
}
publishToMavenLocal.dependsOn assemble
默认情况下,所有AAR文件都包含库的剥离版本。我不希望在组装AAR的Debug版本时剥离库。
我发现我可以使用packagingOptions
来禁用剥离,因此我尝试在配置文件的packagingOptions { doNotStrip "**/*/*.so" }
范围内添加debug {...}
。
我的问题是AAR的调试版和发布版都被剥离了。 AAR的两个版本似乎有所不同,因为它们的大小不同(因此具有不同的md5sum)。
在哪里/如何将packagingOptions
放入Gradle配置文件中,以便仅剥离发布版本?感谢
答案 0 :(得分:3)
在buildTypes
下指定包装选项,然后在Debug
或Release
等配置下指定。
示例:
buildTypes {
debug {
packagingOptions {
doNotStrip '**/*.so'
}
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
packagingOptions {
doNotStrip '**/*.so'
}
}
}
注意:您在指定的路径中添加了一个额外的目录/*/。