Android 로컬 코드 생성기 기반 상세 정보

Android NDK를 사용하여 개발할 때 귀찮은 일이 있습니다. 바로 로컬 코드 폴더를 만들고 로컬 코드 파일을 만들고 로컬 코드를 만드는 컴파일 파일입니다.특히 현지 방법을 실현할 때도 비교적 짜증난다. 왜냐하면 현지 방법의 이름이 너무 길기 때문이다.명명 사양명: Java_package-name_class-name_method-name (arguments) 은 자칫 맞춤법 오류가 생겨 장시간 디버깅을 할 수 있습니다.이런 고통을 참지 않고 똑같은 일을 반복하지 않기 위해 자바 프로그램을 썼다.이 작은 도구는 자바 파일을 하나하나 검사하고 로컬 방법 파일, 즉 로컬 코드 파일을 포함하여 Android를 생성할 수 있습니다.mk 파일을 컴파일하고 Java 파일을 업데이트하며 System을 추가합니다.loadLibrary.구체적인 원칙은 다음과 같다. • 로컬 코드를 포함하는 자바 파일마다 로컬 파일을 생성하는데 그 안에 이 파일의 모든 로컬 방법이 포함되어 있다. • 생성된 로컬 방법은 표준에 부합되는 JNI이고 구체적인 형식은

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++로 응용 프로그램을 개발할 수 있기 때문이다.이 날이 좀 일찍 왔으면 좋겠어요.

좋은 웹페이지 즐겨찾기