2015-10-20 30 views
25

我有一些相當大的本地庫,它們擴展了應用程序的二進制大小。我看着APK splitting,但維護和QAing多個APK不是我想要做的事情。Android架構使用?

所以我想使用ndk.abiFilters Gradle屬性在我的發佈版本中排除未使用的體系結構。 (我想單獨保留調試版本,以便我可以在x86上運行HAXM加速模擬器)。

我在考慮在我的發佈版本中只有armeabi-v7a和arm64-v8a,但我不確定是否值得擔心我放棄的其他架構的市場份額。經過很多環顧四周,我找不到任何有關ARMv6(armeabi),MIPS,x86或x86_64市場份額的參考。我的直覺告訴我,後三者幾乎不存在,但我不確定ARMv6。

我發現this link on a forum有一個使用各種體系結構的手機列表。有什麼地方更可靠嗎?也許有類似於Android版本儀表板的用戶的百分比?

如果我只是爲armeabi-v7a和arm64-v8a(或armeabi,armeabi-v7a和arm64-v8a)構建我的本機庫,可能會有其他問題嗎?

回答

23

首先,如果您對二進制大小感興趣,您並不需要arm64-v8a,所有這些設備都可以運行armeabi-v7a二進制文件。只有當你真的需要將最後的額外性能塞進它時,這可能是值得的。

至於armeabi和ARMv6;自從Android 4.4(2013年10月)以來,Android本身不再正式支持它,並且從Android 4.0開始,它應該不那麼常見(從該版本開始,AOSP源代碼需要修改才能爲ARMv6構建)。因此,在實踐中,如果您不支持4.4以下的版本,則可以放棄該版本而不會有任何重大損失。

另外,對於x86;許多這些設備都帶有令人驚訝的模擬手臂二進制文件,所以那些可以使用armeabi-v7a版本也很好。

+2

你是說armeabi-v7a是否真的需要,除非支持<4.4或需要額外的perf從v8a? –

+2

非常。有些x86設備可能不支持arm二進制文件,但我認爲其中大部分都可以。也有mips設備,我不認爲這些包括手臂模擬。儘管(儘管我沒有找到任何統計數據來支持它),但它們相當罕見(可能比x8​​6設備更加罕見的一種擴展順序)。 – mstorsjo

+0

@mstorsjo你能解釋一下如何在所有體系結構中使用armeabi-v7a庫文件嗎?在我目前的方法中,我必須將庫複製到jniLibs/armeabi,jniLibs/armeabi-v7a和jniLibs/x86,這會使apk變大。 –

22

不幸的是,Android Dashboard儘管有用,但並不提供體系結構信息,Google Analytics也不提供。

Unity statistics用於提供statistics per architecture and CPU features。但是,請注意,這些不是一般統計數據,但僅涵蓋Unity應用程序/遊戲的用戶。

該信息似乎無法在公共鏈接中使用,因此我用archive.org中的最新快照替換了直接鏈接。

+0

看來Unity從這些鏈接中刪除了內容。 – Tony

+0

感謝您的通知。我將使用來自archive.org的最新快照更新鏈接 –