Lua脚本接入Android使用JNI调用本地接口,需要注意的问题

通常android的平台接入需要使用jni来接入java接口,应该注意以下几点问题:

java接口要是静态,并且是public类型

//获取渠道ID
public static String getPackageChannelId() {
    return packageChannelId;
}

编译的sdk配置文件proguard-project.txt中需要描述不能混淆接口代码

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-keep class com.baidu.android.** { *; }
-keep class com.supersdk.** { *; }
-keep class com.supersdk.framework.** { *; }

-keepclassmembers class org.cocos2dx.lua.AppActivity {
   public *;
}

-keepclassmembers class org.cocos2dx.lua.SuperSdkForJava {
   public *;
}

Lua上层接口中需要描述完整的参数接口

--实现闪屏操作 
function supersdk.showLogo(LogoName)
    local luaj = require "cocos.cocos2d.luaj"
    local className = "org/cocos2dx/lua/SuperSdkForJava"
    local args={LogoName}
    local sig="(Ljava/lang/String;)V"
    luaj.callStaticMethod(className, "showLogo",args,sig)
end

-- className 为完整指向调用接口的类名
-- args 为传入参数的数组,按java参数顺序放置
-- sig  为接口参数类型描述标记
-- luaj.callStaticMethod(类名,方法名,参数,参数标记)

Lua上层接口中使用LuaBridge时参数描述

-- V  代表void
-- Z  代表bool
-- I  代表int
-- 扩充类型 LXXX; 以String举例Ljava/lang/String; 特别注意其中“;”不能省略  

-- 整个参数描述结构为    (参数1参数2参数3...)返回参数

调用接口时容易出错的地方是string类型的参数,少了后面的“;”,以及无参函数,参数应该传入“{}”空数组,只有是传入参数和返回参数都为空,才可以不传后面两个参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值