Applicaties schrijven in C of C++ voor Android?

Ik probeer een spel te ontwikkelen/porteren naar Android, maar het is in C, en Android ondersteunt Java, maar ik weet zeker dat er een manier moet zijn om een ​​C-app daar te krijgen. Iedereen weet een manier om dit bereiken?


Antwoord 1, autoriteit 100%

Voor iedereen die dit via Google doet: vanaf SDK 1.6 heeft Android nu een officiële native SDK.

Je kunt de Android NDK (Native Development Kit) hier downloaden:
https://developer.android.com/ndk/downloads/index.html

Er is ook een blogpost over de NDK:
http://android-developers.blogspot .com/2009/06/introducing-android-15-ndk-release-1.html


Antwoord 2, autoriteit 17%

De Android NDKis een toolset waarmee u delen van uw app in native code, met behulp van talen zoals C en C++. Voor bepaalde typen apps kan dit u helpen codebibliotheken die in die talen zijn geschreven, opnieuw te gebruiken.

Voor meer informatie over hoe u aan de slag kunt gaan met native ontwikkeling, volgt u deze link.

Voorbeelden van toepassingen vindt u hier.


Antwoord 3, autoriteit 8%

Normaal gesproken moet u:

  1. Installeer Google Android NDK. Het
    bevat bibliotheken, headers, makfile
    voorbeelden en gcc-toolchain
  2. Bouw een uitvoerbaar bestand van je C-code
    voor ARM, optimaliseer en koppel het met
    verstrekte bibliotheken indien nodig
  3. Verbind met een telefoon via de meegeleverde
    adb-interface en test uw
    uitvoerbaar

Als u een app wilt verkopen:

  1. Bouw een bibliotheek op basis van je C-code
  2. Maak eenvoudige Java-code die zal
    gebruik deze bibliotheek
  3. Deze bibliotheek insluiten in de toepassing
    pakketbestand
  4. Test je app
  5. Verkoop het of verspreid het gratis

Antwoord 4, autoriteit 6%

