仅保留armeabi-v7a对于Android APK是否安全?

7
我有一个使用本地库(snappydb)的安卓APK。本地库需要大量空间,因此我只想保留armeabi-v7a构架下的snappydb
我知道删除其他架构下的snappydb并不是100%安全的,那么我的问题是:这么做有多少风险?(我将失去多少设备/用户?)
仅供参考,我的应用支持的最低SDK版本为16(JELLY_BEAN)。

你的问题不是很清楚——措辞不够精确和明确。你的意思是只想为armeabi-v7a编译和打包snappydb,而不包括其他架构的相同库吗?你所说的“删除其他本地库”是指哪些其他库? - Laogeodritt
抱歉给您带来不便,我的意思是不为其他架构包含 snappydb - huangcd
我会将这留作评论,因为我无法给出一个有充分支持的答案。据我所知,几乎所有的Android设备都是ARMv5或ARMv7(不确定有多少是v5)。去年有一些x86(英特尔)平板电脑,我认为几年前开始出现了一些MIPS设备,但我很少听到它们的消息,据我所知它们并不流行。如果非ARM的市场份额超过5-10%,我会感到惊讶(但再次强调,这只是个人经验,我现在没有任何数据)。但请注意,其中一些x86设备是三星设备。 - Laogeodritt
@Laogeodritt 听起来很合理,感谢您的信息。所以看起来如果我保留armeabi-v7a、armeabi和x86,大多数设备都会被覆盖到? - huangcd
在Android Studio 2.2中,您无法将调试器附加到使用armeabi-v7a架构的正在运行的APK文件。这只是不起作用。 - IgorGanapolsky
2个回答

2

我建议使用Gradle的productFlavors来针对不同的ABI生成不同的APK,因为某些ABI可能包含一些汇编代码优化(如SSE4、SSE5、Arm Neon等)。

android {
    ...

    flavorDimensions "abi", "version"

    productFlavors {
        freeapp {
            flavorDimension "version"
            ...
        }

        x86 {
            flavorDimension "abi"
            ...
        }
    }
 }

如果您正在使用实验性Gradle插件 'com.android.tools.build:gradle-experimental:0.1.0'


android.productFlavors {
        create ("arm7") {
            ndk.abiFilters += "armeabi-v7a"
        }
        create ("arm8") {
            ndk.abiFilters += "arm64-v8a"
        }
        create ("x86-32") {
            ndk.abiFilters += "x86"
        }
        // for detailed abiFilter descriptions, refer to "Supported ABIs" @
        // https://developer.android.com/ndk/guides/abis.html#sa
        // build one including all productFlavors
        create("fat")
    }

非常正确。对于少数架构进行调整的成本是最小的,但对于某些用户来说,否则没有办法使用该应用程序。 - Alex Cohn
@nabil-hachicha 对于Google Play来说,每个ABI使用不同的APK确实是一个好的解决方案。然而,对于其他不支持多个APK的市场,似乎很难找到正确分发我的应用程序的方法。更新也是一个棘手的问题。 - huangcd

0

可能优化 arm-v7a 不会带来太大的收益,目前也没有强制要求包含 64 位版本。但如果你考虑到覆盖 MIPS 和 X86 的设备,它们的拥有者会感激你。


嗨,Alex,你说的“arm-v7a优化不能获得太多收益”是什么意思? - huangcd
通常情况下,编译为 armeabi 的本地代码可以在支持 armeabi-v7a 的设备上正常运行,反之则不然。数值计算算法在为 armeabi-v7a 编译时可能会更加高效,但对于数据库库来说这就不是那么相关了。 - Alex Cohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接