Me preguntaba si las personas han tenido éxito en la creación/montaje de archivos encriptados OBB (Opaque Binary Blob) en Android? Esta es una continuación de este question 1: What is OBB(Opaque Binary Blob) in Android develop site?, siguiendo la dirección en que post que ejecuta la siguiente (de ICS 4.01 línea de base, probamos tanto en Ubuntu 10.10-32bit y Ubuntu 12.4-64bit):Usando archivos OBB encriptados en Android
sudo modprobe cryptoloop
sudo modprobe twofish
sudo modprobe vfat
./mkobb.sh -d /tmp/obb/ -kblahblah -o /tmp/out.obb -v
obbtool a -n com.test.blah -v 1 -s 997ff9b1516a6788 /tmp/out.obb # 997ff... is the salt from the mkobb step
obbtool i /temp/out.obb # verify the obb file
adb push /temp/out.obb /sdcard/
Desde aquí, copio el archivo out.obb en/sdcard/en mi teléfono. Y el monte con el siguiente código:
String obbFile = Environment.getExternalStorageDirectory() + "/out.obb";
mgr = (StorageManager) getSystemService(Context.STORAGE_SERVICE); // mgr is a member varible of my main activity
Log.i("OBB", "trying to mount : " + obbFile + " does it exist? " + new File(obbFile).exists());
if (mgr.mountObb(obbFile, "blahblah", new OnObbStateChangeListener(){
@Override
public void onObbStateChange(String path, int state) {
Log.i("OBB", String.format("onObbStateChange:Path [%s] State=%d", path, state));
if (state == OnObbStateChangeListener.ERROR_COULD_NOT_MOUNT){
Log.i("OBB", "THIS IS THE ERROR I GET");
}
}}))
{
Log.i("OBB", "Attempting to mount");
} else {
Log.i("OBB", "Mount failed"); // this isn't happening
}
El resultado final de esto es:
E/MountService(2004): Couldn't mount OBB file: -1
I/OBB (21219): onObbStateChange:Path [/mnt/sdcard/out.obb] State=21
I/OBB (21219): THIS IS THE ERROR I GET
Alguien ve algún problema con esto? ¡Parece que debería funcionar!
Nota: Tengo android.permission.WRITE_EXTERNAL_STORAGE y también consigo información prevista a partir de:
ObbInfo info = ObbScanner.getObbInfo("/sdcard/out.obb"); // this returns expected info, so the file is there and able to be read.
Editar: Enlace a Android-desarrollador pregunta grupo here
El obb ya debe estar formateado con el paso mkobb.sh, en ese script llama a mkfs.vfat. En segundo lugar, si formatea el obb en cada montura, ¡borrará sus datos cada vez que lo monte! Gracias por la respuesta. – user931366
En primer lugar, el dispositivo que se formateó con la secuencia de comandos (mkfs.vfat) en realidad es el dispositivo en la máquina Linux NO el dispositivo en Android (por ejemplo, su teléfono). En segundo lugar, lamento la ambigüedad, me refiero a que debe formatear el dispositivo virtual solo UNA VEZ, luego puede montarlo como de costumbre. – user1482130