Naptár

április 2024
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Android

Az android az okos telefonokon futó operációs rendszerek egyike. Nyílt forráskódjának, bárki számára hozzáférhető fejlesztő rendszerének köszönhetően bárki írhat rá saját programokat. Ezt szeretném én is segíteni.

Friss topikok

Az androidos fejlesztői környezet létrehozása

2012.07.27. 11:12 | Takács Ferenc bp. | Szólj hozzá!

A leírást még 2011 áprilisában készítettem. Azóta az itt nevezett források elavultak, a legújabb verziót keressük meg belőlük. Ez annyiban nem probléma, hogy ha a legfrissebb verziókat is írnám be, akkor sem kerülhetnénk el ezt az ellenőrzést, révén elég gyakoriak a frissítések.

(A leírás nagyrészt túlhaladott, bár használható, mivel az android fejlesztők kijöttek azóta egy komplett fejlesztői csomaggal <ADT Boundle for Windows>, ami a 2.,5.,6.,7. lépéseket teljes egészében magában foglalja, és a 3., lépést is egy adott android célrendszer csomaggal, amit általában bővíteni kell a többi cél rendszer verziókkal is. A natív kódú környezet létrehozására is van egy új alternatíva, amivel a c, és c++ kódok szerkesztése, és használata is egyszerűbb lett, tehát az eclipse-ben szerkeszthetem, és automatikusan indul a fordítás. Ugyanezen a poszton ír a c, c++ kódú programok hibakereséséről is linux alól, de ezzel én még nem birkóztam meg windows-ban, mivel az ott leírt források azóta már megváltoztak. 2012. december)

(A leírás elavult. A Google már nem támogatja tovább az eclipse alatti fejlesztéseket, kizárólag az ADT fejlesztői környezet lesz támogatva a jövőben. 2016. november)

Az androidos telefonokon java nyelven írt programok futtathatók. A telefon erőforrásai előre definiált osztályokon keresztül érhetők el az android.jar könyvtárban.

1. Le kell tölteni, és installálni kell a Java SE Development Kit-et.
például: jdk-6u24-windows-x64.exe
2. Le kell tölteni, és installálni kell az Android SDK Tools-t.  (Android SDK and AVD Manager)
installer_r10-windows.exe
3. Ebben azután különféle androidos platformokat kell installálni, különösen az "SDK Platform Android 2.2, API8, revision 2"-t, de a minta programok miatt másokat is érdemes  (,valamint a ADP-s Nexus készülékekhez "Google USB Driver package, revision 4"-t).
4. A felhasznált androidos (nem ADP-s) telefonhoz való USB driver letöltése, és installálása.
http://developer.android.com/sdk/oem-usb.html
Például: "usb_drivers_GalaxyS_x64.zip"
vagy "SAMSUNG_USB_Driver_for_MobilePhones_x86.exe"
Sokszor a legjobb megoldás a telefonhoz ajánlott felhasználói adatkezelő-szinkronizáló program installálsa, mert ezek az USB drivereket is tartalmazzák (Samsung Kies, HTC Sync).
5. Le kell tölteni az "Eclipse IDE for Java Developers" fejlesztői környezetet. (A kicsomagolt zip futtatható verzió, külön 32, vagy 64 bites, így nem kell installálni.)
http://www.eclipse.org/downloads/
például: eclipse-java-helios-SR2-win32-x86_64.zip
Az Eclipse indításakor bekéri a munkakönyvtár nevét, ahova menti a project-ek adatait.
6. Az Eclipse számára elérhetővé kell tenni az Android fejlesztői környezetet.
"Eclipse/Help/Install new software.../Add"
 Name: "ADT Plugin"
 Location: "https://dl-ssl.google.com/android/eclipse/"
7. Valamint meg kell adni az Android SDL and AVD Manager elérési útvonalát.
"Eclipse/Windows/Preferences/Android/SDK Location/Browse"
például: C:\Program Files (x86)\Android\android-sdk
8. El lehet kezdeni a fejlesztést. A meglevő project-eket vagy az "File/Import.../General/Existing Project into Workspace",
vagy főleg a mintapéldákat a "File/New/Android Project" funkcióval hozhatjuk be.
9. Az androidos telefonon egyrészt kell lennie USB csatlakozónak, másrészt a telefonon a "Beállítások/Alkalmazások/Fejlesztés/USB-hibakeresés" funkciót be kell kapcsolni, mielőtt rádugnánk a PC-re. Ellenkező esetben az Eclipse nem látja, csak a PC Cserélhető lemezként. Tapasztalatom szerint ezt az opciót nem szabad váltogatni, mert ha a PC egyszer már látta Cserélhető lemezként, akkor egy újabb boot-olásig már nem akarja másként látni. A futtatás|debuggálás gombnyomásra indul (letöltéssel együtt). Az Eclipse-ben jobbra fent váltjuk a perspektívákat (java|debug|DDMS). Ez utóbbiban láthatjuk a telefon fájlrendszerét is (még a linuxos Davlik-ot is, amelyen belül az /mnt/sdcard/ tartalmazza a PC-ről látható részt), és egyenként ugyan, de kezelhetünk fájlokat a Pull|Push gombokkal.

