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.