2011-12-28 32 views
1

我是Android应用程序开发的新手。我想使用android开发dll。是否有可能开发和集成到Android应用程序。请告诉我解决方案。如果可能,请逐个告诉我解决方案。如何使用android创建dll

回答

0

您可以查看Android NDK,在这里http://developer.android.com/sdk/ndk/index.html。 NDK可以用来创建windows .dll文件的linux等价物.so文件。

+0

是deepak我知道,但我不明白那篇文章,这是你问你。良好提供以下步骤 – 2011-12-28 13:49:26

+0

以下链接应该可以帮助你,http://stackoverflow.com/questions/4638778/ndk-api-reference -docs; http://stackoverflow.com/questions/4851109/how-to-build-ndk-application – Deepak 2011-12-28 13:57:12

4

至于我,我曾经为我自己写过关于NDK的笔记。那就是:

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:循序渐进没有插件

所需的应用程序 - 这是你需要开发本地应用程序是什么。在我的情况下,我使用Eclipse + Android ADT插件+ Android CDT插件+ Sequoyah插件。您可以使用Eclipse安装它们 - >安装新软件

然后您应该下载Android NDK。你也应该导出PATH到它。

进行配置:你应该只定义路径到您的NDK在Eclipse - >窗口 - >首选项 - > Android的 - >本地发展

你不一定要使用这些插件,但它是更容易开发跟他们。但是,Sequoyah包含错误(或者它有时未正确配置我的电脑)

之后,您可以创建新的Android项目。然后你可以创建定义本地方法的java类。在我的情况下,这是NativeLibrary.java。这是它:

package com.testpack.nativetest; 

public class NativeLibrary { 
public native static int add(int a, int b); 

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

之后,建立你的Android项目。之后去到你的bin /班(我不知道,但它只是bin目录之前)目录:

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

并运行以下命令:

javah -jni com.testpack.nativetest.NativeLibrary 

该命令应产生com_testpack_nativetest_NativeLibrary。 h bin/classes目录下的头文件。它应该看起来像:

/* 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 

在您的项目中创建jni目录并运行以下命令。它会将这个标题移动到jni目录。

mv com_testpack_nativetest_NativeLibrary.h ../../jni 

之后,在jni目录中创建.c文件。在我的情况下,它是nativ.c,从.h文件中复制功能的定义和生成代码:

#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; 
    } 

然后在JNI目录,你应该创建一个make文件Android.mk这。只需更改源(nativ.c)和您的库的名称(nativ)即可。

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := nativ 
LOCAL_SRC_FILES := nativ.c 

include $(BUILD_SHARED_LIBRARY) 

转到PROJECT_HOME目录。在我的情况下,这是

cd ~/programming/android/workspace/NativeTest 

并运行ndk-build。就这样。之后,你可以在你的活动测试:

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)); 
    } 
} 

的插件实在是有点更容易开发。但我认为你应该自己测试如何做到这一点。

+0

您好Yury,你可以解释精心制作的请愿书。我没有正确理解你的步骤。 – 2011-12-30 13:22:51