-
Notifications
You must be signed in to change notification settings - Fork 113
Building NDK Projects
Note: 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