2013-05-14 46 views
2

我有一個只能在ARM CPU上運行的Android應用程序。這是由於我在APK中包含了ARM可執行文件。但是,經過一番搜索之後,我一直無法找到任何指示(在清單文件或類似的文件中)應用程序不會在其他體系結構上運行如何指示Android應用程序僅支持ARM CPU?

通常情況下,要包括本地代碼的應用程序包括一個共享庫。在這種情況下,該應用只會在Play商店中顯示給具有兼容CPU的用戶。但是,使用共享庫不適用於我的應用程序。

有沒有在該項目的清單文件中的一些地方或別的地方,我可以明確地指示CPU架構的應用程序支持?

+0

http://developer.android.com/google/play/filters.html#other-filters: _包含以特定CPU架構[..]爲目標的本機庫的應用程序僅在支持該架構的設備上可見架構._ 我還沒有Google開發者帳戶,但也許您可以在Playstore中發佈您的應用時添加過濾器。 – kelunik

回答

0

但是,使用共享庫是不是我的應用程序的選項。

從理論上講,它應該是。用NDK創建一個與JNI無關的小型庫,並且只爲您的打包二進制文件支持的體系結構(例如,ARMv5和ARMv7)構建它。你可能甚至不需要使用庫(儘管我會設置一個引用它的Java類是安全的,至少在初始測試期間)。那麼應該就足以觸發Play Store過濾器,即使您在運行時從未實際調用代碼。

IOW,使用NDK的東西只是爲了過濾。

就個人而言,我會重寫你的命令行二進制是一個NDK內置JNI兼容庫,因爲性能原因,但是這只是我。

+0

嘿 - 現在很聰明!好想法! –

+0

@NathanOsman:測試這個理論的一個方法是,看看摩托羅拉RAZR i是否被列爲受支持的設備,因爲這是一款基於x86架構的手機,我認爲這絕對支持Play商店。 – CommonsWare

0

這可能就是你正在尋找

TextView tv_showArch_View = (TextView)findViewById(R.id.ShowCPUArch); 
     String CPU_ABI = Build.CPU_ABI; 

     tv_showArch_View.setText(CPU_ABI); 

它退還給我

ARMeabi用於仿真器上ARM processor

X86的模擬器中運行上運行Intel processor

如需更詳細的信息,你可以去通Google's Official Documentation

+3

是的,但這並不妨礙應用程序在Play商店中顯示給x86或MIPS CPU的用戶。 –

相關問題