Jakákoliv zkušenost s Android NDK?

hlasů
8

Jsem konkrétně zajímá, jak je to přenosné mezi různými telefony. Máme aplikace s nějakým výpočetním těžkým kód, který jsme chtěli sdílet mezi Android a iPhone. Kdybychom ho mohli psát v jazyce C, měli bychom mít jedinou kódovou základnu, ale pokud NDK podporuje pouze podmnožinu procesorů, které výrobci telefonů vytvářejí, nebo pokud budeme muset překompilovat pro každý procesor, že to není proveditelné řešení ,

Díky za jakékoliv zkušenosti s ním.

Položena 06/11/2009 v 23:02
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
2

Na téma, zda jsou všechny Android (verze 1.5 nebo vyšší), telefon bude podporovat výstup aktuálního NDK:

Jediné, co mohu říci, je, že nic v dokumentaci o tom, jinak (pokud možná, pokud budete číst implikaci v „ Toto vydání podporuje instrukční sadu ARMv5TE“), a řídím Android novinky docela blízko a neslyšel žádný Android telefony jsou povolený nepoužívající architekturu ARM (i když někteří lidé zbastlený sestavení pro EeePC ). Při pohledu na zdroje Android , tam jsou stopy pouze s jedním dalším platformě x86. Co se týče budoucích plánů Googlu a OHA ? Musel byste se zeptat jich. Oni nedávno oznámil některé vývojářské dny , ale asi všechny skvrny jsou pryč teď (první z nich je dnes). Zaregistroval jsem se docela brzy v Londýně dne (17.), takže pokud se dostanu do Pokusím se dostat odpověď tam (jsem chce definitivně vím taky).

Odpovězeno 09/11/2009 v 10:43
zdroj uživatelem

hlasů
2

NDK je v podstatě implementací Java Native Interface for Android. To vám dává GCC 4.2.1 (úplnou sadu nástrojů, jak daleko, jak jen mohu říct) s cíli arm-eabi. Zda výsledný kód bude běžet na iPhone nebo jiným zařízením, které neznám; Nikdy jsem kódovaný pro iPhone. Zde je to, co filemá říct o něčem, co jsem postaven s NDK tak snad si můžete porovnat:

libpuzzles.so: ELF 32 bitů LSB sdílený objekt, ARM, verze 1 (SYSV), hydraulicky spojen, zbavené

( stripJe součástí dodávky; Jen jsem jej spustit zde.) Zde je gcc -v, nebo g++ -v(jsou totožné):

Pomocí vestavěné specifikace.

Cíl: rameno-EABI

Nakonfigurován: /opt/digit/android/git/android-ndk/out/arm-eabi-4.2.1/toolchain/src/gcc-4.2.1/configure --prefix = / opt / číslice / android / git / android-NDK / build / Montované / Linux-x86 / rameno-EABI-4.2.1 --target = arm-EABI --host = x 86 _64 neznámý-linux-gnu --build = x 86 _64 neznámý-linux-gnu --enable-languages = C, C ++ --disable-libssp --enable-závity --disable-NLS --disable-libmudflap --disable-libgomp --disable-libstdc __- v3 --disable-sjlj-výjimkami - zakázat sdílené --with-float = měkký --with-FPU = vfp --with-oblouk = armv5te --enable-cíl-optspace --with-abi = aapcs --disable-NLS --prefix = / opt / místné / android / git / android-NDK / build / Montované / Linux-x86 / rameno-EABI-4.2.1 --with-sysroot = / opt / místné / robot / git / android-NDK / build / plošiny / košíček / oblouk ramenem --program-transformace-name = s, ^, rameno-eabi-,

Model závit: single

gcc version 4.2.1

Za předpokladu, že kód bude spuštěn, generální to na úrovni API je samostatným a zajímavá otázka. Android umožní pouze volání nativního kódu pomocí API JNI. Nejsem obeznámen s přístupem iPhone, ale vím, že to není Java, takže bych, že je to spíš jako standardní dynamické propojování nebo dlopen()? Co mám na mysli je, měli byste buď vytvořit svůj JNI funkce (např Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...)vyrovnat se s tím, že volal z něčeho, co není JVM (mít svůj iPhone kód předstírat JNI_Env například?), Nebo mnohem méně strašlivě, začněte tím, že poskytuje nativní API vhodné pro iPhone a pak patří JNI obal, který platformy non-JNI lze bezpečně ignorovat, což soudím, je společný přístup k takové věci. Doufám, že pomůže.

Odpovězeno 08/11/2009 v 13:12
zdroj uživatelem

hlasů
2

Nejsem velmi dobře obeznámeni w / iPhone vývoj, ale když se podíváte na Android NDK stránce , v sekci vývojových nástrojů, to uvádí zaručené hlavičky dostupné v platformě, takže v případě, že iPhone podporuje tuto funkci, nebo si můžete vytvořit rozhraní mezi váš kód a nativní knihovny na obou platformách než já nevidím důvod, proč by to nešlo.

Odpovězeno 07/11/2009 v 04:48
zdroj uživatelem

hlasů
0

Měl jsem krásný zážitek psaní cross-chléb JNI / C aplikace se zpracováním framebufferu v NDK a vykreslení v jazyce JAVA.

Škoda, jeho android řešení pouze

Odpovězeno 07/07/2011 v 15:28
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more