Google heeft een Native Development Kit (NDK) uitgebracht (volgens http://www .youtube.com/watch?v=Z5whfaLH1-Eom 00:07:30).

Hopelijk wordt de informatie bijgewerkt op de pagina met Google-groepen (http://groups.google. com/group/android-ndk), omdat er staat dat het nog niet is uitgebracht.

Ik weet niet zeker waar ik er een eenvoudige download voor kan krijgen, maar ik heb gehoord dat je een kopie van de NDK kunt krijgen van de Git-repository van Google onder de donut-tak.


Antwoord 5, autoriteit 5%

Het officiële standpunt lijktte zijn dat dit niet iets is dat je ooit zou willen doen. Bekijk deze discussiein de lijst met Android-ontwikkelaars. Google voorziet dat Android op verschillende apparaten (CPU’s, beeldschermen, enz.) draait. De beste manier om ontwikkeling mogelijk te maken, is daarom het gebruik van (draagbare) beheerde code die gericht is op de Dalvik VM. Om deze reden ondersteunt de Android SDK geen C/C++.

MAAR, kijk eens op deze pagina:

Android bevat een set C/C++
bibliotheken die door verschillende componenten worden gebruikt
van het Android-systeem. Deze
mogelijkheden worden blootgesteld aan ontwikkelaars
via de Android-applicatie
kader.

Het beheerde applicatieframework lijkt bovenop deze bibliotheken te zijn gelaagd. De pagina gaat verder met een lijst van de C/C++-bibliotheken: standaard C-bibliotheek, media, 3D, SQL lite en andere.

Dus alles wat je nodig hebt is een compilerketen die C/C++ compileert naar de juiste CPU (ARM, in het geval van de G1). Enkele korte instructies over hoe u dit kunt doen, vindt u hier.

Wat ik niet weet, is waar ik beschrijvingen kan vinden van de API’s die deze bibliotheken bieden. Ik vermoed dat er ergens header-bestanden in de SDK zijn begraven, maar de documentatie kan vaag zijn / ontbreken. Maar ik denk dat het kan!

Ik hoop dat dat nuttig is. Voor de goede orde, ik heb geen native Android-apps geschreven – alleen een paar eenvoudig beheerde.

Andy


Antwoord 6, autoriteit 3%

Je kunt nestedvmgebruiken om C (of andere GCC-talen) te vertalen naar Java-bytecode en dat gebruiken als de basis van uw poort. Zie bijvoorbeeld de Android-poort van de draagbare puzzelcollectie van Simon Tatham.

Ik verwacht dat deze methode door de NDK achterhaald is gemaakt, maar het is misschien niet in als sommige netwerken of iets niet toestaan ​​dat mensen hun telefoons upgraden.


Antwoord 7, autoriteit 3%

Google heeft de sessie Google I/O 2011: Bringing C and C++ Games to Androidal gelanceerd, die beschikbaar is op http://www.youtube.com/watch?v=5yorhsSPFG4

wat goed is om het gebruik van NDK te begrijpen voor het schrijven van applicaties in c en c++ voor Android.

Als je gewoon een op een console gebaseerde native game wilt cross-compileren en ze op Android wilt uitvoeren, dan dit artikelheeft hiervoor 3 methoden laten zien.

1: Statische compilatie met standalone toolchain

2: Cross-compilatie met de toolchain van Android NDK

3: Cross-compilatie met AOSP-broncode


Antwoord 8, autoriteit 3%

Misschien ben je hier naar op zoek?

http://www.mosync.com/

Het is een middelste laag voor ontwikkeling voor verschillende mobiele platforms met behulp van c++.


Antwoord 9, autoriteit 3%

Als je dit bekijkt, lijkt het mogelijk:

“het feit dat alleen Java-taal wordt ondersteund, betekent niet dat je geen applicaties in andere talen kunt ontwikkelen. Dit is bewezen door vele ontwikkelaars, hackers en experts in applicatie-ontwikkeling voor mobiel. De jongens van Elements Interactive BV, de bedrijf achter de Edgelib-bibliotheek, is erin geslaagd om native C++-applicaties op het Android-platform te draaien, ook al zijn er op dit moment nog veel problemen met weergave en geluid … enz. Dit omvat de S-Tris2-game en een 3D-animatiedemo van Edgelib.”


Antwoord 10, autoriteit 2%

Sinds 2009 is er een ontwikkeling op dit gebied.
Necessitas– Qt(C++-framework) voor Android
Aan de slag video.


Antwoord 11, autoriteit 2%

Bekijk google ndk grouphet ziet er veelbelovend uit, de eerste versie van de NDK zal beschikbaar zijn in 1H2009.

Bijwerken:
En het is vrijgegeven http:// android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html


Antwoord 12, autoriteit 2%

Ik weet niet zeker of de NDK volledige dekking biedt van de officiële Java API.

Van http://developer.android.com/sdk/ndk/index .html#overzicht:

Houd er rekening mee dat de NDK dat niet doet
u in staat stellen om native-only te ontwikkelen
toepassingen. Android’s primaire
runtime blijft de virtuele Dalvik
automaat.


Antwoord 13

Google heeft zojuist de NDK uitgebracht die precies dat toelaat.

http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introducing-android-15-ndk-release-1.html

Het is hier te vinden:
http://developer.android.com/sdk/ndk/1.5_r1/ index.html


Antwoord 14

Deze blogpost kan een goed begin zijn: http: //benno.id.au/blog/2007/11/13/android-native-apps
Helaas worden veel van de belangrijke dingen “als een oefening aan de lezer overgelaten”.


Antwoord 15

Ik ken geen tutorial, maar een goede ontwikkeltool: Airplay SDK van Ideaworks Labs. (Onlangs omgedoopt tot “Marmelade“) Met C/C++ kun je apps bouwen voor Windows Mobile , iPhones, Android. Het enige onderdeel dat ik niet leuk vond, was de GUI-componist – een met fouten, maar je kunt het altijd vervangen door het Kladblok.


Antwoord 16

U kunt c4droid downloaden en vervolgens de GCC-plug-in installeren en op uw SD installeren. Vanuit de shell ga ik gewoon naar de map waar het GCC-binaire bestand is en roep het dan op om een ​​uitvoerbaar bestand aan boord te maken.

find / -name gcc

/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc

kat > test.c

#include<stdio.h>
int main(){ 
 printf("hello arm!\n");
return 0;
}

./arm-linux-androideabi-gcc test.c -o test

./test

hallo arm!


Antwoord 17

Deze drie stappen zijn handig om te hebben en op te slaan in dit bericht.

1) Native c-code overzetten op Android

2) http://www.integratingstuff.com/2010/12/12/calling-native-c-code-through-jni-in-android-applications/

