Как использовать NDK в проекте Android? - PullRequest
1 голос
/ 05 декабря 2010

Мне нужно использовать некоторые нативные c / c ++ в моем проекте, поэтому мне нужно использовать NDK. Есть ли простой способ установить его в Eclipse?

Спасибо.

Ответы [ 2 ]

14 голосов
/ 13 апреля 2012

Есть следующие шаги

1: создайте папку jni в каталоге проекта

2: Создайте имя файла Android.mk во вновь созданной папке jni и создайте новый файл на C или C ++, давайте рассмотрим, как мы используем файл и имя C файла MyNativeC.c

3: теперь введите следующий код в файле Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS := -llog

LOCAL_MODULE    := local_module_ndk // this is the name of local module by which you can call the Local source file
LOCAL_SRC_FILES := MyNativeC.c// hear we can pass the name of your native file name hear we are use MyNativeC.c file so we pass the name of MyNativeC.c in local source file name

include $(BUILD_SHARED_LIBRA

4 Теперь откройте файл MyNativeC.c и создайте два метода, которые вы хотите вызвать из своего кода Android (из вашей активности) слышать, мы создаем следующий код

    #include <jni.h>
#include <string.h>
#include <stdio.h>
#include <android/log.h>

#define DEBUG_TAG "MY_NDK_DEMO"


jstring Java_com_myNDKDemo_MainActivity_getString(JNIEnv * env, jobject this, jint value1, jint value2)
{
    char *szFormat = "Addition : %i";
    char *szResult;


    jlong sum = value1+value2;


    szResult = malloc(sizeof(szFormat) + 20);


    sprintf(szResult, szFormat, sum);

    jstring result = (*env)->NewStringUTF(env, szResult);


    free(szResult);

    return result;
}

5 теперь отредактируйте свою деятельность там, где вы хотите вызвать собственный код,

сначала создайте статический блок, в который мы должны загрузить библиотеку нативного кода.

слышать, что мы показываем код моей активности. MainActivity.java

package com.myNDKDemo

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {
    private static final String DEBUG_TAG = "MainActivity";


    private native String getStringAdd(int fist, int second);

    static {
        System.loadLibrary("local_module_ndk");
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        button b = new Button(this);

        b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


                            Toast.makeText(getApplicationContext(),""+getStringAdd(100,200), 2000).show();

        }
    });

           setContentView(b);

    }
}

6 Теперь сначала скомпилируйте код c , для того, чтобы сначала скомпилировать код c, вам необходимо NDK development kit ,

теперь открытый запуск. и введите cmd

теперь перейдите к пути проекта

In my case I create application in Destop, so hear we give the path of my app

после этого введите путь к файлу моего NDK ndk-build

enter image description here

теперь мы нажимаем ввести каталог автоматического создания библиотеки в вашем проекте enter image description here

7 Если вы видите в своем проекте, автоматически создаются libs и obj .

8. Обновите (щелкните правой кнопкой мыши) папку JNI (обновляйте ее каждый раз, когда вы создаете с помощью ndk-build, это фактически загружает вновь созданную общую библиотеку в папку libs.)

9. Теперь запустите ваш проект Android, при нажатии на кнопку он покажет вам добавление

спасибо

4 голосов
/ 06 декабря 2010

Хорошо, после того, как я потратил некоторое время на эксперименты, я могу сказать, что лучший способ для новичка начать использовать NDK в Eclipse - сначала пройти этот урок: http://marakana.com/forums/android/examples/49.html и просто создать необходимые файлы дляПапка jni (но больше ничего не делать).Затем вы должны прочитать это http://mobilepearls.com/labs/ndk-builder-in-eclipse/ и следовать инструкциям.Тогда вы готовы.

...