programing

안드로이드용 애플리케이션을 C 또는 C++로 작성하시겠습니까?

kingscode 2022. 7. 12. 23:52
반응형

안드로이드용 애플리케이션을 C 또는 C++로 작성하시겠습니까?

Android에 게임을 개발/포트하려고 하는데, C에 있고, Android는 Java를 지원하지만, C 앱을 사용할 수 있는 방법이 있을 거라고 확신하는데, 이 방법을 아는 사람이 있나요?

Google을 통해 이 작업을 수행하는 모든 사용자는 SDK 1.6 Android에서 시작하는 공식 네이티브 SDK를 사용할 수 있습니다.

Android NDK(네이티브 개발 키트)는 https://developer.android.com/ndk/downloads/index.html에서 다운로드할 수 있습니다.

또, NDK에 관한 블로그 투고도 있습니다.
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.htmlhttpandroid-developers.blogspot.com/2009/06/.html

Android NDK는 C, C++ 등의 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있는 도구 세트입니다.특정 유형의 앱에서는 이 기능을 통해 해당 언어로 작성된 코드 라이브러리를 재사용할 수 있습니다.

네이티브 개발을 시작하는 방법에 대한 자세한 내용은 다음 링크를 참조하십시오.

샘플 어플리케이션은 이쪽에서 찾을 수 있습니다.

일반적으로 다음 작업을 수행해야 합니다.

  1. Google Android NDK를 설치합니다.libs, 헤더, makfile 예제 및 gcc 툴체인이 포함되어 있습니다.
  2. C 코드에서 ARM용 실행 파일을 작성하고 필요에 따라 최적화하여 제공된 lib와 링크합니다.
  3. 제공된 adb 인터페이스를 사용하여 전화기에 연결하여 실행 파일을 테스트합니다.

앱 판매를 검토하고 있는 경우:

  1. C 코드로 라이브러리 구축
  2. 이 라이브러리를 사용할 간단한 Java 코드 만들기
  3. 이 라이브러리를 응용 프로그램 패키지 파일에 포함
  4. 응용 프로그램 테스트
  5. 판매 또는 무료 배포

