4 votos

¿Cómo dividir las aplicaciones que comparten un UID?

Durante un tiempo, tenía un signo de exclamación en lugar del estado de la señal en la barra superior, y algunas aplicaciones no se daban cuenta de que estaban conectadas a Internet cuando otras funcionaban perfectamente. Gracias a AFWall+ troncos, he encontrado el problema. Necesito permitir el acceso a una aplicación llamada com.Android.engineeringmode .

Pero esta app está empatada (en el OnePlus 3) con algunas otras, como puedes ver en esta captura de pantalla : screenshot taken in AFWall+

Estoy de acuerdo en permitir el acceso a Modo ingeniero pero ciertamente no a todo este montón de aplicaciones (especialmente los servicios de cámara o de huellas dactilares).

Después de buscar en la web, encontré que todas estas aplicaciones están vinculadas en /datos/sistema/paquetes.xml utilizando el sharedUid 1000 . Pero se dice que nunca se cambia el UID de una aplicación cuando se comparte (no entendí bien por qué).

Estoy usando la ROM original ( OxygenOS 3.2.8 ) de la OP3, pero rooteado (consiguió Xposed un Xprivacy también), por lo que es Android 6.0.1 .

¿Hay alguna posibilidad de permitir el acceso a la red a Modo ingeniero ¿sólo?

0 votos

Incluso si cambias el sharedUID en ese archivo XML, la modificación se pierde después de un reinicio. Volvemos a la casilla de salida.

2voto

Andy Brudtkuhl Puntos 1714

No creo que sea posible cambiar esto sin recompilar la ROM. No se puede cambiar el UID de las aplicaciones una vez instaladas porque ya no podrán acceder a sus archivos y porque confundirá el sistema de permisos de las aplicaciones.

Quizás haya alguna otra forma de evitar el problema con Xposed, pero no lo sé. Podría ser posible que un módulo de Xposed detectara la llamada exacta que hace el paquete (para distinguirla de las llamadas que hacen otros paquetes en el mismo proceso), y marcarla para que AFWall la permita. De esta manera no tendrías que dividir las aplicaciones en absoluto.

Una alternativa podría ser encontrar donde que está tratando de enviar tráfico, y la lista blanca de esa dirección para ese proceso. De nuevo, esto resolvería el síntoma específico sin dividir las aplicaciones. Si se trata de la detección del portal cautivo, probablemente http://client.android.com/generate_204 .

0 votos

Gracias por esta respuesta, he pensado en utilizar un script personalizado que es algo bastante fácil de hacer con AFWall+, pero no se me ocurría la forma de marcar correctamente la petición. Voy a probar si puedo poner en la lista blanca la detección del portal cautivo y ver si se soluciona mi problema.

0 votos

Usando adb shell acabo de eliminar la comprobación con el comando "settings put global captive_portal_detection_enabled 0", y luego reiniciar. Parece que arregló mi problema, gracias por señalar lo de la detección del portal cautivo.

0 votos

Y por cierto, gracias también por la breve explicación de por qué no debo tratar de deslizar el paquete compartiendo un UID

2voto

Guillermo Gomez Puntos 423

La solución que Dan Hulme ha proporcionado es correcto y me gustaría dejarlo más claro: Hay que volver a compilar la ROM pero ¡espera! Abre el código fuente de Modo ingeniero y buscar algo en AndroidManifest.xml como sharedUserId="android.uid.system" y cambiarlo a otra cosa.

Ese es el fundamento de una identificación de usuario compartida. Debes modificar la aplicación para que ya no requiera un UID compartido.

0 votos

Puede que tengas razón, realmente no pensé en esto porque no quería molestarme en recompilar todo (y reinstalar todas mis aplicaciones...). La solución elegida realmente arregló mi problema de la mejor manera. Tal vez el problema aquí es que he pedido algo equivocado, tratando de ir un paso adelante y queriendo dividir las aplicaciones atadas cuando lo que realmente quería era que la detección de acceso a Internet se comportara correctamente (espero que se pueda entender mi pobre inglés). De todas formas, gracias por tu interesante respuesta.

1voto

Stopi Puntos 36

Aunque el comentario de iBug parece una mejor respuesta a la pregunta, mi verdadera necesidad era tener una correcta detección de acceso a Internet sobre el sistema.

Para solucionar mi problema tuve que abrir un adb shell , teclea

settings put global captive_portal_detection_enabled 0

Luego reinicie. El signo de exclamación desapareció y las aplicaciones problemáticas se comportan mejor ahora.

Para que conste, esto impide una comprobación en los servidores de Google. Esta comprobación era imposible con las reglas de mi firewall.

Gracias a Dan Hulme y a iBug por su ayuda.

2 votos

En caso de que no sea obvio para otros visitantes, tenga en cuenta que esto desactiva la detección por completo, por lo que no obtendrá la notificación "Iniciar sesión en la red Wi-Fi" cuando se conecte a un portal cautivo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X