【发布时间】:2020-12-21 06:52:31
【问题描述】:
我正在使用 bazel 函数 android_library() 和 android_binary() 来构建 APK。我的 android_library 依赖于使用 cc_library() 构建的本机库。本机库被打包到 APK 中,但我想在 APK 中打包一个额外的本机库。
我试图将额外的库作为依赖项添加到 android_library() 无济于事。它已构建,但未打包到 APK 中。
在我开始迁移到 bazel 之前使用的 build.gradle 中,这是通过使用“sourceSets”部分实现的:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId = 'com.my.runtime'
minSdkVersion 14
targetSdkVersion 26
versionCode = 1
versionName = '1.0'
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_static'
}
}
}
splits {
abi {
reset()
enable true
universalApk false // If true, also generate a universal APK
include "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
sourceSets {
main {
// let gradle pack the additional shared library into apk
jniLibs.srcDirs = ['../additional_lib']
}
}
externalNativeBuild {
cmake {
version '3.15.5'
path 'src/main/jni/CMakeLists.txt'
}
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:26.0.0'
}
我怎样才能通过使用 bazel 函数来实现这一点?
【问题讨论】:
-
android_binary会将其部门中的所有cc_library目标链接到单个.so并将其打包到 apk 中。你的意思是你在.so中没有看到其他cc_library目标,还是你的意思是你有一个预编译的.so想要包含在apk 中? -
我有一个预编译的 .so,我想与从 cc_library 目标生成的 .so 一起打包到 APK 中。
标签: android android-ndk bazel