我有一个为 Android 构建的 C++ 库,我将其打包为一个 Android 存档 (.aar
),以及一些 Java 类和一个 Manifest。
一切都在 Android Studio 之外完成。打包.aar
,我有一个目录,其中包含:
app/src/main/jniLibs/arm64-v8a/
: 库目录app/src/main/java
: 包含 Java 类的目录 该目录还包含 list 和 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 的调试版本时剥离库。
我发现我可以使用
packagingOptions
禁用剥离,所以我尝试添加 packagingOptions { doNotStrip "**/*/*.so" }
下debug {...}
配置文件的范围。我的问题是 AAR 的调试和发布版本都被剥离了。 AAR 的两个版本看起来确实不同,因为它们的大小不同(因此具有不同的 md5sum)。
我可以在哪里/如何放置我的
packagingOptions
在 Gradle 配置文件中,以便只删除发布版本?谢谢
最佳答案
打包选项在 buildTypes
下指定然后像 Debug
这样的配置或 Release
等等
例子:
buildTypes {
debug {
packagingOptions {
doNotStrip '**/*.so'
}
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
packagingOptions {
doNotStrip '**/*.so'
}
}
}
注意:您在指定的路径中添加了一个额外的目录/*/。
关于android - 如何避免剥离打包在 AAR 中的 native 库仅用于调试构建类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48829644/