Android Studio 导出含 jni 的 aar 多出 armeabi 两个空目录

2018-07-24 20:54:13 +08:00
 wenix

用 Android Studio 导出一个含 jni(cpp 源码放在 src/main/cpp 下)的 aar,结果目录中除了 jni 目录以外,还多了两个空的 arm 目录,即下面标记*的两个,我查找了 gradle 相关的参数和源码,也没有找到去掉的方法,请问有人遇到过吗?是如何解决的呢?

*arm64-v8a
*armeabi-v7a
drawable
drawable-v24
jni
res
values
AndroidManifest.xml
R.txt
classes.jar
10483 次点击
所在节点    Android
8 条回复
nicevar
2018-07-25 10:33:35 +08:00
aar 就是一个 zip 包,你直接删除就行了,不过每次这样很麻烦
看描述我觉得是你写的配置有问题,你这个 module 放到一个单独的工程里面单独编译会会有吗?或者在包含的工程里面配置 android.enableBuildCache = false 生成的 aar 看有没有,没有的话就是你某个地方加什么东西导致的
wenix
2018-07-25 14:04:09 +08:00
@nicevar 感谢回复。我这个就是单独的工程,不过是从 application 改成 library 的,其他的都没有变化。不过不管是放在 APP 里面的 module 还是这种改的独立 library module,最终生成的 aar 都有这种多余的 armeabi 目录,不知道是不是 ndk 和 CMake 两个各生成了一份,用 AS 比较少,翻了不少资料,也没搞定这个问题...

build.gradle 内容如下:
<pre>
apply plugin: 'com.android.library'

android {
compileSdkVersion 26
defaultConfig {
minSdkVersion 26
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
jniDebuggable true
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
android.enableBuildCache=false

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
</pre>
nicevar
2018-07-25 14:33:04 +08:00
defaultConfig 再加上
```
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
```
wenix
2018-07-25 15:44:37 +08:00
@nicevar 没有作用,我在 src/main/下面加了 jniLibs 目录,然后 gradle 执行 assemble 都去不掉这个,gradle 里面有 mergeReleaseJniLibFolders 和 transformNativeLibsWithMergeJniLibsForRelease 这两个操作,貌似有关,但是不知道在哪里改这个流程...
nicevar
2018-07-25 17:14:16 +08:00
@wenix 上面那个 ndk 属性应该是管用的,我有 cocos2d 和好几个 jni 项目打 aar 都是没有问题,这个配置还能去除其他第三方的 aar 里面的不需要的 cpu 架构 so,你手动删除一下 build 下的东西再重新打包试试,另外 AndroidStudio 版本不知道你是否是最新的,2.x 的有一个版本是有 bug 的 cmake 里面配置多个它只能生成一个,需要手动处理
wbbtcool
2019-03-08 16:32:50 +08:00
我也碰到这问题,楼主问题解决了么?
smdt
2021-01-12 18:47:19 +08:00
@wbbtcool 也遇到了 你解决了吗
wbbtcool
2021-01-15 16:24:18 +08:00
@smdt 没有解决,功能不影响,但是看着糟心。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473812

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX