1.用object-c创建ios静态链接库
请看:用xocde5 创建动态链接库 http://blog.csdn.net/haishu_zheng/article/details/16992259
我创建的函数名儿是:
#import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> @interface Mymic : NSObject - (void) myPrint; -(float) testReturnFloat; -(int) testReturnInt; -(void) testInput:(int) num; @end
实现是:
#import "mic.h" @implementation Mymic -(void) myPrint{ NSLog(@"create static library success!"); } -(float) testReturnFloat{ // float a = 1000.0; return 1000.0; } -(int) testReturnInt{ // int a = 123456; return 123456; } -(void) testInput:(int)num{ NSLog(@"传入的参数是:%d", num); }
2.找到你创建的.a文件
我创建了一个.a文件,你也可以自己创建,文件我会在最后留下上传地址
3.把.a文件移到项目文件夹
我假设您在本教程中使用的libGDX框架,但是它的功能一样,如果你不是。将libMymic.a到您的RoboVM项目库/ IOS/目录下
4.编辑robovm.xml让libgdx找到.a文件
5.创建一个新java文件:用java调用oc方法
package com.zyygame.main;
import org.robovm.cocoatouch.foundation.NSObject;
import org.robovm.objc.ObjCRuntime;
import org.robovm.objc.annotation.Method;
import org.robovm.objc.annotation.NativeClass;
import org.robovm.rt.bro.annotation.Library;
@Library(Library.INTERNAL)
@NativeClass
public class Mymic extends NSObject{
static {
ObjCRuntime.bind(Mymic.class);
}
@Method(selector = "myPrint")
public native void print();
@Method(selector = "testReturnFloat")
public native float returnFloat();
@Method(selector = "testReturnInt")
public native int returnInt();
//只要在@Method 里面输入在oc里面写的方法名就行 带参数的请打上冒号
//然后在下面定义方法的时候只要返回值和参数正确 方法名随便怎么写都行
@Method(selector = "testInput:")
public native void testInput(int num);
}