- 浏览: 151653 次
- 性别:
- 来自: 广州
最新评论
-
hotlinhao:
很好,解决了问题!
viewflow的兼容问题 -
wuj787583992:
你好 我用linearlayout和9.png也出现一样的问 ...
GridView未设置margin、padding容器内出现空隙问题 -
hemowolf:
ladyweiwei 写道请问这个源码可以看看吗?在网上搜不到 ...
TextView支持拷贝&粘帖 -
ladyweiwei:
请问这个源码可以看看吗?在网上搜不到啊
TextView支持拷贝&粘帖 -
love_rain_boy:
楼主威武
布局中@null的代码实现方式
java嵌入lua有多种方案可选择,比如纯java的luaj 、纯C jni的 luajava还有个lua4j。在android中嵌入lua,我偏向使用luajava(当然面对除arm外的平台如x86、mips或需单独打包).
要使用luajava除了要下载luajava还要下载lua源码,需要注意的是luajava并不支持lua2.0以上的版本,我测试支持的版本是5.1.4,而且luajava中缺少头文件luajava.h(本文末提供该文件下载)。下载完后把lua和luajava的luajava.c和luajava.h解压到同一个文件夹,注意:把llex.c源文件的trydecpoint函数中的
ls->decpoint = (cv ? cv->decimal_point[0] : '.');
改为
ls->decpoint = '.';
不然编译不过。
实际项目中嵌入lua可能我们并不乐意让人轻易知道我们使用了lua。这就要编译so时不输出lua中的api和luajava的Java_org_keplerproject_luajava_LuaState_XXX函数。
关闭lua的api输出,可以在luaconf.h头文件中找到LUA_API宏
#define LUA_API extern
将它改为
#define LUA_API extern __attribute__((visibility("hidden")))而要关闭luajava中输出函数,则需要把luajava中JNIEXPORT标识的函数去除JNIEXPORT,和在JNI_OnLoad中注册所有Java_org_keplerproject_luajava_LuaState_XXX函数(这种函数命名实在是丑陋!)。以下是我整理出来的函数(其中注释掉的函数是luajava中的作者并没有实现的).
static JNINativeMethod METHOD_LUASTATE[]={ {"_open", "()Lorg/keplerproject/luajava/CPtr;", (void *)Java_org_keplerproject_luajava_LuaState__1open}, {"_close", "(Lorg/keplerproject/luajava/CPtr;)V", (void *)Java_org_keplerproject_luajava_LuaState__1close}, {"_newthread", "(Lorg/keplerproject/luajava/CPtr;)Lorg/keplerproject/luajava/CPtr;", (void *)Java_org_keplerproject_luajava_LuaState__1newthread}, {"_getTop","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1getTop}, {"_setTop","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1setTop}, {"_pushValue","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushValue}, {"_remove","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1remove}, {"_insert","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1insert}, {"_replace","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1replace}, {"_checkStack","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1checkStack}, {"_xmove","(Lorg/keplerproject/luajava/CPtr;Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1xmove}, {"_isNumber","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNumber}, {"_isString","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isString}, {"_isCFunction","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isCFunction}, {"_isUserdata","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isUserdata}, {"_type","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1type}, {"_typeName","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1typeName}, {"_equal","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1equal}, {"_rawequal","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1rawequal}, {"_lessthan","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1lessthan}, {"_toNumber","(Lorg/keplerproject/luajava/CPtr;I)D",(void*)Java_org_keplerproject_luajava_LuaState__1toNumber}, {"_toInteger","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1toInteger}, {"_toBoolean","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1toBoolean}, {"_toString","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1toString}, {"_objlen","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1objlen}, {"_toThread","(Lorg/keplerproject/luajava/CPtr;I)Lorg/keplerproject/luajava/CPtr;",(void*)Java_org_keplerproject_luajava_LuaState__1toThread}, {"_pushNil","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushNil}, {"_pushNumber","(Lorg/keplerproject/luajava/CPtr;D)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushNumber}, // {"_pushInteger","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushInteger}, {"_pushString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushString__Lorg_keplerproject_luajava_CPtr_2Ljava_lang_String_2}, {"_pushString","(Lorg/keplerproject/luajava/CPtr;[BI)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushString__Lorg_keplerproject_luajava_CPtr_2_3BI}, {"_pushBoolean","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushBoolean}, {"_getTable","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1getTable}, {"_getField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1getField}, {"_rawGet","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawGet}, {"_rawGetI","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawGetI}, {"_createTable","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1createTable}, {"_getMetaTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1getMetaTable}, {"_getFEnv","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1getFEnv}, {"_setTable","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1setTable}, {"_setField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1setField}, {"_rawSet","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawSet}, {"_rawSetI","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1rawSetI}, {"_setMetaTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1setMetaTable}, {"_setFEnv","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1setFEnv}, {"_call","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1call}, {"_pcall","(Lorg/keplerproject/luajava/CPtr;III)I",(void*)Java_org_keplerproject_luajava_LuaState__1pcall}, {"_yield","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1yield}, {"_resume","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1resume}, {"_status","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1status}, {"_gc","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1gc}, {"_error","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1error}, {"_next","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1next}, {"_concat","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1concat}, {"_pop","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1pop}, {"_newTable","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1newTable}, {"_strlen","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1strlen}, {"_isFunction","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isFunction}, {"_isTable","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isTable}, {"_isNil","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNil}, {"_isBoolean","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isBoolean}, // {"_isThread","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isThread}, {"_isNone","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNone}, {"_isNoneOrNil","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1isNoneOrNil}, {"_setGlobal","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1setGlobal}, {"_getGlobal","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1getGlobal}, {"_getGcCount","(Lorg/keplerproject/luajava/CPtr;)I",(void*)Java_org_keplerproject_luajava_LuaState__1getGcCount}, {"_LdoFile","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LdoFile}, {"_LdoString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LdoString}, {"_LgetMetaField","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LgetMetaField}, {"_LcallMeta","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LcallMeta}, {"_Ltyperror","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1Ltyperror}, {"_LargError","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LargError}, {"_LcheckString","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckString}, {"_LoptString","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LoptString}, {"_LcheckNumber","(Lorg/keplerproject/luajava/CPtr;I)D",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckNumber}, {"_LoptNumber","(Lorg/keplerproject/luajava/CPtr;ID)D",(void*)Java_org_keplerproject_luajava_LuaState__1LoptNumber}, {"_LcheckInteger","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckInteger}, {"_LoptInteger","(Lorg/keplerproject/luajava/CPtr;II)I",(void*)Java_org_keplerproject_luajava_LuaState__1LoptInteger}, {"_LcheckStack","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckStack}, {"_LcheckType","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckType}, {"_LcheckAny","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1LcheckAny}, {"_LnewMetatable","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LnewMetatable}, {"_LgetMetatable","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)V",(void*)Java_org_keplerproject_luajava_LuaState__1LgetMetatable}, {"_Lwhere","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState__1Lwhere}, {"_Lref","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1Lref}, {"_LunRef","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LunRef}, {"_LgetN","(Lorg/keplerproject/luajava/CPtr;I)I",(void*)Java_org_keplerproject_luajava_LuaState__1LgetN}, {"_LsetN","(Lorg/keplerproject/luajava/CPtr;II)V",(void*)Java_org_keplerproject_luajava_LuaState__1LsetN}, {"_LloadFile","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadFile}, {"_LloadBuffer","(Lorg/keplerproject/luajava/CPtr;[BJLjava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadBuffer}, {"_LloadString","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;)I",(void*)Java_org_keplerproject_luajava_LuaState__1LloadString}, {"_Lgsub","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1Lgsub}, {"_LfindTable","(Lorg/keplerproject/luajava/CPtr;ILjava/lang/String;I)Ljava/lang/String;",(void*)Java_org_keplerproject_luajava_LuaState__1LfindTable}, {"_openBase","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openBase}, {"_openTable","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openTable}, {"_openIo","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openIo}, {"_openOs","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openOs}, {"_openString","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openString}, {"_openMath","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openMath}, {"_openDebug","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openDebug}, {"_openPackage","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openPackage}, {"_openLibs","(Lorg/keplerproject/luajava/CPtr;)V",(void*)Java_org_keplerproject_luajava_LuaState__1openLibs}, {"luajava_open","(Lorg/keplerproject/luajava/CPtr;I)V",(void*)Java_org_keplerproject_luajava_LuaState_luajava_1open}, {"_getObjectFromUserdata","(Lorg/keplerproject/luajava/CPtr;I)Ljava/lang/Object;",(void*)Java_org_keplerproject_luajava_LuaState__1getObjectFromUserdata}, {"_isObject","(Lorg/keplerproject/luajava/CPtr;I)Z",(void*)Java_org_keplerproject_luajava_LuaState__1isObject}, {"_pushJavaObject","(Lorg/keplerproject/luajava/CPtr;Ljava/lang/Object;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushJavaObject}, {"_pushJavaFunction","(Lorg/keplerproject/luajava/CPtr;Lorg/keplerproject/luajava/JavaFunction;)V",(void*)Java_org_keplerproject_luajava_LuaState__1pushJavaFunction}, {"_isJavaFunction","(Lorg/keplerproject/luajava/CPtr;I)Z",(void*)Java_org_keplerproject_luajava_LuaState__1isJavaFunction} };
OK!最后将org.keplerproject.luajava包名和类名也一同改改(当然如果
改 了也要注意修改so中的函数签名),再给so取个其他的什么名字^_^。希望本文对您有所帮助。
- luajava.zip (1.8 KB)
- 下载次数: 57
发表评论
-
ColorDrawable draw方法的兼容问题
2014-05-21 21:47 1266android内置的ProgressBar控件里不 ... -
ListView嵌入ViewPager等横向滚动控件冲突的终究解决方案
2014-01-20 21:34 3796ListView嵌入ViewPager等横向滚动 ... -
viewflow的兼容问题
2014-01-15 20:48 1233本打算用ViewFlow来实现项目中的相关功能的。 ... -
一些机型TextView:ellipsize设置了Marquee还显示省略号的问题
2013-12-13 10:32 2587奇葩的发现在三星S4上设置TextView的ell ... -
除TextView超链接下划线
2013-12-13 10:11 807没发现有相关的属性,google一下都是重写Sp ... -
android中角标的实现
2013-10-10 23:24 5927如下图,角标在移动设备中是比较常见的ui元素。各种 ... -
一个android sqlite CRUD代码生成小工具
2013-03-12 15:24 1947把之前的文章合并到这里,添加bulk批量操作函数. ... -
GridView未设置margin、padding容器内出现空隙问题
2013-02-06 11:21 3252GridView未设置margin、padding容 ... -
view 在Animation后设置隐藏失效问题
2013-02-06 11:15 3216场景: 假设有一个view,在Rota ... -
ZXing CaptureActivity黑屏问题
2013-02-06 11:05 3642ZXing的CaptureActivity在其他ac ... -
调用service静态方法抛RuntimeException问题
2013-02-06 10:50 2055假设有一个service类是 AbcSvr在其内有 ... -
TextView支持拷贝&粘帖
2013-01-10 21:25 3613让TextView支持长按弹出系统自带的拷贝、粘贴功能, ... -
一个android sqlite DAO代码生成小工具
2013-01-08 22:40 524android sqlite也无非是CRUD,所以通常 ... -
webview页面随设备分辨率缩放
2012-12-03 21:48 2936android客户端常会调用到html页面,给webview ... -
游标泄漏(CursorLeak)
2012-10-27 23:48 3539通常,使用try-finally ... -
textview多行ellipsize="end"不显示省略号的解决方法(二)
2012-09-15 23:07 7762在上一文 给出了 textview多行设置ellipsiz ... -
textview多行ellipsize="end"不显示省略号的解决方法(一)
2012-08-22 22:50 8177textview多行设置ellipsize=&q ... -
android4.x系统设置字体大小导致应用布局混乱的解决方案
2012-08-21 23:44 4165从android4.0起系统设置的”显示“提供设置字体大小的 ... -
吐槽--ExpandableListView
2012-05-07 23:42 3174需要把ExpandableListView的适配器(继承 ... -
仿网易新闻栏目滑动TAB效果
2012-05-06 21:56 2179网易新闻这种滑动TAB效果,在android软件中还是 ...
相关推荐
穆鲁阿为 iphone wp8 android 嵌入 lua 5.1
android 与 lua 相互调用
在Android项目中使用Lua,需要两个步骤: 1、加载Lua脚本解析引擎。 2、以Native API方式调用引擎接口 直接以JNI方式调用Lua解析引擎的接口十分麻烦,开源项目LuaJava(https://github.com/mkottman/AndroLua )...
Androidlua 示例工程 演示Android调用Lua
android调用lua方法
运行Lua脚本语句 运行Lua脚本文件 调用 Android API
AndroidLua-master
android与lua相互调用,android与lua相互调用
通过代码和注释,可以尽快的了解到android与lua互调的过程!
android ndk可用的lua5.1.5源码,因工作需要加入了lua_cjson。压缩包解压后直接编译即可。
非常好的中文教程,可以帮助你快速的学习如何在Ogre3D引擎中嵌入lua脚本语言。
使用 lua 来构建跨平台原生应用有许多好处,比如 lua 语言简洁高效,可移植性好, Lua虚拟机极为轻量,仅占用200到300k的内存空间,且速度极快。
Android-lua 适用于Android的lua命令行解释器。 建造 要构建lua解释器,请在此目录中运行Android NDK构建脚本。 这将创建文件夹libs和obj。 条带化的可执行文件将在libs/armeabi/lua 非条带化的可执行文件将在obj...
android上运行lua脚本,android上运行lua脚本,android上运行lua脚本
lua和Android之间的互相调用,代码比较简单,基本阐述了两者之间的调用原理
刚接触到lua 看了教程搞了 lua集成到android里面 的代码。
VC知识库文章 - 将Lua嵌入到自己的程序中.htm
android 使用Lua的so , .jar 文件
Android-Lua 基于适用于 ,进行一些实际的更改。 博客: : 依赖implementation 'cc.chenhe:android-lua:1.1.0'出色的ProGuard如果您使用R8(3.4.0版默认使用)则无需添加任何规则。否则请添加附加内容: 如果使用...