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.
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android1.png)
3. Create a new empty project with No Activity
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android2-700x527.png)
4. Name the project Lua Library, choose Java as the language and set a minimum SDK version.
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android3-700x527.png)
5. Go to File | Settings and navigate to Appearance | System Settings and Android SDK
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android4.png)
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)
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android5-700x504.png)
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
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android6.png)
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android7.png)
8. On that jni-folder click the right mouse button and select New | File and name it Android.mk
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android9-700x514.png)
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android10.png)
9. Use default selected Text file type
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android11.png)
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
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android12.png)
12. Open a terminal with right click on the jni folder (Open in Terminal)
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android13.png)
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android14-551x700.png)
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
![](https://blog.spreendigital.de/wp-content/uploads/2020/05/android15-477x700.png)
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
- 10 jours de conférence en ligne pour les <Dev Days of Summer> 2024 July 26, 2024
- Visualize your routes with TMS FNC Maps Summer Delphi project July 25, 2024
- Why Avoid Using Blocked Columns on Kanban Boards July 25, 2024
- Why change how a Web Broker service works? July 24, 2024
- Share your Gantt Chart with the PDF and Print IO components July 24, 2024
- Building a Copilot: #1 Server Fundamentals July 23, 2024
- Using Consistent and Customizable Markers in TMS FNC Maps July 23, 2024
- Ploumtris July 23, 2024
- Android: Platformer on Google Play, “Pretend Touch Device” option to test mobile behavior on desktop, touch input docs, target API bump, fixes July 22, 2024
- Когда я был маленьким, я писал авиасимулятор July 20, 2024