Android JNI MAC OS 환경 설정
http://whbzju.github.io/blog/2013/06/01/android-jni-config/
JUN 1ST, 2013 | COMMENTS
프롤로그 - JNI 기술 소개
JNI 는 자바 네 이 티 브 인터페이스 의 약자 인 '자바 로 컬 호출' 으로 자바 세계 와 네 이 티 브 세계 의 중개 교량 이다.그 중에서 네 이 티 브 세 계 는 일반적으로 C / C + + 의 세 계 를 가리킨다.자바 는 플랫폼 을 뛰 어 넘 는 언어 로 자바 가 작성 한 응용 은 플랫폼 과 무관 하 다 는 것 을 잘 알 고 있 습 니 다.그러나 컴퓨터 의 세 계 는 자바 가 등장 하기 전에 이미 오랫동안 발 전 했 고 우수한 건장 한 코드 를 재 활용 할 수 있 는 경우 가 많다.예 를 들 어 Linux 의 많은 구동 모듈, 파일 시스템 등 이다.자바 가 이러한 기능 을 다시 실현 하려 면 공 짜 력 이 없 으 면 좋 은 소 리 를 듣 지 못 하고 반복 적 으로 바퀴 를 만 드 는 명성 을 떨 어 뜨 린 다.JNI 기술 을 통 해 이러한 네 이 티 브 모듈 을 사용 하면 절충 하 는 방법 이 된다.이 동시에 자바 의 세 계 는 가상 컴퓨터 에 의 해 구축 되 고 가상 컴퓨터 는 native 언어 로 실현 되 며 가상 컴퓨터 는 구체 적 인 플랫폼 에서 운행 되 기 때문에 가상 컴퓨터 자체 가 플랫폼 과 무관 하 게 할 수 없다.JNI 기술 을 통 해 자바 층 의 플랫폼 과 상 관 없 이 자바 층 에서 바 텀 디 테 일이 완전히 차단 되 었 을 수 있 습 니 다.종합 적 으로 말 하면 JNI 기술 은 이 자바 세 계 를 지탱 해 왔 지만 우 리 는 평소에 접촉 하 는 것 이 비교적 적다.
Android 의 세계 에 서 는 순수 C / C + + 프로그램 이 나타 나 는 것 을 허용 하지 않 지만 JNI 를 지원 합 니 다. JNI 를 통 해 자바 와 C / C + + 의 상호작용 을 실현 합 니 다.따라서 JNI 는 Android 소스 코드, 바 텀 드라이브, 그래 픽 이미지 등 분 야 를 접 해 야 하 는 개발 자 에 게 매우 중요 하 다.
안 드 로 이 드 에서 네 이 티 브 언어 가 구현 하 는 코드 는 최종 적 으로 *. so 동적 라 이브 러 리 로 컴 파일 되 어 자바 계층 호출 을 제공 합 니 다. 현재 두 가지 경로 가 있 습 니 다.
두 가지 컴 파일 환경
NDK 컴 파일 환경
Mac 에 서 는 NDK 를 설정 하 는 환경 이 매우 간편 합 니 다. 홈 페이지 에 ndk 가방 을 다운로드 하기 만 하면 됩 니 다. 전 제 는 ndk 에 필요 한 도 구 를 설치 했다 는 것 입 니 다. 보통 xcode 를 설치 하면 기본 적 인 환경 이 있 습 니 다.임의의 디 렉 터 리 로 압축 을 풀 고 PATH 에 이 디 렉 터 리 를 추가 하면 됩 니 다.예 를 들 어 나의:
재 ~ /. bashprofile 에서 경 로 를 PATH 에 추가 합 니 다. 없 으 면. bash 를 만 들 수 있 습 니 다.profile, 마지막 에 아래 문장 을 추가 합 니 다.
1
export PATH=$PATH:/Users/youpath/android-ndk-r8e
bash 를 다시 시작 하면 ndk - build 를 사용 할 수 있 습 니 다.
1 2
HaibotekiMacBook-Air:jni haibowu$ source ~/.bash_profile
HaibotekiMacBook-Air:jni haibowu$ ndk-build
Hello - jni 실행
ndk 가방 이 압축 을 풀 고 jni 의 예 를 가 져 옵 니 다. 다음은 hello - jni 를 컴 파일 하여 jni 의 세 계 를 느끼 겠 습 니 다.이 demo 의 경 로 는 ndk 설치 경로 의 sample 디 렉 터 리 에 있 습 니 다.이 경로 에 들 어가 다음 명령 을 수행 합 니 다.
1 2 3 4 5 6
HaibotekiMacBook-Air:jni haibowu$ ndk-build Gdbserver :
[arm-linux-androideabi-4.6] libs/armeabi/gdbserver Gdbsetup :
libs/armeabi/gdb.setup Compile thumb :
hello-jni <= hello-jni.c SharedLibrary :
libhello-jni.so Install :
libhello-jni.so => libs/armeabi/libhello-jni.so
시스템 알림 이 *. so 파일 을 생 성 할 때 컴 파일 이 성공 한 것 을 의미 합 니 다.eclipse 나 intellij 아이디어 로 이 프로젝트 를 가 져 와 서 효 과 를 볼 수 있 습 니 다.
기타
후속
다음은 제 이 니 를 소개 하 는 블 로 그 를 쓰 겠 습 니 다. 간단명료 하 게 썼 으 면 좋 겠 습 니 다.
Posted by 아폴로 Jun 1st, 2013 JNI
http://whbzju.github.io/blog/2013/06/01/android-jni-config/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.