1 Star 0 Fork 1

yongyu0102/LuaForAndroid

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

自己根据 官网 LUA5.1 和 luajava1.1 源码编译 编译步骤:1)去Lua 官网 选择需要版本下载源码

2)去下载 LuaJava 三方裤子源码,这个裤子最新版本是 2007 年最后更新的 [luajava-1.1] 版本,这个裤子里面只提供了 luajava.c 文件没有提供 luajava.h 文件,这个 luajava.h 文件是根据 LuaState.java 这个类生成的,你可以采用命令行 javac 将 Luajava.java 编程成 Luajava.class 文件,再用 javah 将 Luajava.class 文件编译成 luajava.h 文件,这是 java 函数与 C++ 函数对应的静态注册方法,即通过特定的规则来写,此处方法名可以随意起名字,然后还可以用动态注册的方式关联两个方法(显然,静态注册要简单一些)。

步骤细节:

1.将 luajava解压包内的 org 包整个 java 源码放在 工程目录 java 下面,

3)配置NDK 编译 so 库,编译方式自行选择(ndk build 和 CMake 方式),笔者目前使用的是 Stutio 3.0.1 ,所以采用的是 CMake 编译方式,下面简单介绍下编译流程:

1、在SDK Tools 中勾选安装 CMake、LLDB、NDK

<img alt="ndkconfig">

2、File -> New -> New Project,在如下界面中勾选Include C++ Support,然后一路 Next,直到 Finish 为止即可(图省略)。

3、创建完成项目发现与常规项目比多了.externalNativeBuild文件夹、cpp文件夹、CMakeLists.txt文件。

.externalNativeBuild文件夹:cmake编译好的文件, 显示支持的各种硬件等信息。系统生成。

cpp文件夹:存放C/C++代码文件。

CMakeLists.txt文件:CMake脚本配置的文件。需要自己配置编写。

然后我们把上面第二步下载到的 lua 和 luajava c 代码全部放在 cpp 文件夹下,准备进行编译。(这里稍微提一句,笔者 菜鸟一枚, c 代码不懂,所以去官网下载完了,根据按照 CMake 编译规则进行编译,采坑不断。开始下载完 luajava 裤子,发现没有 luajava.h 文件,查了下,这个文件是根据 LuaState.java 编译出来的,于是笔者自己用 LuaState 编译了一个,然后 lua 源码用的是 5.3.3 版本,然后进行编译 so 库,报错。查了一下,是因为 luajava1.1 版本当时作者对应的是 lua5.1 版本,所以 api 有差异,于是重新下载了一个 lua5.1 版本编译,报错。查原因是 sdk21 之后版本采用一个原生的 c 方法,于是直接将 sdk 最小版本改成 21,编译,报错。查了一下说是 c 文件中有两个 main 函数,于是直接将一个 main 函数注释掉,一顿折腾终于编译通过,所以最后笔者从 gayhub 上找了别人升级过的 c 文件进行编译,比较稳。)

配置 CMakeLists.txt 文件

#设置要编译 c 文件的 路径(多个 c 文件)
aux_source_directory(src/main/cpp SRC_LIST)
add_library( # Sets the name of the library.
             luajava
             # Sets the library as a shared library.
             SHARED
             # Provides a relative path to your source file(s).
             ${SRC_LIST}
             )

find_library( # Sets the name of the path variable.
              log-lib )


target_link_libraries( # Specifies the target library.
                       luajava

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})

配置 app/build.gradle 文件

 defaultConfig {
    
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_ARM_NEON=TRUE", "-DCMAKE_BUILD_TYPE=Debug"
                /* cppFlags "-std=c++11 -frtti -fexceptions"*/
                cppFlags "-frtti -fexceptions"
                abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'arm64-v8a', 'mips', 'mips64', 'x86_64'
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

直接 Make Project ,然后在 app\build\intermediates\cmake\debug\obj 文件夹下面就可以看到各种 so 文件

<img alt="so">

使用

  1. luajava 下的 org 文件夹拷贝到工程你的工程 src/main/java 目录下
  2. jniLibs/armeabi下的 libluajava.so 重命名为 libluajava-1.1.so 或者修改

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yongyu0102/LuaForAndroid.git
git@gitee.com:yongyu0102/LuaForAndroid.git
yongyu0102
LuaForAndroid
LuaForAndroid
master

搜索帮助