문제

특히 다양한 휴대폰 사이에서 휴대성이 얼마나 좋은지에 관심이 있습니다.Android와 iPhone 간에 공유하고 싶은 계산량이 많은 코드가 포함된 애플리케이션이 있습니다.C로 작성할 수 있다면 단일 코드 기반을 가지게 되지만 NDK가 휴대폰 제조업체가 만드는 프로세서의 하위 집합만 지원하거나 각 프로세서에 대해 다시 컴파일해야 한다면 이는 실행 가능한 솔루션이 아닙니다. .

경험해 주셔서 감사합니다.

도움이 되었습니까?

해결책

모든 Android (버전 1.5+) 전화기가 현재 NDK의 출력을 지원하는지의 주제에 따라

내가 말할 수있는 것은 문서에 달리 제안 할 것이 없다는 것입니다 (아마도 당신이 의미를 읽지 않는 한”이번 릴리스 ARMV5TE 명령 세트를 지원합니다. 어떤 사람들은 Eeepc의 빌드를 해킹했습니다). 보고 안드로이드 소스, 다른 플랫폼의 흔적은 x86입니다. Google과 다음의 미래 계획에 관해서 오아? 당신은 그들에게 물어봐야합니다. 그들은 최근에 일부를 발표했습니다 개발자 일, 그러나 아마도 모든 지점은 이제 사라 졌을 것입니다 (첫 번째 장소는 오늘입니다). 나는 런던의 날 (17 일)에 꽤 일찍 등록 했으므로 내가 들어 오면 그곳에서 답을 얻으려고 노력할 것입니다 (나는 확실히 알고 싶어합니다).

다른 팁

나는 iPhone 개발과 친숙하지 않지만 당신이 안드로이드 NDK 페이지, 개발 도구 섹션 아래에는 플랫폼에서 사용 가능한 보장 된 헤더가 나열되어 있으므로 iPhone이 이러한 기능을 지원하거나 코드와 기본 라이브러리 사이에 인터페이스를 만들 수 있습니다. T 일.

NDK는 기본적으로 자바 네이티브 인터페이스 안드로이드용.대상이 있는 GCC 4.2.1(내가 알 수 있는 한 전체 도구 세트)을 제공합니다. arm-eabi.결과 코드가 iPhone에서 실행될지 아니면 다른 장치에서 실행될지는 모르겠습니다.저는 아이폰용으로 코딩을 해본 적이 없습니다.여기에 무엇입니까 file 내가 NDK로 만든 것에 대해 말해야 하므로 아마도 비교할 수 있을 것입니다.

libpuzzles.so:ELF 32비트 LSB 공유 객체, ARM, 버전 1(SYSV), 동적으로 링크됨, 제거되지 않음

(strip 포함되어 있습니다;여기서는 실행하지 않았습니다.) 여기 있습니다. gcc -v 또는 g++ -v (동일합니다):

내장 사양을 사용합니다.

표적:팔에비

다음으로 구성:/opt/digit/android/git/android-ndk/out/arm-eabi-4.2.1/toolchain/src/gcc-4.2.1/configure --prefix=/opt/digit/android/git/android-ndk /build/prebuild/linux-x86/arm-eabi-4.2.1 --target=arm-eabi --host=x86_64-알려지지 않은-linux-gnu --build=x86_64-unknown-linux-gnu --enable-언어s=c,c++ --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 -- 비활성화-sjlj-예외 --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --disable-nls --prefix=/opt/digit/android/git/android-ndk/build/prebuild/linux-x86/arm-eabi-4.2.1 --with-sysroot=/opt/digit/android/git/android-ndk /build/platforms/cupcake/arch-arm --program-transform-name=s,^,arm-eabi-,

스레드 모델:하나의

gcc 버전 4.2.1

코드가 실행된다고 가정하면 이를 API 수준에서 관리하는 것은 별개의 흥미로운 문제입니다.Android에서는 JNI API를 통해서만 네이티브 코드를 호출할 수 있습니다.나는 iPhone 접근 방식에 익숙하지 않지만 Java가 아니라는 것을 알고 있으므로 표준 동적 연결 또는 dlopen()?내 말은, JNI 함수(예: Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...) JVM이 아닌 것(예: iPhone 코드가 JNI_Env를 가짜로 만들었나요?)에서 호출되는 것에 대처하거나, 훨씬 덜 끔찍하게도 iPhone에 적합한 기본 API를 제공한 다음 JNI가 아닌 래퍼를 포함합니다. 플랫폼은 안전하게 무시할 수 있는데, 제가 수집한 것은 이런 종류의 일에 대한 일반적인 접근 방식입니다.도움이 되길 바랍니다.

NDK에서 Framebuffer 처리와 Java의 렌더링으로 크로스 브레드 JNI/C 앱을 작성한 경험이 있습니다.

Pitty, Android 전용 솔루션입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top