Skip to content

Lua call iOS Objective-C or Android java static method by using reflection mechanism.

Notifications You must be signed in to change notification settings

yanyiyun/XLuaCallOcJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XLuaCallOcJava

Lua call iOS Objective-C or Android java static method by using reflection mechanism. It only works in Unity. It's embedded XLua framework.

Quick start

Android:

//java
package com.example.test3;
public class JavaBridgeTest {
    public static void TestNoArg() {
        Log.i(tag, "====  TestNoArg  ====");
    }
}

Lua call java:

--lua
NativeBridge.CallStatic('com.example.test3.JavaBridgeTest', 'TestNoArg', '()V')

iOS:

//Object-c
@interface ObjCBridge : NSObject
+ (NSString*)test:(NSString*)str;
@end

Lua call Object-c:

--lua
NativeBridge.CallStatic("ObjCBridge", "test:", "ObjCBridge Test")

Lua method:

--[[
Andriod:
AndroidCallStaticMethod(className, methodName, methodSignature, ...)
methodSignature: Method signature rule is similar to JNI rule.  Difference: Replace string with 'A'; only support base type and string stype; e.g. (AZBCSIJFD)V
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html


iOS:
iOSCallStaticMethod(className, methodName, ...)
methodName: e.g. no arg "funcname",  one arg "funcname:",  two args "funcname:argname2:"
args and return value: support base type and lua table. Lua array <==> NSArray; Lua talbe obj <==> NSDictionary.  bool type, as return value will be convert to [0|1]
]]
function NativeBridge.CallStatic(...)

How to do

Copy these files in to your unity project:

NativeBridge.lua.txt
NativeBridge.cs
ObjCBridge.h (Plugins/iOS/)
ObjCBridge.mm (Plugins/iOS/)

Modify NativeBridge.lua.txt first three lines.

--user define
local json = json
local register_global_module_table = true

About

Lua call iOS Objective-C or Android java static method by using reflection mechanism.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages