Skip to content

littlerobots/ndk-prefab-example

Repository files navigation

Example Android NDK prefab project

This example shows an approach to use prefab packages in your project for native dependencies between modules in the same project. In particular this setup shows how to create a module for the popular llama.cpp and how to use llama.cpp with java-llama.cpp.

This is the same approach as I demonstrated in my talk LLMs on small devices.

General structure

Each native module is called <library>-android and within that directory the library sources are included as a git submodule or git subtree. The nested structure allows for either a custom CMakeLists.txt file that can include or override the library CMakeLists.txt file. What is best or convenient will depend on the specific library used.

In the example, the CMakeLists.txt for llama.cpp just includes the llama.cpp CMakeLists.txt file, while the original CMakeLists.txt file for java-llama.cpp is not used at all.

Dependencies

Because llama.cpp is a prefab aar, the java-llama.cpp can depend on this package through Gradle. The CMakeLists.txt file then adds the llamacpp-android::common and llamacpp-android::llama as libraries for the cmake project.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published