1.android å¦ä½Java code å¾å° Include 对象
android å¦ä½Java code å¾å° Include 对象
includeä¸æ¯ä¸ä¸ªå¯¹è±¡ï¼å®åªæ¯ä¸æ¡é¢å¤çæ令ï¼éè¿è¿æä»¤ä½ å°±å¯ä»¥ä½¿ç¨C/C++å½æ°åºä¸çå½æ°ãå¦ï¼
<ï¼--#include â头æ件åâ-->
javaè¦è°ç¨C/C++çå½æ°åºä¸çå½æ°çè¯ï¼å¯ä»¥éè¿JNIï¼javaæ¬å°æ¥å£ï¼æ¥å®ç°ã
ä»ç»ä¸ä¸ç®åçæµç¨ï¼
1ãé¦å å¨javaä¸ç³æä¸ä¸ªæ¬å°çæ¹æ³ï¼Native修饰ï¼ï¼ä¸è¦å»å®ç°è¿ä¸ªæ¹æ³ã
2ãæ¥çéè¿javahå½ä»¤ç¼è¯è¿ä¸ªjavaæ件ï¼çæä¸ä¸ªæ©å±å为.hç头æ件ï¼å¨è¿ä¸ªå¤´æ件ä¸ç¼è¯å¨ä¼èªå¨ä¸ºä½ ç³æä¸ä¸ªè·ä½ å¨javaä¸ç³æçæ¬å°æ¹æ³ç¸å¯¹åºçä¸ä¸ªå½æ°ã
3ãç¶åå建ä¸ä¸ª.cæè .cppçæ件ï¼å¨éé¢å®ç°ç¬¬ä¸æ¥çæçé£ä¸ªå½æ°ï¼å¨è¿ä¸ªæ件ä¸éè¦å°ç¬¬ä¸æ¥çé£ä¸ªå¤´æ件includeè¿æ¥ã
4ãå使ç¨gccï¼å¨linuxä¸ï¼æè å ¶ä»æ¹æ³å°ä½ å®ç°çæ¬å°ä»£ç çæå¨æé¾æ¥åºä¹å«åå ±äº«åºã以ååwindowså¼åç人é½ç¥éå¨æé¾æ¥åº.dllï¼ä½æ¯androidæ¯åºäºlinuxï¼å¨linuxæä¸æ©å±å为.soçæ件ï¼å®å ¶å®è·å¨windowsä¸çdllåºæ件差ä¸å¤ï¼è¿ä¸æ¥å°±æ¯çæ.soæ件ã
5ãä½ éè¦å¨ä½ çjavaç¨åºä¸å è½½è¿ä¸ªåºæ件ï¼.soæ件ï¼ï¼æ¯å¦ï¼
System.load(ä½ çåºæ件路å¾)ï¼
ä½ å°±å¯ä»¥å¨ä½ çç¨åºå ¶ä»å°æ¹è°ç¨å¨ç¬¬ä¸æ¥ç³æçé£ä¸ªæ¬å°æ¹æ³äºã
6ãæåå°±æ¯è¿è¡javaç¨åºã
举个å¨javaä¸ç代ç çä¾åï¼
public class MyJNI{
static {
try{
System.load("/home/Jni/test.so");//ä¹å¯ä»¥ä½¿ç¨loadLibraryæ¹æ³ï¼åºå«çè¯ä½ å¯ä»¥å»ç¾åº¦ä¸ä¸
}catch(UnsatisfiedLinkError e){ Log.e("JNI",mqttnet 源码e.toString());}//æåºæ¾ä¸å°å¯¹åºçæ¬å°è¯è¨å®ä¹çå¼å¸¸
}
public static native String method_name(int params);//ç³ææ¬å°æ¹æ³ï¼è¿äºåæ°è¿åå¼é½æ¯æ ¹æ®èªå·±éè¦å®ä¹ç
public String usingNativeMethod(int x){
method_name(x); //è·æ®éæåå½æ°ä¸æ ·è°ç¨
}
}
详ç»çå¦ä½ä½¿ç¨JNIå¯ä»¥åèä¸äºä¸ä¸çå客ã