2011-12-28 70 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