Google은 Native Development Kit(NDK; 네이티브 개발 키트)를 출시했습니다(http://www.youtube.com/watch?v=Z5whfaLH1-E 00:07:30).

정보가 구글 그룹 페이지(http://groups.google.com/group/android-ndk),에서 업데이트되기를 바랍니다. 아직 공개되지 않았다고 합니다.

어디서 간단한 다운로드를 받을 수 있을지 모르겠지만, 도넛 브랜치 아래 구글의 Git 저장소에서 NDK를 구할 수 있다고 들었습니다.

공식적인 입장은 이것이 결코 "하고 싶지 않은" 일이 아니라는 것 같습니다.Android 개발자 목록에서 이 스레드를 참조하십시오.구글은 다양한 장치(CPU, 디스플레이 등)에서 안드로이드를 실행할 수 있을 것으로 예상한다.따라서 개발을 활성화하는 가장 좋은 방법은 Dalvik VM을 대상으로 하는 (휴대용) 관리 코드를 사용하는 것입니다.따라서 Android SDK는 C/C++를 지원하지 않습니다.

하지만 이 페이지를 보세요.

Android에는 Android 시스템의 다양한 구성 요소에 사용되는 C/C++ 라이브러리 세트가 포함되어 있습니다.이러한 기능은 Android 애플리케이션 프레임워크를 통해 개발자에게 노출됩니다.

관리되는 응용 프로그램 프레임워크는 이러한 라이브러리의 맨 위에 계층화된 것으로 보입니다.이 페이지에는 C/C++libs(표준 C 라이브러리, 미디어, 3D, SQL 라이트 등)가 표시됩니다.

따라서 C/C++를 적절한 CPU(G1의 경우 ARM)로 컴파일하는 컴파일러 체인만 있으면 됩니다.이 조작 방법에 대한 간단한 설명은 다음과 같습니다.

이러한 라이브러리가 제공하는 API에 대한 설명을 어디서 찾을 수 있는지 모르겠습니다.SDK 어딘가에 헤더 파일이 있을 수 있지만, 문서가 개략적이거나 누락되어 있을 수 있습니다.하지만 할 수 있을 것 같아!

그게 도움이 됐으면 좋겠다.참고로 네이티브 안드로이드 앱은 작성하지 않았습니다.단순히 관리되고 있는 앱만 몇 개 있습니다.

앤디

nestedvm을 사용하여 C(또는 다른 GCC 언어)를 Java 바이트 코드로 변환하고 이를 포트의 기반으로 사용할 수 있습니다.를 들어 Android 포트의 Simon Tathams 휴대용 퍼즐 컬렉션을 참조하십시오.

이 방법은 NDK에 의해 구식이 될 것으로 예상되지만, 일부 네트워크나 어떤 것이 사용자의 전화기 업그레이드를 허용하지 않는 경우에는 사용되지 않을 수 있습니다.

구글은 이미 구글 I/O 2011을 출시했습니다.C와 C++ 게임을 안드로이드 세션으로 가져오다.이 세션은 http://www.youtube.com/watch?v=5yorhsSPFG4에서 이용하실 수 있습니다.

안드로이드용 어플리케이션 c와 c++로 NDK를 사용하는 것은 이해하기에 좋습니다.

콘솔 기반의 네이티브 게임을 크로스 컴파일하여 안드로이드 상에서 실행하는 경우 이 문서에서는 동일한 3가지 방법을 보여 줍니다.

1: 스탠드아론 툴체인을 사용한 정적 컴파일

2: Android NDK 툴체인을 사용한 크로스 컴파일

3: AOSP 소스 코드를 사용한 교차 컴파일

혹시 이걸 찾으시는 건가요?

http://www.mosync.com/

C++를 사용하여 여러 모바일 플랫폼을 개발하기 위한 중간 계층입니다.

이것을 보면, 가능한 것 같습니다.

  • http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/ (현재는 WayBack Machine에서만 이용 가능)

"자바 언어만 지원한다고 해서 다른 언어로 된 애플리케이션을 개발할 수 없는 것은 아닙니다.이는 많은 개발자, 해커 및 모바일용 애플리케이션 개발 전문가들에 의해 입증되었습니다.Edgelib 라이브러리의 배후에 있는 Elements Interactive B.V.의 직원들은 Android 플랫폼에서 네이티브 C++ 애플리케이션을 실행하는 데 성공했습니다.현시점에서는 디스플레이나 사운드에 아직 많은 문제가 있습니다.여기에는 S-Tris2 게임과 Edgelib의 3D 애니메이션 데모가 포함됩니다."

2009년
필수 - Android용 QT(C++ 프레임워크)
비디오 시작하기.

google ndk 그룹을 보세요.NDK의 첫 번째 버전은 2009년 1월에 출시될 예정입니다.

업데이트: http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html 에서 공개됩니다.

NDK가 공식 Java API에 대한 완전한 커버리지를 제공하는지는 잘 모르겠습니다.

http://developer.android.com/sdk/ndk/index.html#overview 에서 :

NDK에서는 네이티브 전용 어플리케이션을 개발할 수 없습니다.Android의 기본 런타임은 Dalvik 가상 머신으로 유지됩니다.

구글은 방금 NDK를 출시했는데, 이 NDK는 정확히 그것을 허용한다.

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

다음 URL에서 찾을 수 있습니다.

이 블로그 투고는 좋은 출발이 될 수 있습니다.http://benno.id.au/blog/2007/11/13/android-native-apps 유감스럽게도 많은 중요한 것들이 "독자에게 연습용으로 남겨져 있다".

튜토리얼은 모르지만 좋은 개발 도구는 모릅니다.Ideaworks Labs의 Airplay SDK (최근 브랜드 변경 "Marmelade") C/C++를 사용하여 Windows Mobile, iPhone, Android용 앱을 만들 수 있습니다.유일하게 마음에 들지 않았던 컴포넌트는 GUI 컴포넌트입니다.버그가 있는 컴포넌트이지만 메모장으로 대체할 수 있습니다.

c4droid를 다운로드하여 GCC 플러그인을 설치하고 SD에 설치할 수 있습니다.셸에서 GCC 바이너리가 있는 디렉토리로 이동한 후 호출하여 온보드 실행 파일을 만듭니다.

find / -name gcc

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

cat > test.c

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

./arm-linux-androideabi-gcc test.c -o 테스트

테스트

헬로 암!

이 3단계는 이 포스트에 저장하기에 좋습니다.

1) Android에서 네이티브 C 코드를 포트하는 방법

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/

네이티브 C/c++ 파일 libstdc++.* Ubuntu에서는 x86(또는 x86_64) 바이너리가 제공되지만 Android 디바이스와 에뮬레이터는 ARM입니다.물론 올바른 소나임을 설정해도 이 방법은 작동하지 않습니다.이것은 아무 것도 이끌어내지 못하는 매우 순진한 방법이다.Android는 예외는 없다는 의미의 C++를 매우 제한적으로 지원합니다. 표준 C++ 라이브러리(STL 포함) 및 RTTI.이러한 기능이 필요한 경우 에서 커스텀 NDK 배포를 사용합니다.

http://crystax.net/android/ndk.php - 위의 C++ 기능을 모두 지원합니다.

오류가 발생하는 이유: '_cxa_end_cleanup' 링크 오류에 대한 정의되지 않은 참조입니다.Android stlport

시간. libstdc + +. A로의 링크가 없기 때문입니다.틀렸어.

일부 정적 라이브러리를 사용하기 때문에 완전한 libstdc +. A를 링크해야 합니다.할 수 있다

패키지를 다운로드하려면 http://crystax.net/android/ndk.php를 방문하십시오.

source \ cxx-stl \ gnu-libstdc + + \libs \ armeabi 디렉토리.

Android 자체 libstdc + + 지원은 제한되어 있습니다. 완전한 libstdc + +에 연결되어야 합니다. A 작업입니다.

mk에 .mk 에 add 。LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \

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

★★★★★★★★★★★★★★★★★.LOCAL_CPPFLAGS + =-lstdc + +-fexceptions할 수

Android의 다음 SDK 버전에서 C/C++ 라이브러리를 허용하는 계획이 있습니다(코드명 Eclair).현재 Android Java SDK에서는 불가능합니다.그러나 거대 오픈 소스 프로젝트를 가져와 자체 라이브러리를 롤링한 후 자체 디바이스를 플래시할 수 있습니다.그러나 라이브러리를 사용하려면 사용자 지정 빌드도 업데이트해야 합니다.

간단한 답변:그럴수는 없어요.

@Backslash17: 기사 및 설치 절차와 함께 다음 링크를 살펴본 결과, 회사는 안드로이드 프레임워크를 무시하고 에뮬레이터에서 자체 컴파일된 실행 파일을 실행하는 것 밖에 할 수 없었습니다.에뮬레이터가 있으면 telnet 접속하여 Linux 쉘을 사용할 수 있습니다.거기서 Linux 프로그램을 실행하는 것은 물론 사소한 일이다.하지만 탈옥(루트 액세스)이 없는 전화기와 시판 중인 전화기에는 효과가 없습니다.

Google이 다른 기회를 열거나 Language X를 Dalvik 바이트 코드로 컴파일하는 커스텀 컴파일러(Dalvik은 Android 프로그램을 실행하는 VM)를 작성하지 않는 한 네이티브 코드를 작성할 수 없습니다.

언급URL : https://stackoverflow.com/questions/1002164/write-applications-in-c-or-c-for-android

반응형