-
Notifications
You must be signed in to change notification settings - Fork 113
Building NDK Projects
While standard JARs are automatically picked up by SBT when they are in the lib
folder at the root of the project, native libraries (.so
files) should go to src/main/libs
to be recognized by the plugin.
There is some basic NDK support in the android-plugin.
For now, it doesn't do anything else than call ndk-build during compilation
and clean up the obj and libs directories during cleanup.
This depends on an environment variable being set up: either ANDROID_NDK_HOME
or ANDROID_NDK_ROOT
.
Place your Android NDK sources in src\main\jni
. Add the AndroidNdk.settings to your project:
lazy val someProjectUsingNDK = Project(
id = ...,
...
settings = ... ++ AndroidBase.settings ++ AndroidNdk.settings
)
When using JNI one typically uses javah to generate a C header containing the constants and function declarations for classes that contain native methods.
Setting jniClasses in Android
specifies the classes with native methods for which C headers should be generated.
By default, javah will generate a separate C header file for each JNI class. To generate a single C header file instead, set javahOutputFile in Android
.
// Project using javah generated C headers
lazy val someProjectUsingNDK = Project(
id = ...,
...
settings = ... ++ AndroidBase.settings ++ AndroidNdk.settings ++ Seq(
jniClasses in Android += "org.example.UsingNative",
// Single C header with custom name:
javahOutputFile in Android := Some(new File("my_native.h"))
)
)
The make environment variable SBT_MANAGED_JNI_INCLUDE
can be used to refer to the directory containing the generated header files.
# Android.mk
LOCAL_C_INCLUDES += \
... \
$(SBT_MANAGED_JNI_INCLUDE)
For more details see the settings defined in AndroidNdkKeys
.
- Getting started
- Scala versions
- Android Manifest generation
- Typed resources references
- ProGuard
- DDMS integration
- Building Java Android projects
- Building NDK projects
- Consuming Android Library projects
- Github integration
- Building Android Test Projects
- Password Manager
- Releasing to the Android Market
- Projects using sbt-android-plugin
- Contributors