关于 ndk { abiFilters ‘arm64-v8a‘ } 与splits { abi { include “arm64-v8a“}}的互斥冲突

2023-10-09 08:15

本文主要是介绍关于 ndk { abiFilters ‘arm64-v8a‘ } 与splits { abi { include “arm64-v8a“}}的互斥冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 官网通知,从 2019 年 8 月 1 日开始,您在 Google Play 上发布的应用必须支持 64 位架构。64 位 CPU 能够为您的用户提供更快、更丰富的体验。

如果想要打出的 一个apk包, 包含多个架构的 so('arm64-v8a','armeabi-v7a')库 需要下面的配置:

android {... // 其它配置defaultConfig {...  // 默认配置ndk {//选择要添加的对应cpu类型的.so库。abiFilters 'arm64-v8a', 'armeabi-v7a'// 还可以添加// 'armeabi',// mips,mips64,  //  x86_64, //  armeabi,  // 'x86',  }}... // 其它配置
}

如果想要打包多个不同so架构的 apk 包,可以使用 ABI 拆分,需要下面的配置:

这个会打包 一个arm64-v8a apk包  和打包一个armeabi-v7a apk包

android {... // 其它配置splits {abi {reset()//重置 ABI 列表为只包含一个空字符串(与 include 一起使用可以表示要使用哪一个 ABI,而不是要 exclude 哪些 ABI)enable true // 设为true,才能启用ABI拆分机制在打包时根据架构生成不同的apk文件universalApk false  // If true, 构建支持所有平台abi类型,构建一个包,包含多个架构的so(只要代码中有的都会打进去)include "arm64-v8a","armeabi-v7a" // 设置所有要支持的abi类型,构建多个包,每个包只包含一个架构的soexclude "x86"   // 设置所有不要支持的abi类型}}
}

这种配置是没有办法让打出的 apk 只包含自己想要的多种so架构的。因为 ABI 拆分当中的 include 是和 ndk abiFilters 互斥的操作!!

ERROR: Conflicting configuration : 'arm64-v8a' in ndk abiFilters cannot be present when splits abi filters are set : arm64-v8a

解决方案: 

如果两种方式分开配置都可以运行;

两种方式一起配置在不报错的情况下(ABI拆分注调include),ABI 拆分不生效;

多架构的apk只能使用abiFilters

这篇关于关于 ndk { abiFilters ‘arm64-v8a‘ } 与splits { abi { include “arm64-v8a“}}的互斥冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/171531

相关文章

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

六、Maven依赖管理、依赖传递和依赖冲突

1.Maven依赖管理 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。 我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动

[数据结构] 哈希结构的哈希冲突解决哈希冲突

标题:[C++] 哈希结构的哈希冲突 && 解决哈希冲突 @水墨不写bug 目录 一、引言         1.哈希         2.哈希冲突         3.哈希函数  二、解决哈希冲突 1.闭散列  I,线性探测 II,二次探测 2.开散列 正文开始: 一、引言         哈希表是一种非常实用而且好用的关联式容器,如果你刷过不少题,

MyBatis学习——解决字段名与实体类属性名不相同的冲突

转载地址:http://www.cnblogs.com/xdp-gacl/p/4264425.html

解决caffe 编译过程中protobuf版本冲突的问题

在编译caffe python3版本时一直会出现如下错误,(安装caffe python3具体方法可参考:https://blog.csdn.net/tingtie1438/article/details/82085199 ): 通过其错误信息可知是protobuf出了问题,现在网上教程一般都是默认安装的 libprotobuf-dev 和 protobuf-compiler,对于pytho

Java并发:互斥锁,读写锁,Condition,StampedLock

3,Lock与Condition 3.1,互斥锁 3.1.1,可重入锁 锁的可重入性(Reentrant Locking)是指在同一个线程中,已经获取锁的线程可以再次获取该锁而不会导致死锁。这种特性允许线程在持有锁的情况下,可以递归地调用自身的同步方法或代码块,而不会因为再次尝试获取相同的锁而被阻塞。显然,通常的锁都要设计成可重入的。否则就会发生死锁。 synchronized关键字,就是

git 合并远程分支(带冲突)

应用场景 团队中两人同时fetch了一个分支。 第一个人修改后提交,第二个人提交就失败。失败信息如下: error: failed to push some refs to 'git@git.oschina.net:jacarrichan/jacarrichan.git'   hint: Updates were rejected because the remote contains

[VC] Visual Studio中读写权限冲突

前置场景: 编译没有报错,但是运行提示 内存异常: 情景1: 如下代码运行异常,提示引发了异常:写入权限冲突。*** 是 0xFFFFF..... char* str = (char*)malloc(10);str[0] = 0x30;  解决方案:要包含头文件<stdlib.h>  情景2: 在FileA文件调用FileB文件的函数,但是在FileA中却没有声明该B函数的原型

三个同步与互斥问题之生产者与消费者

#include<stdio.h> #include<pthread.h> pthread_mutex_t  mutex; #define Max 10 pthread_cond_t pro; pthread_cond_t con; int buffer=0;//全局变量----一开始为0,只有生产者可以执行 void deal_produce(

三个同步与互斥问题之哲学家就餐

#include<stdio.h> #include <semaphore.h> #include<pthread.h> //筷子作为mutex   pthread_mutex_t chopstick[5] ;   int eatnum[5]={5,5,5,5,5}; void *eat_think(void *arg)   {       int i= *(cha