Installation¶
Get started with MINE - Indoor Navigation Engine by integrating it into your Android project. This comprehensive guide walks you through the complete installation process, from prerequisites to verification.
Prerequisites¶
Before integrating the Indoor Navigation Engine, ensure your development environment meets the following requirements:
| Requirement | Version | Description |
|---|---|---|
| Android Studio | Latest stable | Recommended IDE for Android development |
| JDK | 17+ | Required for compilation and runtime |
| Android SDK | Min: 24, Target: 34 | API level compatibility |
| Gradle | 8.2+ | Build automation tool |
Development Environment
We recommend using the latest stable version of Android Studio with the Android SDK Platform 34 for optimal development experience.
Adding the Dependency¶
Choose your preferred build system to integrate the Indoor Navigation Engine into your project.
Gradle (Recommended)¶
dependencies {
// Indoor Navigation Engine - Core library
implementation("com.machinestalk:indoornavigationengine:1.0.0")
}
dependencies {
// Indoor Navigation Engine - Core library
implementation 'com.machinestalk:indoornavigationengine:1.0.0'
}
Latest Version
The current stable version is 1.0.0. Check our release notes for the latest updates and features.
Maven¶
If you're using Maven as your build system, add the following dependency to your pom.xml:
<dependency>
<groupId>com.machinestalk</groupId>
<artifactId>indoornavigationengine</artifactId>
<version>1.0.0</version>
<type>aar</type>
</dependency>
Configuration¶
Java 17 Compatibility¶
Java 17 Required
The Indoor Navigation Engine uses Filament, a powerful native 3D rendering library written in C++. The JNI bindings are compiled with Java 17, making it mandatory for your project.
Configure your project's Java compatibility in the module-level build.gradle file:
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
}
Permissions¶
Add the following permissions to your AndroidManifest.xml to enable full functionality:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Required for network operations and map loading -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Optional: For location-based features -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
Permission Rationale
- INTERNET: Required for loading map data and assets
- ACCESS_NETWORK_STATE: Enables network connectivity checks
- Location permissions: Optional, only needed if you're using location-based positioning features
ProGuard Rules¶
If you're using code obfuscation, add these ProGuard rules to prevent runtime issues:
# Indoor Navigation Engine
-keep class com.machinestalk.indoornavigationengine.** { *; }
-keepclassmembers class com.machinestalk.indoornavigationengine.** { *; }
# Filament native libraries
-keep class com.google.android.filament.** { *; }
-keepclassmembers class com.google.android.filament.** { *; }
Verify Installation¶
After adding the dependency and syncing your project, verify the installation by creating a simple test:
import com.machinestalk.indoornavigationengine.ui.MineSceneView
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Initialize the navigation engine
val sceneView = MineSceneView(this)
setContentView(sceneView)
// If this builds successfully, installation is complete!
}
}
import com.machinestalk.indoornavigationengine.ui.MineSceneView;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialize the navigation engine
MineSceneView sceneView = new MineSceneView(this);
setContentView(sceneView);
// If this builds successfully, installation is complete!
}
}
Installation Complete
If your project builds without errors, congratulations! The Indoor Navigation Engine is successfully installed. Proceed to the Quick Start Guide to begin implementing navigation features.
Troubleshooting¶
Encountering issues? Here are common problems and their solutions:
Build Errors¶
Failed to resolve: com.machinestalk:indoornavigationengine
Solution: Ensure you have the correct repository configured in your settings.gradle or build.gradle:
repositories {
google()
mavenCentral()
// Add your repository URL here
}
Java version compatibility issues
Solution: Verify that your JDK 17 is properly configured in Android Studio:
- Go to File → Project Structure → SDK Location
- Ensure JDK location points to JDK 17 or higher
- Clean and rebuild your project
Native library not found errors
Solution: The library includes native binaries for multiple architectures. Ensure you're not filtering ABIs in your build configuration:
android {
defaultConfig {
// Don't use abiFilters unless necessary
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
}
}
}
Runtime Issues¶
For more detailed troubleshooting, visit our Troubleshooting Guide or contact support.
Next Steps¶
Now that you've successfully installed the Indoor Navigation Engine, you're ready to start building:
-
Quick Start
Learn the basics and create your first navigation experience
-
Usage Examples
Explore practical examples and implementation patterns
-
Features
Discover all the powerful features available in the engine
-
API Reference
Deep dive into the complete API documentation
Need Help?
If you encounter any issues during installation, don't hesitate to reach out:
- Check our FAQ
- Visit our Support page
- Review Troubleshooting guide