To'g'ri NDK kompilyatsiya qilingan kutubxonani tanlash uchun ish vaqtida Android Detecting Atom Processor?

Ko'pgina Android qurilmalari kelajakda Atom protsessoridan foydalanadi. Bu shuni anglatadiki, Atom protsessorli qurilmada o'rnatilishi mumkin bo'lgan ilovani yaratishda atom uchun mahalliy kutubxona hamda x86 protsessorini qo'shish kerak bo'ladi. Mening savolim shundaki, qaysi mahalliy kutubxonani yuklashni hal qilishdan oldin qurilmada qaysi protsessor borligini qanday aniqlash mumkin? Qaysi kutubxonani yuklashni tanlashning eng yaxshi usuli qanday?


person Code Droid    schedule 10.04.2012    source manba


Javoblar (1)


Hech narsani qo'lda aniqlashning hojati yo'q. Application.mk faylida toʻgʻri APP_ABI ni koʻrsatib, x86 maqsadli kutubxonangizni yarating (ndk tarqatilishidan docs\Application-mk.html faylini oʻqing):

APP_ABI := armeabi armeabi-v7a x86

Buning yordamida siz libs papkasida uchta kutubxona olasiz. Android ish vaqtida avtomatik ravishda to'g'ri birini tanlaydi.

Agar ish vaqtida aniqlash kerak bo'lsa, NDK bilan tarqatilgan cpufeatures kutubxonasidan foydalanishingiz mumkin. U quyidagi funktsiyani ta'minlaydi:

typedef enum {
    ANDROID_CPU_FAMILY_UNKNOWN = 0,
    ANDROID_CPU_FAMILY_ARM,
    ANDROID_CPU_FAMILY_X86,
    ANDROID_CPU_FAMILY_MAX  /* do not remove */
} AndroidCpuFamily;

/* Return family of the device's CPU */
extern AndroidCpuFamily   android_getCpuFamily(void);

Agar siz Java tomonida bir xil funksiyani bajarishingiz kerak bo'lsa, /proc/cpuinfo faylini o'qib, uning mazmunini tahlil qilishingiz kerak.

person Mārtiņš Možeiko    schedule 10.04.2012
comment
mening ilova sinfim staticstatic qiladi { System.loadLibrary(mylibrary-jni); } bu yerda mylibrary-jni kutubxona faylining nomi. Katalogga asoslangan kutubxona yukini qanday talab qilishni bilmayman. - person Code Droid; 10.04.2012
comment
Iltimos, kutubxona yuklanishini qanday talab qilishingizni yozing, shunda u olib ketiladi. Shuningdek, armeabi armeabi-v7a x86 atom protsessorini kiritishni qanday belgilaydi? - person Code Droid; 10.04.2012
comment
Bu java tomonida qilishingiz kerak bo'lgan hamma narsa - faqat loadLibrary ga qo'ng'iroq qiling. U avtomatik ravishda libs papkasi ostidagi to'g'ri kutubxonani tanlaydi. - person Mārtiņš Možeiko; 10.04.2012
comment
x86 Atom uchun kompilyatsiya qilishni anglatadi. Menimcha, Android x86 uchun minimal talab sifatida Atomni rasman qo'llab-quvvatlaydi. - person Mārtiņš Možeiko; 10.04.2012
comment
Xo'sh, men APP_API sozlamalarini tavsiflanganidek qo'shdim, lekin faqat bitta kutubxona faylini ishlab chiqardim. - person Code Droid; 11.04.2012
comment
API emas, APP_ABI. Android.mk emas, Application.mk fayliga qo'shganingizga ishonchingiz komilmi? - person Mārtiņš Možeiko; 11.04.2012
comment
Ha, men APP_ABI sifatida qo'ydim. U Application.mk faylida emas Android.mk faylida - person Code Droid; 11.04.2012