用 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
1
nicevar 2018-07-25 10:33:35 +08:00
aar 就是一个 zip 包,你直接删除就行了,不过每次这样很麻烦
看描述我觉得是你写的配置有问题,你这个 module 放到一个单独的工程里面单独编译会会有吗?或者在包含的工程里面配置 android.enableBuildCache = false 生成的 aar 看有没有,没有的话就是你某个地方加什么东西导致的 |
2
wenix OP @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> |
3
nicevar 2018-07-25 14:33:04 +08:00
defaultConfig 再加上
``` ndk { abiFilters "armeabi-v7a", "arm64-v8a" } ``` |
4
wenix OP @nicevar 没有作用,我在 src/main/下面加了 jniLibs 目录,然后 gradle 执行 assemble 都去不掉这个,gradle 里面有 mergeReleaseJniLibFolders 和 transformNativeLibsWithMergeJniLibsForRelease 这两个操作,貌似有关,但是不知道在哪里改这个流程...
|
5
nicevar 2018-07-25 17:14:16 +08:00
@wenix 上面那个 ndk 属性应该是管用的,我有 cocos2d 和好几个 jni 项目打 aar 都是没有问题,这个配置还能去除其他第三方的 aar 里面的不需要的 cpu 架构 so,你手动删除一下 build 下的东西再重新打包试试,另外 AndroidStudio 版本不知道你是否是最新的,2.x 的有一个版本是有 bug 的 cmake 里面配置多个它只能生成一个,需要手动处理
|
6
wbbtcool 2019-03-08 16:32:50 +08:00
我也碰到这问题,楼主问题解决了么?
|