草庐IT

ABI_VOLUME_EXPOSURE

全部标签

android - 使用 ABI 拆分启用 externalNativeBuild

我已经从ndk-build切换到cmake构建系统。但是无法使APK拆分功能正常工作。这是我的应用build.gradle文件构建的结果只有一个文件-foo.bar-armeabi-v7a-release-1.5.1.apk。如果我正在为x86模拟器构建应用程序,结果是foo.bar-x86-release-1.5.1.apkbuildscript{repositories{maven{url'https://maven.fabric.io/public'}}dependencies{classpath'io.fabric.tools:gradle:1.+'}}applyplugin:

android - 尝试在我的 Android 应用程序中调试某些 C 代码时获取 "Unknown Application ABI"

我正尝试按照给定的说明在我的Android应用程序中调试C代码here,但是当我执行“Debugas/Nativeapplication”时,我得到了UnknownApplicationABI。我检查了我的NDK路径是否按照建议正确设置了here并且我按照建议将DUMP_APP_ABI选项添加到ndk-buildhere.有人可以帮忙吗?[2013-08-1511:16:14-MyProject]UnknownApplicationABI:[2013-08-1511:16:14-MyProject]Android[2013-08-1511:16:14-MyProject]Unknown

android - Galaxy Nexus - 安装时选择了错误的 CPU ABI

在我的产品中,我发现当我将APK文件安装到运行android4.0.1的GalaxyNexus时,安装了不正确的.so文件。我有一个所谓的“胖”APK,其中包含armeabi、armeabi-v7a和x86的native代码。我发现armeabiCPUABI的.so文件是从APK文件而不是armeabi-v7a.so文件中提取的。如果我从APK文件中删除“armeabi”文件夹,则galaxynexus会正确安装armeabi-v7a文件夹中的.so文件。我已验证nexus的CPUABI是“armeabi-v7a”,它的辅助ABI是“armeabi”。有没有其他人看到这个问题,他们有没

在 build.gradle 中使用 CPU ABI split 时不考虑 Android 产品风格

我想根据http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits根据CPUABI进行APK拆分,但是我只想为特定的产品风格拆分APK。所以我的build.gradle文件具有以下产品风格plain和market。实际上,我希望在构建market风格时执行APK拆分。android{productFlavors{plain{}market{splits{abi{enabletruereset()include'armeabi','armeabi-v7a','x86','mips'universalA

c++ - 从函数返回类型中删除 const 是否会破坏 ABI?

假设我有一个库声明了一个返回const类型的函数:classFoo{...};constFoomakeFoo();现在我想从makeFoo()返回类型中删除const(参见我的previousquestion)。我可以从头文件和cpp文件中删除const,重建库,并将我的代码链接到新库。但是,我也有动态链接到这个库的旧代码,我希望它继续与新版本的库一起工作。那么,第一个问题,从返回类型中删除const会破坏ABI吗?第二个问题,实际代码有很大不同:它是一个模板类,有一个静态成员函数,然后显式实例化://fooMaker.htemplateclassFooMaker{public:sta

c++ - 通过 Itanium ABI 分配的异常内存是否有任何对齐保证?

ItaniumABI指出异常的内存是通过调用__cxa_allocate_exception(size)获得的。返回内存的对齐保证是什么? 最佳答案 Section1.2inchapter4说:Theunwindinterfaceusesapointertoanexceptionheaderobjectasitsrepresentationofanexceptionbeingthrown.Ingeneral,thefullrepresentationofanexceptionobjectislanguage-andimplement

c++ - boost 是否使用 C++11 "inline namespaces"来避免运行时出现 ABI 不兼容错误?

C++11具有称为“内联命名空间”的功能,它允许作者在链接时强制执行ABI兼容性,而无需篡改API。例如,来自@HowardHinnant的这些有用的答案解释了libc++如何使用内联命名空间:Usinglibstdc++compiledlibrarieswithclang++-stdlib=libc++Whycan'tclangwithlibc++inc++0xmodelinkthisboost::program_optionsexample?我的问题是:boost是否利用了这个C++11特性?看起来一些boost开发者至少是thinking最终一次使用它。但是那个线程很旧。它曾经发

c++ - 向函数添加具有默认值的参数是否会破坏 ABI?

标题说明了一切。我将向具有默认值的类的成员函数添加一个参数。该参数属于非平凡类型。这会破坏ABI吗?假设我的新库版本将是M.m.0,它应该可以作为所有使用M.m-1.x的链接应用程序的直接替代品。示例代码://Thesearesomeclasses:baseandchild:publicbase/*Version1.2.3*/classfoo(){public:voiddo_that_stuff(conststd::stringa);}/*Version1.3.0*/classfoo(){public:voiddo_that_stuff(conststd::stringa,constb

c++ - 将枚举器添加到枚举中会破坏 ABI 吗?

特别是,我在库界面中得到了以下代码:typedefenum{state1,state2,state3,state4,state5,state_error=-1,}State;我严格禁止破坏ABI。但是,我想添加state6和state7。它会破坏ABI吗?我找到了here一些提示,但我有点怀疑这是不是我的情况?Youcan...appendnewenumeratorstoanexistingenum.Exeption:ifthatleadstothecompilerchoosingalargerunderlyingtypefortheenum,thatmakesthechangebin

c++ - 在独立类中重新排序公共(public)非虚拟方法是否会破坏 ABI?

更改独立类中公共(public)非虚拟非内联重载方法的顺序是否会破坏ABI?之前:classMyFinalClass{public://...voiddoSomething(charc,inti,intn);voiddoSomething(charc,inti);//...};之后:classMyFinalClass{public://...voiddoSomething(charc,inti);voiddoSomething(charc,inti,intn);//...};谢谢! 最佳答案 函数通过它们的名称和签名链接,而不是通过