plugins { alias(libs.plugins.android.application) } android { namespace 'com.example.jnicpp' compileSdk { version = release(36) { minorApiLevel = 1 } } defaultConfig { applicationId "com.example.jnicpp" minSdk 24 targetSdk 36 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') version '3.22.1' } } buildFeatures { viewBinding true } } dependencies { implementation libs.androidx.core.ktx implementation libs.androidx.appcompat implementation libs.material implementation libs.androidx.constraintlayout // CameraX implementation libs.androidx.camera.core implementation libs.androidx.camera.camera2 implementation libs.androidx.camera.lifecycle implementation libs.androidx.camera.video implementation libs.androidx.camera.view implementation libs.androidx.camera.effects // Lifecycle / ViewModel implementation libs.androidx.lifecycle.viewmodel.ktx implementation libs.androidx.lifecycle.runtime.ktx implementation libs.androidx.activity.ktx // ML Kit Pose Detection. Both models pulled in: the base (fast) model is // what's actually wired up in PoseAnalyzer right now, since the heavier // "accurate" model runs too slowly on unaccelerated hardware (e.g. the // emulator's software renderer) to catch a fast, brief motion like a // footfall between analyzed frames -- see PoseAnalyzer's comment on // ACCURATE vs BASE options for the tradeoff and how to switch back. implementation libs.mlkit.pose.detection implementation libs.mlkit.pose.detection.accurate implementation libs.kotlinx.coroutines.android testImplementation libs.junit androidTestImplementation libs.androidx.junit androidTestImplementation libs.androidx.espresso.core }