Desarrollo de programa de consola Android VS2019 C++

prefacio

He presentado el desarrollo de Android .so en VS antes, y VS también proporciona una plantilla de proyecto incrustada, que es muy simple. El único inconveniente es que el .so desarrollado debe llamarse con un APK para la depuración, a diferencia de nuestra PC en desarrollo. aplicaciones es muy diferente, y no puede observar directamente los resultados de ejecución del programa en la consola.

¿Puedo desarrollar directamente aplicaciones de consola en Android? La respuesta es sí. También le comenté esto al equipo de VS, con la esperanza de complementar esta plantilla de proyecto. Después de todo, Android tiene aplicaciones C++ y Java, y C++ The .so y . También hay bibliotecas disponibles, pero falta la aplicación de consola. Pero la gente habla a la ligera y no hay progreso en este momento, así que proporciono mi propio método para el desarrollo de aplicaciones de consola Android C++.

Agregue otra oración: Las aplicaciones de consola solo son adecuadas para fines de depuración, no para el desarrollo de productos finales. Después de la depuración, se debe generar e integrar .so o .a en la aplicación de Android.

Preparar

Aunque el título es VS2019, solo muestra mi versión actual de VS. Lo que realmente necesito es la plantilla de proyecto CMake de VS, que debería ser compatible desde VS2017.

Además, dado que se está desarrollando una aplicación de consola Android, se necesitan dos cosas:

1. NDK ( https://developer.android.com/ndk/downloads )

2. BAD ( https://developer.android.com/studio/releases/platform-tools )

Por favor, descargue estas dos cosas usted mismo.

La versión aquí es ndkVersion "21.0.6352462”, y Android Studio utiliza adb. La ubicación del programa de adb en Android Studio es: C:\Users\<su nombre de usuario>\AppData\Local\Android\Sdk \platform-tools


Aquí asumo que ha completado la descarga de estas dos herramientas. No debería ser necesario instalarlo, simplemente descomprímalo directamente. Mi ndk y adb son los siguientes:

Pero para que VS sepa la ubicación de estas dos cosas, debemos agregarlas a las variables de entorno del sistema:

1. Abra las variables de entorno del sistema:

2. Agregue mis dos rutas anteriores a Path:

Preste atención a la ruta, si tiene los siguientes tres .exe en la ruta correspondiente, estará bien:

1. hacer.exe

2. clang.exe clang++.exe clang-cl.exe

3. adb.exe

 

Finalmente, por cierto, VS2019 o 2017 necesita instalar la extensión cmake, que se presentó en mi artículo anterior.Si no tiene claro el proceso Cmake de VS, le sugiero que lea primero mi artículo anterior.


El trabajo preparatorio está aquí. Por cierto, resumiré: la programación de Android C ++ pertenece al lenguaje nativo y se requiere NDK (N de nativo). Este es el kit de desarrollo nativo de Android, que incluye principalmente dos compiladores: gcc y clang El último Android no es compatible con gcc, por lo que se recomienda utilizar clang como compilador. Después de compilar el compilador, debe utilizar el archivo MAKE de Unix como generador de programas. En Windows, utilice make.exe que viene con ndk para reemplazar make.adb se usa como una herramienta de depuración para la comunicación con dispositivos Android, puede transferir archivos y usar el shell para iniciar la aplicación de consola correspondiente para imprimir su salida de consola a la PC.

comenzar

1. Crea un proyecto cmake

2. En primer lugar, la parte del código es la misma que la consola de Windows o Linux, no hay diferencia:

3. Tampoco es necesario cambiar CMakeLists:

4. El foco está en modificar la configuración:

a. Haga clic en Administrar configuración

b. Actualmente, VS solo proporciona configuraciones de Linux y Windows en esta interfaz, y las configuraciones de Android deben agregarse nosotros mismos.

C. Modificar el nombre de configuración de Android-v8a-Debug

D. Borre el conjunto de herramientas, porque aquí estamos usando un conjunto de herramientas externo, que no está en el VS predefinido:

"gcc-arm" en la siguiente figura se cambia a ""

ctrl+S guardar, luego cerrar el archivo json

e. Abra la configuración de administración nuevamente y verifique si el conjunto de herramientas está vacío

F. Rellene la ubicación del archivo cmake de la cadena de herramientas:

Complete a continuación:

G. Actualizar caché de Cmake

Después del éxito, también cambiará a nuestro nombre de configuración Android-v8a-Debug:

5. Genera todo:

Información de consola exitosa:

6. Enviar al dispositivo Android para ejecutar:

a. Busque el programa de consola correspondiente (la estructura de archivos de Cmake también se detalla en mi artículo anterior):

b. En la ubicación de la carpeta actual, ejecute el comando adb push:

El comando completo es adb push AndroidTest /data/local/tmp

AndroidTest es la ubicación del archivo de la PC actual, y /data/local/tmp es la ubicación de destino del terminal Android. Tenga en cuenta que otras carpetas pueden tener problemas de permisos, y /data/local/tmp es una de las mejores opciones para la depuración Programas de la consola Android.

C. Use el shell adb para ejecutar la aplicación que empujamos al lado de Android:

El comando completo es adb shell "cd /data/local/tmp && chmod 777 AndroidTest && ./AndroidTest"

La cadena en "" detrás del shell de adb es el comando de shell en el lado de Android. && indica que los tres comandos se ejecutan en secuencia: primero cambie la ruta a /data/local/tmp, y luego cambie los permisos de las aplicaciones I presionado en el pasado Si aparece el permiso denegado, eso debería estar relacionado con este chmod 777. Finalmente, ./AndroiTest es para ejecutar nuestra aplicación de consola.


En este punto, se muestra todo el proceso de VS generando la aplicación de control de Android, si tienes la base de mi artículo anterior del proyecto CMake, debes pensar que es muy simple, solo cambia el archivo de configuración.

Además, en cuanto al problema de depuración, solo encontré la configuración de RemoteLinux en launch.vs.json, y no hay una configuración relacionada con Android, así que no fui más lejos porque VS tiene otro proyecto que puede realizar tareas reales. depuración de dispositivos de Android C++ Code, esto se deja para el próximo artículo.

Epílogo

Finalmente, agregue tres parámetros cmake, algunos de los cuales pueden ser necesarios.

-DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=23 -DANDROID_TOOLCHAIN=clang

Entre ellos, el primero -DANDROID_ABI=arm64-v8a es muy importante, el programa que genera arm64-v8a de 64 bits o armeabi-v7a de 32 bits depende de esta macro.

El segundo -DANDROID_NATIVE_API_LEVEL=23 Aún no he encontrado un lugar útil

El tercero -DANDROID_TOOLCHAIN=clang no debería ser necesario. Puedes elegir entre gcc y clang, pero clang debería usarse ahora.

Si es una aplicación de 32 bits, cambie el anterior -DANDROID_ABI=arm64-v8a a -DANDROID_ABI=armeabi-v7a Recuerde guardar y actualizar CmakeCache después del cambio.

También hay CmakeBuildType que se puede seleccionar aquí:

A través de la combinación de estos dos, debería poder agregar Android-v7a-Release y otras configuraciones.


Es terrible, de repente pensé en escribir este artículo a las 11:50, y era la una después de que terminé de escribir. Vamos a descansar temprano, y mañana tengo que ir al campo de prácticas para practicar mi conductor.


Al cerrar el proyecto VS, de repente recordé una cosa más.

Make.exe no se usa arriba. El generador anterior es Ninja. 

De hecho, no hay problema con esto, y mucha gente lo usa como generador ahora, pero como presentamos make al principio, demostraremos cómo usar makefile como generador al final.

1. En el archivo de configuración, expanda Configuración avanzada:

2. Seleccione Archivos Make de Unix:

3. Después de la modificación, guarde y actualice CMake Cache. Vuelva a ejecutar todas las compilaciones:

Ahora este directorio es el archivo makefile.

También puede ejecutar directamente el proceso de creación para generar en la ruta actual:

Aquí es lo mismo que en Linux, simplemente ejecute make directamente después de modificar el archivo cpp, compilará automáticamente el archivo cpp modificado y lo volverá a vincular al programa. 

En cuanto a si usar el comando make de la consola o ejecutar todas las compilaciones en VS, depende de su preferencia personal.

Supongo que te gusta

Origin blog.csdn.net/luoyu510183/article/details/107969469
Recomendado
Clasificación