How to compile Lua 5.4.0 for Android as a dynamic library using Android Studio 4
This is a tutorial on how to compile Lua 5.4.0 for Android as a dynamic library (liblua.so) using the Windows Android Studio 4.
1. Download and install Android Studio 4.0 for Windows 64-bit.
2. Start a new Android Studio project.

3. Create a new empty project with No Activity

4. Name the project Lua Library, choose Java as the language and set a minimum SDK version.

5. Go to File | Settings and navigate to Appearance | System Settings and Android SDK

6. Go to the tab named SDK Tools and select the NDK (Side by Side) option and press Apply (accept the License and install it)

7. In the Project Explorer on the left navigate to the LuaLibrary | app | src folder and with right mouse button choose New | Directory and name it jni


8. On that jni-folder click the right mouse button and select New | File and name it Android.mk


9. Use default selected Text file type

and fill the newly created but empty file with
1 2 3 4 5 6 7 8 9 10 11 |
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LUA_VERSION := 5.4.0 LOCAL_ARM_MODE := arm LOCAL_CFLAGS := -D"l_getlocaledecpoint()='.'" -DLUA_ANSI LOCAL_MODULE := liblua$(LUA_VERSION) LOCAL_LUA_SRC := lua-$(LUA_VERSION)/src LOCAL_SRC_FILES := $(LOCAL_LUA_SRC)/lapi.c $(LOCAL_LUA_SRC)/lauxlib.c $(LOCAL_LUA_SRC)/lbaselib.c $(LOCAL_LUA_SRC)/lcode.c $(LOCAL_LUA_SRC)/lcorolib.c $(LOCAL_LUA_SRC)/lctype.c $(LOCAL_LUA_SRC)/ldblib.c $(LOCAL_LUA_SRC)/ldebug.c $(LOCAL_LUA_SRC)/ldo.c $(LOCAL_LUA_SRC)/ldump.c $(LOCAL_LUA_SRC)/lfunc.c $(LOCAL_LUA_SRC)/lgc.c $(LOCAL_LUA_SRC)/linit.c $(LOCAL_LUA_SRC)/liolib.c $(LOCAL_LUA_SRC)/llex.c $(LOCAL_LUA_SRC)/lmathlib.c $(LOCAL_LUA_SRC)/lmem.c $(LOCAL_LUA_SRC)/loadlib.c $(LOCAL_LUA_SRC)/lobject.c $(LOCAL_LUA_SRC)/lopcodes.c $(LOCAL_LUA_SRC)/loslib.c $(LOCAL_LUA_SRC)/lparser.c $(LOCAL_LUA_SRC)/lstate.c $(LOCAL_LUA_SRC)/lstring.c $(LOCAL_LUA_SRC)/lstrlib.c $(LOCAL_LUA_SRC)/ltable.c $(LOCAL_LUA_SRC)/ltablib.c $(LOCAL_LUA_SRC)/ltm.c $(LOCAL_LUA_SRC)/lundump.c $(LOCAL_LUA_SRC)/lutf8lib.c $(LOCAL_LUA_SRC)/lvm.c $(LOCAL_LUA_SRC)/lzio.c include $(BUILD_SHARED_LIBRARY) |
10. Repeat step 8 and create a file named Application.mk and fill it with
1 2 3 4 |
APP_ABI := all APP_PLATFORM := android-23 |
11. Download Lua 5.4.0 source code, extract it and copy/paste the complete lua-5.4.0 folder inside the jni folder within Android Studio project explorer

12. Open a terminal with right click on the jni folder (Open in Terminal)


13. in that terminal window type this command (you may need to adjust the path to reflect your current installed NDK version!):
1 2 3 |
%localappdata%\Android\Sdk\ndk\21.2.6472646\ndk-build |
14. in the LuaLibrary\app\libs folder you’ll then find the shared libraries

No comments yet.
Leave a comment
About Dennis D. Spreen
Search
Recent Posts
- How to compile Lua 5.4.0 for Android as a dynamic library using Android Studio 4
- Please make inline vars usable for production – fix RSP-28892
- How to compile Lua 5.4.0 as a Mac OS X dynamic library
- How to compile Lua 5.4.0 for Linux as a shared library
- How to compile Lua 5.4.0 for Windows
- Daily Wage – a Spigot/Bukkit plugin that pays out a daily wage
- How to compile Lua 5.3.5 for Windows
- Better Collada exporter for Blender with custom properties
- MOS6502-delphi – a MOS 6502 CPU emulator for Delphi
- Pass a multidimensional array as a parameter (with a hidden caveat)
Categories
Tags
Archives
- May 2020
- March 2020
- June 2019
- March 2017
- August 2016
- July 2016
- June 2016
- January 2016
- September 2015
- February 2015
- January 2015
- October 2014
- September 2014
- August 2014
- May 2014
- March 2014
- February 2014
- November 2011
- June 2011
- February 2011
- March 2010
- September 2009
- August 2009
- July 2009
- May 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- February 2008
- June 2007
Delphi Feeds
- TMS FNC Maps for Delphi adds Google Routes API support December 4, 2023
- That was easier than I thought – yeah, right December 4, 2023
- 95. Repasamos el International Pascal Congress December 3, 2023
- Raspberry Pi 64-bit downloads officially available December 3, 2023
- System Information Unit v5.25.0 released December 3, 2023
- Two new articles to learn Castle Game Engine and a fun toy to play: “Bad way to play chess”, aka “3D physics fun” December 2, 2023
- Learn all about RAD Studio 12 in Ljubljana December 2, 2023
- Enhanced TStrings Property Editor - New in Delphi 12 - #226 December 1, 2023
- Full compatibility with C++ Builder December 1, 2023
- Font improvements: default font includes international characters, less embedded font data by default, fixes for font rendering on ancient machines November 30, 2023