How to create dll using android

前端 未结 2 1182
野的像风
野的像风 2021-01-03 16:24

I am new to Android application development.I want develop a dll using android. Is it possible to develop and integrate to android app. Please tell me the solut

相关标签:
2条回答
  • 2021-01-03 16:59

    You can check out the Android NDK, here http://developer.android.com/sdk/ndk/index.html. The NDK can be used to create linux equvalent .so, of the windows .dll files.

    0 讨论(0)
  • 2021-01-03 17:06

    As for me I once made a note for myself about NDK. Here it is:

    Required applicaitions:
    1. Eclipse
    2. CDT+Sequoyah plug-ins
    3. Android ADT
    4. Android NDK
    
    
    Configuration:
    1. Install Eclipse, ADT, CDT and Sequoyah plug-ins
    2. In the Eclipse -> Window -> Preferences -> Android -> Native Development put NDK location
    
    
    Steps:
    1. Create new Android Project
    2. Create Java class for working with native libraries (NativeLibrary.java)
    3. In the class NativeLibrary.java define interface for native methods
    4. Right click on Project -> Android Tools -> Add Native Support. Define name of the library.
    5. Build the project
    6. Go to PROJECT_HOME/bin
    7. Create C header file with the command javah -jni <packagename>.NativeLibrary
    8. Move this file to PROJECT_HOME/jni folder
    9. Implement methods from the header file in the generated cpp file. Do not forget to include the moved header in this file.
    10. In java classes create new object of NativeLibrary class and call its methods.
    11. Build project.
    

    UPDATE: Step by step without plugins

    Required applications - this is what you need to develop native applications. In my case I use Eclipse + Android ADT plugin + Android CDT plugin + Sequoyah plugin. You can install them using Eclipse - > Install new software

    Then you should download Android NDK. Also you should export PATH to it.

    For the configuration: you should define only path to your NDK in Eclipse -> Window -> Preferences -> Android -> Native Development

    You are not obliged to use these plugins but it is easier to develop with them. However, Sequoyah contains errors (or it's sometimes not properly configured for my computer)

    After that you can create new Android project. Then you can create java class that defines native methods. In my case this is NativeLibrary.java. Here it is:

    package com.testpack.nativetest;
    
    public class NativeLibrary {
    public native static int add(int a, int b);
    
    static {
        System.loadLibrary("nativ");
    }
    }
    

    After that build your Android project. After that go to your bin/classes (I don't know but before it was just bin directory) directory:

    cd ~/programming/android/workspace/NativeTest/bin/classes
    

    And run the following command:

    javah -jni com.testpack.nativetest.NativeLibrary
    

    This command should produce com_testpack_nativetest_NativeLibrary.h header in your bin/classes directory. It should look like:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_testpack_nativetest_NativeLibrary */
    
    #ifndef _Included_com_testpack_nativetest_NativeLibrary
    #define _Included_com_testpack_nativetest_NativeLibrary
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_testpack_nativetest_NativeLibrary
     * Method:    add
     * Signature: (II)I
     */
    JNIEXPORT jint JNICALL Java_com_testpack_nativetest_NativeLibrary_add
      (JNIEnv *, jclass, jint, jint);
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif
    

    Create jni directory in your project and Run the following command. It will move this header to jni directory.

    mv com_testpack_nativetest_NativeLibrary.h ../../jni
    

    After that in jni directory create .c file. In my case it is nativ.c, copy the definition of the function from .h file and generate code:

    #include "com_testpack_nativetest_NativeLibrary.h"
    
    JNIEXPORT jint JNICALL Java_com_testpack_nativetest_NativeLibrary_add
      (JNIEnv *env, jclass obj, jint a, jint b) {
    return a+b;
      }
    

    Then in jni directory you should create a make file Android.mk Here it is. Simply change the source (nativ.c) and the name of your library (nativ).

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := nativ
    LOCAL_SRC_FILES := nativ.c
    
    include $(BUILD_SHARED_LIBRARY)
    

    Go to the PROJECT_HOME directory. In my case this is

    cd ~/programming/android/workspace/NativeTest
    

    and run ndk-build. That's all. After that you can test it in your activity:

    package com.testpack.nativetest;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    
    public class NativeTestActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Log.d("TEST:", "Result 5+4=" + NativeLibrary.add(5, 4));
        }
    }
    

    With plugins it is a bit easier to develop. But I think you should test it by yourself how to do this.

    0 讨论(0)
提交回复
热议问题