RoboVM和libGDX的绑定[用java调用ios的静态库.a]

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

6.调用方法

7.运行结



原文地址:https://www.cnblogs.com/tqj-zyy/p/4559760.html