Да се научим да работим с Android NDK или как да се използват в код в Java проекти
Този урок се отнася към категорията на напреднали. Разбираемо е, че читателят има някои умения, по-специално
Ако някой от тези елементи ви създава проблеми, това няма значение, все още можете да хванете доста представен материала, обаче, някои стъпки, които ще изглеждат доста сложни. Всъщност под въпрос използването на Android NDK често е трудно дори за закоравели разработчици. Най-вероятно ще трябва да положи значителни усилия, преди да можете да настроите вашата среда за разработка и пишат работен проект.
Когато се налага да използвате Android НДК?
Обикновено разработчиците решат да използват родния код по два начина: те искат да увеличат производителността на приложенията си, или те имат проект готов C / C ++, която искате да икономически ефективен при преминаване към Android. Да не се бърза да излезе и да разберат, а когато това е препоръчително да се използва НДК, а когато не е необходимо да се направи.
Повечето програмисти често се предполага, че НДК трябва да се използва, когато приложението е интензивно процесора. Има алгоритми, за да се зареждат напълно процесора чрез DalvikVM, в този случай, използването на родния код е наистина най-вероятно ще се получи подобрение на производителността. Въпреки това, ние не трябва да забравяме, че използването на JIT компилатор също ви позволява да се подобри ефективността на Java код. Много хора смятат, че използването на заявлението в машинен код автоматично означава увеличаване на скоростта на заявлението. В действителност не е така. Преминаване от извършване на Java код в родния код и обратно носи отгоре, така че използвайте НДК е на стойност само ако сте извършили всяко дълго сложно изчисление, написана изцяло на C, а в кода на Java не е предназначена да чести спазми на типични функции.
Друга причина, която може да ви насърча да използвате НДК е необходимостта да пренасяте приложения готови. Логично е да не се пренапише вече доказани и рационализирани парчета код за Java, и да използвате НДК. Този подход ще ви позволи по-нататъшно евтино правят паралелни промени в оригинала и при преминаване към Android приложение. По-специално, този подход е оправдан по отношение на приложенията, използващи OpenGL ES.
Стъпка 1: Инсталирайте и конфигурирайте среда за разработка на Android NDK
На първо място, трябва да се skachatAndroid НДК. За монтаж и нормална работа, ние също трябва инструменти Cygwin 1.7 или по-възрастни, AWK-новата версия, както и GNU Направи 3.81 или по-късно.
След като сте изтеглили файла на НДК, го разархивирайте в папка. Можете да разопаковате архива там, където е най-Android SDK. Пътят до папката, в която трябва да се регистрират в променливата PATH на системата. В Windows за тези цели е по-добре да изберете Cygwin.
Стъпка 2: Създаване на нов проект
Създаване на нов Android проект. За да се избегнат проблеми в бъдеще, освен на проекта, така че пътят към него не съдържа интервали знаци. Така например, създаване на проект, изберете "com.mamlambo.sample.ndk1", както е името на пакета, както и дейност - "AndroidNDK1SampleActivity".
В основата на проекта, да създадете папка, наречена "JNI". Той е тук, че ще съдържа местните кодови файлове. Ако не сте запознати с JNI, ще се радваме да се знае, че Android НДК е по същество JNI с ограничен набор от заглавни файлове за съставяне на код С.
Стъпка 3: Добавяне на кода за C в проекта за Android
Създаване на папка във файл, наречен JNI native.c и добавете следния код
По този начин е създадена отнема параметъра функция в Java String обект, той се превръща в С-низ и пише LogCat. Яростни име на функция не е случайно, носи важна информация: първо, показва име на модел ( "Java"), следвана от името на пакета, името на класа и името метод. Всяка част от името отделя чрез подчертаване.
Първите две параметрите на функцията са от особено значение. Първият параметър определя JNI среда и често се използва с помощни функции. Вторият параметър е обект на Java, която е част от функцията.
Стъпка 4: Поканата родния код от Java
Нека създадем бутона ни проект, когато се натисне, ще се обадя на следния код:
Необходимо е също така да се декларира функция helloLog в класната стая, където тя се нарича. Може ли да се направи през линия
По този начин, ние казваме на компилатора и свръзката, че изпълнението на тази функция трябва да изглежда в родния код папка.
И накрая, трябва да изтеглите от библиотеката, която в крайна сметка ще бъде съставен код. Добавете следния инициализация на класа на активност.
System.loadLibrary () осигурява зареждането на името на библиотеката. Можете да използвате всеки име.
Стъпка 5: Създаване на производител на файла за родния код
За да компилирате родния код в JNI папка трябва да направим файл с име "Android.mk". По-долу е кода за този колан за нашия пример, това е, когато функцията е в native.c файл и като името на библиотеката е посочено ndk1 на
Етап 6: Изготвяне родния код
След като сте се записва кодът и добави грим файл в папката JNI, можете да започнете съставянето. За да направите това в командния ред (ако използвате Windows, стартирайте Cygwin) тичам НДК-изгради от папката на проекта. НДК-изгради инструмент е част от Android НДК. Ако сте направили всичко правилно, трябва да видите нещо подобно
Стъпка 7: Изпълнението на приложението
Сега можете да стартирате проекта, натиснете бутона и да видим как LogCat промени.
Това може да се случи едно от следните две неща: 1) на вашия проект могат да започнат и да работят както бихте очаквали. В този случай, моля, приемете моите поздравления. 2) Няма да има грешка, която LogCat показва като "не можа да се изпълни начин на действие." Всичко е наред. Eclipse обикновено се конфигурира така, че когато започнете проект е това прекомпилирани автоматично. Ако тази опция е изключена, трябва ръчно да направи Eclips компилирате проекта. За това преди да започнете трябва да се обадите menyuProject-> почистете от лентата с инструменти на Eclipse.
Стъпка 8: Как да изведе обект от родния функция
Следващият пример показва способността на нативния функцията връща обект, като String. Добавете кода в native.c на файла
С изчистване екип, ние създадохме буфер, който след това се поставя с помощта на sprintf линия. Функция за връщане на правилния резултат, ние използвахме JNI помощник функция NewStringUTF (), който всъщност създава Java обект на базата на C линия. След това, ние сме изчиства паметта с командата безплатно ().
За да може успешно съставяне на проекта, което трябва да включва native.c stdio.h заглавния файл. Класът дейност също трябва да обявят нова функция:
след това с getString функция може да работи, например, както следва:
Android NDK за работата им изисква SDK за Android 1.5. С НДК да получите достъп до много API, например за OpenGL ES.
заключение
Е, това е всичко. Мисля, че сега е ясно, за да ви как се работи с родния код. В много случаи използването му е оправдано, но без мисли за употреба родния код в своите проекти могат да бъдат опустошителни.