Configuración del Entorno de Desarrollo para el SDK Móvil de DJI en Android

2. Adquisición del Código Ejemplo Oficial del SDK Móvil de DJI v4

Archivo de construcción de nivel superior (build.gradle):


// Archivo principal de construcción para opciones comunes a todos los módulos.

buildscript {
   // Variables de versión para dependencias globales
   ext.kotlinGradleVersion = '1.5.10'
   ext.coreAndroidX = "1.6.0"
   repositories {
       google()
       mavenCentral()
   }
   dependencies {
       classpath 'com.android.tools.build:gradle:4.2.2'
       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinGradleVersion"
   }
}

allprojects {
   repositories {
       google()
       mavenCentral()
   }
}

// Tarea para limpiar directorios de construcción
task clean(type: Delete) {
   delete rootProject.buildDir
}
 

Configuración del wrapper de Graddle (gradle-wrapper.properties):


# Parámetros del wrapper de Gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# URL de la distribución de Gradle 6.7.1 desde un espejo alternativo
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-6.7.1-all.zip
 

Archivo de construcción de la aplicación (app/build.gradle):


apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

repositories {
   mavenLocal()
}

android {
   compileSdkVersion 33
   useLibrary 'org.apache.http.legacy'

   defaultConfig {
       applicationId "com.dji.sdk.sample"
       minSdkVersion 23
       targetSdkVersion 34
       multiDexEnabled true
       versionCode 1
       ndk {
           // Filtros para evitar conflictos en dispositivos x86 con API 23+
           abiFilters 'armeabi-v7a', 'arm64-v8a'
       }
   }

   buildTypes {
       release {
           // Configuración para compilaciones de producción
           shrinkResources false
           minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
       }
       debug {
           // Configuración para compilaciones de depuración
           shrinkResources false
           minifyEnabled true
           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
       }
   }

   dexOptions {
       javaMaxHeapSize "4g"
   }

   packagingOptions {
       // Exclusiones de strip para bibliotecas nativas de DJI
       doNotStrip "*/*/libdjivideo.so"
       doNotStrip "*/*/libSDKRelativeJNI.so"
       doNotStrip "*/*/libFlyForbid.so"
       doNotStrip "*/*/libduml_vision_bokeh.so"
       doNotStrip "*/*/libyuv2.so"
       doNotStrip "*/*/libGroudStation.so"
       doNotStrip "*/*/libFRCorkscrew.so"
       doNotStrip "*/*/libUpgradeVerify.so"
       doNotStrip "*/*/libFR.so"
       doNotStrip "*/*/libDJIFlySafeCore.so"
       doNotStrip "*/*/libdjifs_jni.so"
       doNotStrip "*/*/libsfjni.so"
       doNotStrip "*/*/libDJICommonJNI.so"
       doNotStrip "*/*/libDJICSDKCommon.so"
       doNotStrip "*/*/libDJIUpgradeCore.so"
       doNotStrip "*/*/libDJIUpgradeJNI.so"
       doNotStrip "*/*/libDJIWaypointV2Core.so"
       doNotStrip "*/*/libAMapSDK_MAP_v6_9_2.so"
       doNotStrip "*/*/libDJIMOP.so"
       doNotStrip "*/*/libDJISDKLOGJNI.so"
       exclude 'META-INF/rxjava.properties'
       exclude 'assets/location_map_gps_locked.png'
       exclude 'assets/location_map_gps_3d.png'
   }

   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }
}

dependencies {
   implementation 'androidx.multidex:multidex:2.0.0'
   implementation 'com.squareup:otto:1.3.8'
   implementation('com.dji:dji-sdk:4.18') {
       exclude module: 'library-anti-distortion'
       //exclude module: 'fly-safe-database'
   }
   compileOnly 'com.dji:dji-sdk-provided:4.18'

   implementation 'androidx.appcompat:appcompat:1.0.0'
   implementation 'androidx.core:core:1.0.0'
   implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
   implementation 'androidx.recyclerview:recyclerview:1.0.0'
   implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
   implementation 'androidx.annotation:annotation:1.0.0'
   implementation 'com.jakewharton:butterknife:10.0.0'
   annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
   implementation "androidx.core:core-ktx:1.6.0"
   implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0-rc01"
   implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
   implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
   implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
   implementation 'com.google.android.gms:play-services:11.8.0'

   implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1'
   implementation 'androidx.lifecycle:lifecycle-runtime:2.3.1'
   implementation 'androidx.lifecycle:lifecycle-process:2.3.1'
   implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"

   implementation 'com.google.guava:guava:29.0-android'
   implementation 'org.apache.commons:commons-math3:3.6.1'

   implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'
   implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
   implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
}
 

3. Conexión con un Dispositivo Real

Utilice un dispositivo físico, habilitando previamente el modo desarrollador y la depuración USB en la configuración del sistema. La aplicación de DJI requiere conexión a Internet para operar.

4. Despliegue de la Aplicación

Ejecute el proyecto desde Android Studio para compilar e instalar la aplicación en el dispositivo conectado.

Etiquetas: DJI Android Gradle Kotlin Mobile SDK

Publicado el 6-4 18:43