3) http://mindtherobot. com/blog/452/android-beginners-ndk-setup-step-by-step/


Antwoord 18

Native C/c++-bestanden libstdc++.* van uw Ubuntu zijn x86 (of x86_64) binaire bestanden, maar Android-apparaten en emulators zijn ARM. Natuurlijk werkt dit sowieso niet, zelfs als je de juiste naam instelt. Dit is een zeer naïeve manier die nergens toe leidt. Android heeft een zeer beperkte ondersteuning van C++, wat betekent dat er geen uitzonderingen zijn, standaard C++-bibliotheek (inclusief STL) en RTTI. Als je dergelijke functionaliteit nodig hebt, gebruik dan mijn aangepaste NDK-distributie van

http://crystax.net/android/ndk.php– het ondersteunt volledige C++-functies hierboven vermeld.

Waarom is er een fout: niet-gedefinieerde verwijzing naar ‘__cxa_end_cleanup’ linkfout. Android-stlport

tijd. Omdat er geen link is naar libstdC++. A. Zo fout.

Omdat het een statische bibliotheek gebruikt, is het noodzakelijk om de volledige libstdC++ te linken. A. Kan

http://crystax.net/android/ndk.phphier om de pakket

sources \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi directory.

Android op zijn eigen libstdc + + ondersteuning is beperkt, het moet worden gekoppeld aan een volledige libstdc +
+. Een baan.

Bestand toevoegen in Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \

$ (LOCAL_PATH) / libs / liblua.a \
 `$ (LOCAL_PATH) / libs / libstdc + +. A`  

En LOCAL_CPPFLAGS + =-lstdc + +-fexceptionskunnen worden gecompileerd


Antwoord 19

Er is een plan om C/C++-bibliotheken toe te staan ​​in de volgende SDK-versie van Android (codenaam Eclair?) Tot op heden is dit niet mogelijk via de Android Java SDK. Je kunt echter het ENORME open source-project pakken, je eigen bibliotheken draaien en vervolgens je eigen apparaat flashen… maar iedereen die je bibliotheek wil gebruiken, moet ook je aangepaste build flashen.


Antwoord 20

Kort antwoord: dat kan niet.

@Backslash17: Bij het doornemen van het artikel en de volgende link met installatie-instructies, heeft het bedrijf alleen maar gewerkt aan het lanceren van een zelfgecompileerd uitvoerbaar bestand op de emulator, waarbij het Android-framework wordt omzeild. Als je eenmaal de emulator hebt, kun je telnet gebruiken en een linux-shell hebben. Het draaien van een linux-programma is natuurlijk triviaal.
Maar dat werkt niet voor telefoons zonder jailbreak (ook bekend als root-toegang) en niet leverbaar op de markt.

Tenzij Google andere mogelijkheden opent of iemand een aangepaste compiler schrijft die Language X compileert in Dalvik-bytecode (Dalvik is de VM waarop Android-programma’s worden uitgevoerd), kunt u geen native code schrijven.

Other episodes