2010-06-21 8 views
5

utilizo Instrumentación para probar PhoneApp escribí mi aplicación de prueba a través de Instrumentaciónjava.lang.SecurityException: Permiso Negación:

creé apk y lo instalé en Nexus One - Teléfono Android - esto pasó En mi código I estoy usando clases internas que no son parte del SDK estándar. No lo construyo en Eclipse sino en mi entorno incrustado. Estoy eng en compañía de desarrollo para Android, así que tengo un árbol de Android con todas las bibliotecas internas.

Uso los permisos apropiados en mi manifiesto.

mi apk creado probablemente firmado con alguna firma !! Pero probablemente esta firma no sea lo suficientemente buena.

Ahora ejecución de prueba a través de adb y tiene este error inmediatamente:

------------------------------------------------------------------------------------- 
INSTRUMENTATION_STATUS: id=ActivityManagerService 
INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a 
signature matching the target com.android.phone 
INSTRUMENTATION_STATUS_CODE: -1 
java. 
lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a 
signature matching the target com.android.phone 
------------------------------------------------------------------------------------- 

por favor ayuda.

Respuesta

1

Creo que el problema podría ser el certificado utilizado para firmar su "principal" aplicación y la aplicación de prueba es diferente. I suponga que su aplicación de prueba está definiendo como una instrumentación de su aplicación principal . Hacer esto permite que su aplicación de prueba se ejecute en el proceso de la aplicación principal, acceda a sus clases, etc., y así por razones de seguridad las dos aplicaciones deben ser firmadas con el mismo certificado.

La respuesta es this forum.

+0

Usted ve Cuando estoy en mi aplicación en nuestra plataforma (dispositivo de teléfono) ¡¡No obtengo tal permiso de denegación !! Esto ocurre solo si instalé y ejecuté mi apk en el teléfono de referencia, por ejemplo Nexus One de Google o cualquier otro. Mi aplicación de prueba del teléfono que se ejecuta en el teléfono ?? – ilana

1

Limpie su proyecto y cree inmediatamente. Y mira en su AndroidManifest si hay un itent así:

category android:name="android.intent.category.LAUNCHER" 
0

que fija el mismo problema al añadir el certificado que firmó mi solicitud a prueba tal como se describe en el Android sitio de Desarrolladores: En Eclipse: ir a Windows> Preferencias> Android> Crear y agregar en Depuración personalizada. Almacene el almacén de claves de su aplicación.

Reconstruye el paquete de pruebas y deberías estar listo para empezar.

Espero que esto ayude.

1

El error es debido a que su están probando una aplicación de nivel de permiso del sistema y la aplicación a ensayar debe estar en el sistema/datos y el proyecto application_test se puede instalar en los datos/app

0

Este problema puede ser resuelto mediante la desinstalación del archivo apk y la aplicación de prueba del emulador. Y luego renuncie a la aplicación con re-sign.jar y luego instale el apk y luego ejecute la aplicación de prueba.

1

Esta es una

'firma Matching'

tema. Asegúrese de que el APK del proyecto de prueba y el APK de su proyecto de destino estén firmados con el mismo certificado.

3

¿Encontró una solución a este problema? Puedo reproducir esto cuando tengo una aplicación de prueba instalada en el dispositivo que se firmó con otra clave.

Para solucionar el problema, ejecute la primera desinstalación de adb con el paquete de su aplicación y el paquete de sus pruebas.

adb uninstall com.android.phone 
adb uninstall com.android.phonetests 
+0

Esto funcionó para mí –

0

Tuve un problema similar sin suerte para que las firmas estuvieran de acuerdo.

El uso de una compilación de la aplicación de depuración (./gradlew assembleDebug) en lugar de la versión puede ayudar a evitar el problema porque las aplicaciones de depuración no necesitan ser firmadas antes de que se instalen.

0

Esta solución es sólo para la aplicación del sistema

En mi caso, se produce este error cuando creo caso InstrumentationTest para la aplicación del sistema existente (Estamos construyendo nuestro propio sistema operativo Android basado en AOSP)

Nosotros Normalmente compila el apk usando el comando mm basado en el archivo Android.mk, aquí la clave es LOCAL_CERTIFICATE.

Encuentra Android.mk en la aplicación del sistema Targeted y el proyecto de caso de prueba desarrollado por ti.

valor de aplicación del sistema Android.mk LOCAL_CERTIFICATE debe coincidir con el valor del proyecto Android.mk LOCAL_CERTIFICATE caso InstrumentationTest

Buena suerte!

Cuestiones relacionadas