Android: cómo compartir código entre proyectos firmados con el mismo certificado

votos
15

En Android documentación relativa a la firma de código se puede leer: Al firmar múltiples aplicaciones con el mismo certificado y el uso de la firma basada en comprobaciones de permisos, las aplicaciones pueden compartir el código y los datos de forma segura.

¿Cómo funciona exactamente como el intercambio de código se puede hacer? ¿Es posible liberar la aplicación principal y varios plugins intercambiables entonces a descubrir en tiempo de ejecución? Lo que hace el código fuente Aspecto del producto y cuáles son ventajas con respecto a las intenciones estándar a las llamadas de / a diferentes paquetes APK?

Publicado el 27/04/2010 a las 14:05
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
9

Utilice Context.createPackageContext () para crear una instancia de un paquete para otro .apk le interesa. Si está firmado con el mismo certificado que el suyo, y los dos están utilizando el mismo ID de usuario compartida, entonces se puede usar la bandera para cargar su código en su proceso, lo que le permite sacar el cargador de clases del contexto y ejemplariza lo clases que desea.

De lo contrario, si no se firman los mismos y explícitamente usando los mismos utilizados ID compartida, sólo se puede cargar sus recursos.

Tenga en cuenta que no se puede cambiar el ID de usuario compartida para una aplicación (a otra cosa o se mueve entre tener y no tener un ID de usuario compartida) una vez que la aplicación se encuentra en el mercado.

Respondida el 28/04/2010 a las 00:28
fuente por usuario

votos
2

Digamos que quiere llamar a una función pública de la clase de carga dinámica. Utilice el siguiente fragmento de código:

Context friendContext = this.createPackageContext("packageName", Context.CONTEXT_INCLUDE_CODE);
Class friendClass = friendContext.getClassLoader().loadClass("packageName.className");
Class noparams[] = {}; //say the function (functionName) required no inputs
friendClass.getMethod("functionName", noparams).invoke(friendClass.newInstance(), null);
Respondida el 02/05/2014 a las 10:42
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more