Bár az Eclipse fejlesztés támogatása elég bőséges, és kényelmes, a Java nyelvleírás nincs benne, azt külön érdemes letölteni (java-langspec-3.0.zip). Mivel a legtöbb készülék-kezelési módszer sehol sincs leírva, ezért gyakran kell keresnünk mintaprogramokat az interneten, hogy lássuk, mások hogyan boldogulnak. A leírás Windows alatti fejlesztésre vonatkozik, ami csak kicsit különbözik a linux alóli fejlesztéstől, és bár próbálkoztam Ubuntuval is, de végül épp a legutolsó lépést, a telefonnak való USB összeköttetést nem sikerült beállítanom, így megmaradtam a Windowsnál.



Következő lépés, androidos native kódú programozás fejlesztői környezet létrehozása Windows alatt. Ez lehetővé teszi, hogy az androidos java programokhoz c, vagy c++ kódú könyvtárakat készítsünk, amellyel jelentősen felgyorsíthatjuk egyes, számolásigényes feladatok futásidejét.Ezzel persze éppen elég már akkor foglalkozni, amikor a java programjaink jól működnek, vagy esetleg nincs is erre szükségünk.

B.1. Előletételezésként installálva kell lennie az eclipse-nek, és a hozzá tartozó androidos sdk-nak. Ennek módja korábbról már ismert, most nem lesz erről szó.
 
B.2. Installáljuk a Cygwin környezetet. Ez egy rövid setup.exe program letöltésével indít, amit a később gyakran kell használni a Cygwin környezet bármiféle módosításakor, tehát nevezzük át Cygwin-setup.exe-nek, és olyan helyre tegyük, ahol könnyen elérhető lesz. Ezután indítsuk a setup-ot, és egy szintén könnyen elérhető helyre (pl.<c:/cygwin>) installáljuk a cygwin-t. Célszerű a setup progra,ot is ide tenni.
 A Select Packages ablaknál szükség lesz a c, és c++ fordítók kijelölésére:
Devel/make
Devel/gcc-g++
ezekkel együtt más függő csomagok is letöltődnek.
Csomagok később is kezelhetők ugyanezzel a setup programmal.

B.3. Android NDK letöltése az android site-ról. Ez csak egy zippelt csomag. Lehetőleg rövid, egyszerű nevű helyre bontsuk ki, mert sokat kell majd parancssorban hivatkozni rá (pl.<c:/cygwin/ndk>).

B.4. A csomag Androidos java mintaprogramokat is tartalmaz c, és c++ könyvtárakkal, amelyek a "File/new/Android Project" parancsal behozhatók az előzőleg installált Eclipse-be. A c, és c++ programrészek a projecten belül jni folderben találhatók az Android.mk, és esetleg az Application.mk fájlokkal együtt, amik sajnos nem fordulnak automatikusan.

B.5. Cygwin egy unix-os parancsmódu ablakot biztosít, amelyben

cd <androidos project>/jni
parancsal be kell menni a lefordítandó project-ünk jni directory-jába, és itt kell kiadnunk
c:/cygwin/ndk/ndk-build
parancsot, ami lefordítja a c, és c++ programrészeket.

B.6. Ezután újra kell fordíttatni a project-et az Eclipse-ben, hogy a lefordított c, és c++ részek bele kerüljenek az andoridos alikációba. Tehát ki kell adni a Project/Clean.. parancsot.

B.7. megjegyzések:
A "c:/cygwin/ndk/ndk-build" parancs akkor működik csak megelelően, ha egy <androidos project>/jni folderben vagyunk, ahol is van egy Android.mk file a szükséges opciók, a célkönyvtár nevének, és a forások megadásával.
pl:
    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE    := hu_taxi_Lamp
    LOCAL_SRC_FILES := lamp.c
    LOCAL_LDLIBS    := -ljnigraphics -llog
    include $(BUILD_SHARED_LIBRARY)

A java programban kell lennie egy jni könyvtárbetöltésnek, és, a java programban definiálni kell a könyvtás belépési pontokat, pl:

    package hu.taxi.lamp;
    public class LampActivity {
        static {
            System.loadLibrary("hu_taxi_Lamp");
        }
        private native void JniMyFunc(Bitmap bmp);
    }

A lamp.c programban is definiálni kell ezeket a pontokat, pl:

    JNIEXPORT void JNICALL Java_hu_taxi_lamp_LampActivity_JniMyFunc(JNIEnv *env, jobject obj, jobject bitmap) {
    
Mint látható, c-ben két további paramétert is kapunk, és a belépési pont neve is meghatározott:
     "Java" packagename classname functionname
, ahol is aláhúzással kötünk, és helyettesítjük a pontokat.

A bejegyzés trackback címe:

https://takacs-ferenc-android.blog.hu/api/trackback/id/tr514681456

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása