anonymous Log in
Search
Recents:
v3.0
sd
Dependencias/Librerias Externas Android
01/06/20 18:19

haguilera

Replies: 2

Hola a todos
Estoy trabajando con terminales Android que tienen impresora y lectoras físicas. Para poder comunicarme con estos dispositivos estoy utilizando las librerías de los fabricantes pero estas son librerías externas logre agregar y hacer funcionar todo con la version Gx16 u7 pero con la version Gx16 u9 me esta generando errores
Agregue las dependencias en el build gradle del Application project en el root de genexus(C:\Program Files (x86)\GeneXus\GeneXus16\Android\Templates\ApplicationProject)
implementation fileTree(dir: 'libs', include: ['.jar','.aar'])
implementation 'com.sunmi:sunmiui:1.1.27'
implementation 'com.sunmi:printerlibrary:1.0.7'
Pero al agregar la carpeta libs que contiene el archivo .aar con las librerías externas en el proyecto generado por Genexus este me borra la carpeta en la version U7 esto no me pasaba.
Saludos
Héctor Aguilera
SOTEICA/Grupo GGI
Replies

jpgonzab

01/06/20 18:44
Buenas tardes Héctor, Esta no es la manera más adecuada de incluir una biblioteca externa en una aplicación GeneXus. Lo mejor es ir por el camino de la implementación de un nuevo External Object mediante la creación de un proyecto de Android Studio tal como se menciona en este Wiki . Dentro de dicho proyecto puedes incluir las dependencias al API de tu impresora en el archivo build.gradle del módulo. Hay un proyecto guía que te puede ser de ayuda en GitHub . Saludos, On Mon, Jun 1, 2020 at 6:20 PM Héctor Aguilera

haguilera

01/06/20 19:16
Hola Juan Pablo, ya hice la implementación con las librerías externas y use los External Object como mencionas ahi agregue la librería externa pero al momento de usar el external object en la aplicación compilada esta me generaba un error y esta se cierra. La unica solucion que ahi encontrado era copiar la carpeta libs en en el directorio de la app compilada pero ahora con la actualización de genexus 16 u9 esta me borra la carpeta Te adjunto el log que obtengo al cerrarse la aplicación Si observas en el log hace referencia que no se encontrara las libs del fabricante Tengo entendido que en el external object no se compilan los archivos de las librerías externas Process: com.soteica.aba, PID: 30849 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:325) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.RuntimeException: Error while instantiating External Api class 'com.example.samplemodule.BasicExternalObject'. at com.artech.externalapi.ExternalApiFactory.createInstance(ExternalApiFactory.java:48) at com.artech.actions.ApiAction.runExternalObjectMethod(ApiAction.java:69) at com.artech.actions.ApiAction.Do(ApiAction.java:57) at com.artech.actions.CompositeAction.Do(CompositeAction.java:120) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:360) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:349) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at com.artech.externalapi.ExternalApiFactory.createInstance(ExternalApiFactory.java:46) at com.artech.actions.ApiAction.runExternalObjectMethod(ApiAction.java:69) at com.artech.actions.ApiAction.Do(ApiAction.java:57) at com.artech.actions.CompositeAction.Do(CompositeAction.java:120) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:360) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:349) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lsunmi/paylib/SunmiPayKernel$ConnectCallback; at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at com.artech.externalapi.ExternalApiFactory.createInstance(ExternalApiFactory.java:46) at com.artech.actions.ApiAction.runExternalObjectMethod(ApiAction.java:69) at com.artech.actions.ApiAction.Do(ApiAction.java:57) at com.artech.actions.CompositeAction.Do(CompositeAction.java:120) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:360) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:349) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.ClassNotFoundException: Didn't find class "sunmi.paylib.SunmiPayKernel$ConnectCallback" on path: DexPathList[[zip file "/data/app/com.soteica.aba-1/base.apk"],nativeLibraryDirectories=[/data/app/com.soteica.aba-1/lib/arm, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at com.artech.externalapi.ExternalApiFactory.createInstance(ExternalApiFactory.java:46) at com.artech.actions.ApiAction.runExternalObjectMethod(ApiAction.java:69) at com.artech.actions.ApiAction.Do(ApiAction.java:57) at com.artech.actions.CompositeAction.Do(CompositeAction.java:120) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:360) at com.artech.actions.ActionExecution$2.doInBackground(ActionExecution.java:349) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Saludos Héctor Aguilera SOTEICA/Grupo GGI > El 1 jun. 2020, a las 15:44, Juan Pablo Gonzalez


Back to sd