(AOT) Cache se construye a medida que se ejecutan las aplicaciones Cache se construye al arrancar el dispositivo Apps se compilan cuando se ejecutan Almacena las aplicaciones compiladas Mayor consumo espacio interno Settings>Developer options>Select runtime
se piden 33% aplicaciones piden más permisos de los necesarios ¿Es necesario android.permission.CAMERA? ContentValues contentValues = new ContentValues(); contentValues.put(MediaStore.Images.Media.DESCRIPTION, "Image capture"); contentValues.put(MediaStore.Images.Media.TITLE, "new image"); Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(intent, 1);
antes de instalar/actualizar • Revisar comentarios de los usuarios • Deshabilitar conexión automática a redes Wifi y evitar conectarnos a redes Free. Recomendaciones para evitar malware
No es recomendable almacenar información sensible relativa a nombres de usuario y contraseñas Librería para securizar este fichero https://github.com/scottyab/secure-preferences ROOT
guardar passwords No guardar datos de formularios Limpiar Caché webSettings.setSavePassword(false); webSettings.setSaveFormData(false); @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); view.clearCache(true); //delete local files in the browser }
public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }