Egyszerűbbé vált az Android alkalmazások WP7-re portolása
2011-06-10T22:02:29+02:00
2012-08-15T08:10:40+02:00
2022-07-19T01:12:55+02:00
  • Igazából főleg a droidon is azért jó a C++, mert jó sok linuxos progit viszonylag könnyen lehet így portolni. Pl. free heroes2, dosbox, GemRB, vcmi, stb.
    Mutasd a teljes hozzászólást!
  • És több tucat fényévvel lenne lassabb mint a managed kód, ráadásul az elfogyasztott energia miatt elsötétülne Paks környéke. Próbáld ki egyszer Androidon Pl. a DosBOX-ot. Natív C++, mégis a 600 Mhz-es ARM procin a 4 Mhz-es XT-n simán futó DOS-os játék igencsak köhög. PC-n is csak azért futnak többé-kevésbé gyorsan a vmware és társai mert a kód nagy része natívan fut. Ahol nincs ilyen, csak szoftveres emuláció, ott még az x86-os erőművek is megizzadnak ha procit kell emulálni.
    Mutasd a teljes hozzászólást!
  • Én is úgy tudtam, hogy a natív kód nem a VM-ben fut.
    Mutasd a teljes hozzászólást!
  • Ez hülyeség, de úgy az egész hozzászólás. Azért jött ki C++ támogatás az Androidhoz, hogy a meglévő kódokat könnyen lehessen portolni rá (játékmotor, opencv, ffmpeg, sip stack, millió más open source cucc, amit eddig senkinek sem volt kedve átportolni Java-ra, de C#-ra sem). C# támogatással semmivel sem lettek volna előrébb ebből a szempontból, nem véletlenül nem jelentek meg komolyabb engine-nel játékok WP7-re (Androidra se jelentek volna meg, ha át kellett volna portolni az egészet C++ról Java-ra). Külön poén, hogy a Unity3D részben C# alapú, de nem támogatja a WP7-et, Androidon, iOS-en monodevelop felett/alatt fut.

    Azt pedig rólad se gondoltam volna, hogy ilyet leírsz, hogy az NDK-s C++-os programok szerinted virtuális gépen futnak, remélem úgy gondoltad, hogy virtuális gép mellett. Egyedül annyi köze van a C++ kódnak a Dalvikhoz, hogy C++ból lehet Java kódot hívni, és fordítva, de amúgy természetesen gépi kódra fordul. Tehát ha c++ból java kódot hívsz, akkor az persze továbbra is Dalvikon megy (pl ha az Android GUI-ját vagy egyéb API-ját használod), de ha egy komolyabb játékot futtatsz, akkor ott a kód 99%-a C++, ami nem dalvikon fut. A maradék 1% hív Java kódot, az is csak azért, mert kezdetben nem volt semminek sem C++-os interfésze, és nem is lehetett önálló, csak C++-on alapuló kódot futtatni, mert, ahogy említettem nem volt semmilyen Android API elérhető, csak az OpenGL ES 2 (ebből is látszik, hogy mi volt az NDK létrehozásának elsődleges célja).
    2.3 óta már lehet tisztán csak C++-os alkalmazást írni, és egyre több API-nak van C++-os interfésze is, de a fő nyelv természetesen marad Java.

    Konkrét példák, ahová nem elég a C#/Java:
    videokodek, fizikai motor, grafikus motor, képfeldogozás, hangfeldolgozás
    aki meg azzal jön, hogy a Java/C# 5-30%-al lassabb csak, mint a C++, az nagyon el van tévedve.
    Mutasd a teljes hozzászólást!
  • De miért nem lehetne az, hogy a virtuális gépen futna a C++ app, akkor ugyanúgy menne az újabb procikon.
    Mutasd a teljes hozzászólást!
  • Azóta teltek s múltak az idők és lassan itt a Windos 8/Windows RT/Windows Phone8, szóval ez a portolásos téma tárgytalan így ebben a formában C++ vs C++.
    Mutasd a teljes hozzászólást!
  • A C++/NDK JNI-t hasznal, ergo a nativ kodot nem a VM futtatja.
    Mutasd a teljes hozzászólást!
  • Android alá sem volt eredetileg C++ fejlesztőkészlet, és oda is csak azért lett, mert ugye a C# szóba sem jöhetett. Ha nem a főellenségé lett volna a C#, szerintem a Google is inkább ahhoz adott volna ki készletet a Java mellett. Mert amúgy Android alatt is ugyanúgy a Dalvik virtuális gépen futnak a C++-os NDK-val készült programok is, mint a Java-ban írtak - tehát sebesség és egyéb szempontból ott is ugyanaz a helyzet, mint WP7 alatt.
    Mutasd a teljes hozzászólást!
  • Ezeket én is tudom, csak azért mégis legalább a játékfejlesztlés területén az Androidhoz hasonlóan ki lehetne valamit találni. Jobb lenne, mint szórakozni Java/ObjC konvertálással, amit ráadásul ezen a területen nem is nagyon használ amúgy sem senki.
    Mutasd a teljes hozzászólást!
  • Valószínűleg azért, mert a C++ nem menedzselt nyelv - márpedig a MS-nak a WP7-re nyilván csak menedzselt, virtuális gépen futó kódot szabad beengednie. Egyrészt biztonsági szempontból (itt a felhasználó és adatainak védelme mellett a DRM és carrier megfontolásokra is gondolni kell), másrészt azért is, hogy a rá készült alkalmazások minden jelen- és jövőbeli WP7 telefonon futhassanak (amikben igazából akármilyen proci is lehet ha kizárólag virtuális gépen fut rajtuk minden).

    A C++-nak ugyan van egy menedzselt változata (C++/CLI), de ennek támogatása semmi pluszt nem hozna, hiszen sebességben ugyanott lennél vele, mint a C#-pal, és nyilván a hagyományos C++ kódok 99%-a sem lenne helyből fordítható alatta, hanem hegeszteni kellene rajtuk. Innentől kezdve viszont akkor már C#-ra is lehet portol(tat)ni a kódot, mert az sincs azért fényévekre a C++-tól.

    Szóval szerintem azért nincs - és valószínűleg nem is lesz - natív C++ API ill. fejlesztőkészlet WP7-re, mert ez teljesen szembemenni a stratégiai célokkal. A maximum amit el tudok képzelni az a managed C++ támogatása majd valamikor, de igazából ennek is alig lennének előnyei, csak egy plusz fájás lenne azt is fejleszteni, támogatni.
    Mutasd a teljes hozzászólást!
  • Jól érzem, hogy ezek IPhone, Android stb transzformáló segéd cuccok, csak azért vannak, mert nem akarnak egy C/C++ API-t kiadni WP7-re és jobb híjján Java/Obj C portolással próbálják ezt hárítani?

    Miért nem tanulnak az Android 2.3-ból és kezdenek kiadni C/C++ API-kat legalább a játékfejlesztők számára?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd