日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路

發布時間:2024/9/30 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關鏈接:Windows 下編譯 LuaJIT

懶人與伸手黨可以直接看最底部。

為什么使用 LuaJIT

Lua 官方版的編譯嵌入相對簡單,但是為什么要用 LuaJIT 呢?我所了解到的優勢有:

更高的運行效率。

支持運行 Lua 編譯后的機器碼。

雖然 Lua 也支持編譯腳本,但是編譯出來的機器碼文件并不是跨平臺的,也就是說在

PC 上編譯的腳本在 Android 中無法使用。至于如何編譯 Android 上使用的腳本,至今沒有找到方案。

腳本的編譯不僅可以提高載入速度,更可以一定程度上保護源碼,避免被篡改。這也是我使用 LuaJIT 的主要原因。

LuaJIT NDK 編譯

系統環境:Ubuntu 17 x64

Windows 下使用 Cygwin 應該也是可以的。

由于我們系統是64位,編譯的目標很可能是32位的,所以先確認安裝了32位所需的編譯環境:

sudo apt-get install libc6-dev-i386

NDK 配置

已經配置好 NDK 的可以略過本章節。

去 NDK 官網下載適合自己的版本并解壓。這里使用的是 android-ndk-r14b-linux-x86_64.

wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip

解壓放在 /opt/android/ndk.

然后配置環境變量。這里直接配置全局的環境變量。修改 /etc/proile 在最后加上

export PATH=/opt/android/ndk:$PATH

注銷重新登錄一下使之生效。測試下命令 ndk-build,能運行則是配置完畢。

編譯

首先去 LuaJIT 官網下載源碼并解壓。

wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz

tar -zxvf LuaJIT-2.0.5.tar.gz

按照官方指南,新建一個 build.sh 放在解壓目錄下,根據實際需求輸入指令:

注意根據實際環境配置,有幾個地方需要修改一下。

NDK=/opt/android/ndk #注意匹配實際ndk目錄

NDKABI=14

NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9 #注意匹配實際版本號

NDKP=$NDKVER/prebuilt/linux-x86_64/bin/arm-linux-androideabi- #注意匹配實際路徑

NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"

NDKARCH="-march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"

make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF $NDKARCH"

然后執行 sh build.sh 就應該可以編譯了。

但是實際情況總是沒有那么順利。

折騰了3天,最后發現原來是變量引用問題。我不是很熟悉 shell,所以也就不再深究了,直接把 make 的所有參數寫在一行里,就這么神奇地成功了。

make HOST_CC="gcc -m32" CROSS=/opt/android/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- TARGET_FLAGS="--sysroot=/opt/android/ndk/platforms/android-14/arch-arm -march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"

如果之前編譯(失敗)過,記得先 make clean 清理下文件。編譯成功后可看到如下提示:

之后可以在 src 目錄里找到編譯出的 .a 靜態庫文件。通過改變編譯腳本,可以編譯出 armeabi-v7a x86 等不同 ABI 下的文件。

整合 Android

得到了靜態庫,下面就要整合進 Android 工程。由于 Lua 只提供的 C API,所以在 Android 中需要通過 JNI 來實現調用。還好有個 luajava 的開源庫幫我們實現了這個繁瑣的過程。而 androlua 又把 luajava 整合進了 Android. 我們這里是借用這個庫來整合 LuaJIT.

導入 luajava 源碼

創建 jni/luajava/ 目錄,將 luajava.c 復制到創建的目錄。

在 jni/ 下創建 Android.mk,輸入 include $(call all-subdir-makefiles).

導入 LuaJIT 靜態庫

在 jni/luajava/ 下根據 ABI 創建子目錄,例如 armeabi-v7a x86,將之前編譯出的 .a 文件放進對應的目錄中。

在 jni/luajava/ 下創建 Android.mk,輸入:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := luajit # 預編譯模塊名稱,任意。

# 指定靜態庫的位置。$(TARGET_ARCH_ABI)表示當前編譯的ABI名稱。

LOCAL_SRC_FILES := $(LOCAL_PATH)/$(TARGET_ARCH_ABI)/libluajit.a

include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := luajava

LOCAL_SRC_FILES := luajava.c

LOCAL_STATIC_LIBRARIES := luajit # 指定依賴的預編譯模塊名稱。

include $(BUILD_SHARED_LIBRARY)

將需要的頭文件復制到 jni/luajava/ 目錄。

包括:lauxlib.h lua.h lua.hpp luaconf.h luajava.h luajit.h lualib.h

這些文件可以在 LuaJIT 的源碼目錄找到。

最后在模塊的 build.gradle 文件的 android->defaultConfig 節點內添加下面代碼:

ndk {

abiFilters 'armeabi-v7a', 'x86' # 根據實際情況選擇ABI(靜態庫對應文件夾必須存在)

}

編譯完成后就可以愉快地使用 LuaJIT 了。

源碼與懶人必備

源碼已經在 github 了。

并且傳到了 JCenter,無需自己編譯,直接添加依賴就可以使用:

compile 'cc.chenhe:android-luajit:1.0.0' //注意自行替換最新版本

總結

以上是生活随笔為你收集整理的android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一级一级 | 国产精品视频免费播放 | 大奶一区| 国产精品久久久久无码av | 91麻豆精品一二三区在线 | 裸体裸乳被免费看视频 | 日日干,夜夜操 | 日韩精品免费播放 | 欧美女优一区二区 | 日韩中文字幕综合 | 国产av无码专区亚洲av毛网站 | 日本一区视频在线观看 | 奇米91| 手机在线观看av网站 | 亚洲AV无码成人精品区东京热 | 老版k8经典电影 | 日韩不卡av | 欧美又粗又深又猛又爽啪啪九色 | 丝袜脚交免费网站xx | 亚洲干| 欧美国产日韩视频 | 黄色三级三级三级三级 | 男人操女人的软件 | 日本久久片 | 国产美女无遮挡永久免费观看 | 久久精品国产亚洲AV成人雅虎 | www..com色| 日韩图色 | 久久久久久91香蕉国产 | 亚洲一区二区精品视频 | 欧美激情一区二区三区蜜桃视频 | 狠狠干青青草 | 800av凹凸| 精品视频久久久久久 | 一区二区三区四区在线观看视频 | 91爱视频| 久草视频播放 | 久久精品国产精品亚洲色婷婷 | 久久99精品国产麻豆婷婷洗澡 | 久久综合操 | 国产精品一区二区av日韩在线 | 中日韩黄色大片 | 成年人视频在线看 | 黄色一级视频免费 | 男人肌肌桶女人肌肌 | 姑娘第5集高清在线观看 | 色噜噜亚洲 | 木下凛凛子av一区二区三区 | 亚洲精品乱码久久久久久蜜桃欧美 | 在线看91| 国产精品美女久久久久久久 | 亚洲国产精品久久久久婷婷老年 | 俺也来俺也去俺也射 | 日韩欧美性视频 | 91在线观 | 日日干日日干 | 理论片在线观看视频 | 日韩成人久久 | 超碰九七| 前任攻略在线观看免费完整版 | 国产视频大全 | 国产高清视频免费 | 国产精品入口免费 | 成人自拍网站 | 九九九视频在线观看 | 人妻少妇一区二区三区 | 色播五月激情 | 香蕉视频在线播放 | av在线电影网站 | 电影一区二区三区 | 天天看片天天干 | 欧美性综合 | 亚洲永久无码精品 | 一级片在线观看免费 | 色福利视频 | 亚洲阿v天堂 | 国产一区二区网站 | 国产一区二区三区四区精 | 蜜臀视频在线观看 | 最新av女优 | 美女又爽又黄免费 | 久久久嫩草| 黄色一级在线播放 | 黄色片18 | 欧美乱妇狂野欧美在线视频 | 黑人一级黄色片 | 秋霞在线视频 | 深夜av| 男人天堂av网 | 美女高潮视频在线观看 | 天堂在线观看免费视频 | 国模小黎自慰gogo人体 | 99在线视频免费观看 | 波多野结衣一区二区在线 | 亚洲精品高清视频 | 日本人妻丰满熟妇久久久久久 | av网站在线免费观看 | 黄色片免费在线播放 | 中国精品久久 |