Android 로컬 코드 생성기 기반 상세 정보
return-type Java_package-name_class-name_method-name(arguments){
}
즉, 필요한 것은 이 방법만 실현하는 것이다.기본 로컬 코드 공유 라이브러리의 이름은 Android 프로젝트의 이름입니다. 이 작은 도구가 있으면 자바에서만 로컬 방법을 설명하고 이 도구를 실행한 후에 로컬 방법을 실현하고 컴파일하면 됩니다.<여기 다운로드>에서 사용할 수 있습니다.압축을 풀면 세 개의 파일이 있는데 하나는 Java 원본이고 하나는 Jar 패키지(genjni.jar), 하나는 셸 스크립트(genjni.sh)입니다.원본을 올린 이유는 관심 있는 친구가 개선할 수 있지만 개선된 후에 저에게 한 부 보내주세요.다운로드 후 셸 스크립트를 수정하고 Jar 파일의 경로를 구체적인 저장 경로로 바꾸는 것이 좋습니다. 그렇지 않으면 Jar 파일을 찾을 수 없는 오류가 발생합니다.마지막으로 genjni를.sh는 ~/bin 밑에 놓아 사용 시 편리하도록 합니다.사용할 때 Android 프로젝트의 루트 디렉터리 아래에서genjni를 실행해야 합니다.sh면 돼요.다음은 이 작은 도구의 사용 방법을 실례로 보여 줍니다. 프로젝트를 HelloJni라고 만들고 HelloJni Activity를 만들고 그 안에 로컬 방법인 getStringFromJni()를 설명합니다.getStringFromJni () 가 반환하는 정보를 표시하려면 TextView 를 사용합니다.또 다른 로컬 방법은 getStatusFromJni (int) 를 표시하기 위해 사용하지 않았습니다.이것은 Java 코드입니다.
package com.hilton.hellojni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloJniActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView) findViewById(R.id.text);
text.setText(getStringFromJni());
}
private native String getStringFromJni();
private native int getStatusFromJni(int type);
}
Java 코드를 작성한 후 터미널에서 프로젝트의 루트 디렉터리 아래
$cd HelloJni
$ls
AndroidManifest.xml assets bin default.properties gen proguard.cfg res src
$genjni.sh
appplication HelloJni
package name: com.hilton.hellojni
class name: HelloJniActivity
$ls
AndroidManifest.xml assets bin default.properties gen jni proguard.cfg res src
$ls jni
Android.mk HelloJniActivity.c
로 들어가서 Android를 보십시오.mk 및 HelloJni Activity.c
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloJni
LOCAL_SRC_FILES := HelloJniActivity.c
include $(BUILD_SHARED_LIBRARY)
#include <jni.h>
jstring Java_com_hilton_hellojni_HelloJniActivity_getStringFromJni(JNIEnv* env, jobject thiz) {
}
jint Java_com_hilton_hellojni_HelloJniActivity_getStatusFromJni(JNIEnv* env, jobject thiz, jint type) {
}
에서 HelloJniActivity를 다시 봅니다.자바도 업데이트되었습니다. 공유 라이브러리를 불러오는 문구가 추가되었습니다.
package com.hilton.hellojni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloJniActivity extends Activity {
static {
System.loadLibrary("HelloJni");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView) findViewById(R.id.text);
text.setText(getStringFromJni());
}
private native String getStringFromJni();
private native int getStatusFromJni(int type);
}
남은 작업은 로컬 방법을 실현하는 것입니다.물론 이 도구는 문제가 많습니다. 여러분의 피드백을 환영하거나 개선 의견을 제시해 주십시오.또한 이 도구는 Java로 작성되었습니다. 더 좋은 선택은 스크립트로 작성해야 합니다. 예를 들어 Perl이나Python 등입니다.그리고 이 도구를 ADT에 통합하거나 NDK 개발에 완전히 사용되는 통합 도구 ANDT를 만들면 R.java가 발생하는 것처럼 로컬 파일을 자동으로 생성할 수 있다.예를 들어 ANDT 도구를 만들어서 Eclipse에 통합하면 자바에 로컬 방법이 설명된 후에 자동으로 로컬 파일과 컴파일 파일을 생성할 수 있다.얼마나 좋은 일이 될지, NDK 개발에 큰 도움이 될 겁니다.내 생각에 Google은 NDK 개발에 전문적으로 사용되는 Eclipse 플러그인을 만들거나 ADT에 NDK에 대한 지원을 추가할 것이다. 왜냐하면 NDK의 개방된 인터페이스가 갈수록 많아지고 NDK 개발자를 사용하는 응용 프로그램도 점점 많아질 것이다(2.3 및 이후의 버전은 NDK로만 하나의 Apk를 개발할 수 있다. 즉, 순수한 C/C++로 응용 프로그램을 개발할 수 있기 때문이다.이 날이 좀 일찍 왔으면 좋겠어요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.