Использование инструмента jobb в Android

Я запускаю следующую команду, чтобы получить зашифрованный файл obb для расширения apk.

jobb -d /home/manoj/Desktop/Test -o main.1.com.example.helloworld.obb -k "manoj" -pn com.example.helloworld -pv 1

Я получаю следующее исключение. Пожалуйста, скажите, что пошло не так.

Slop: 0   Directory Overhead: 0
Slop: 1132   Directory Overhead: 768
Partial Sector [32] writing to sector: 15
Partial Sector [32] writing to sector: 15
Partial Sector [32] writing to sector: 15
Partial Sector [331] writing to sector: 223
Partial Sector [417] writing to sector: 400
Partial Sector [406] writing to sector: 577
Partial Sector [333] writing to sector: 754
Partial Sector [223] writing to sector: 931
java.io.IOException: FAT Full (1676, 1677)
at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:298)
at de.waldheinz.fs.fat.Fat.allocAppend(Fat.java:376)
at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:353)
at de.waldheinz.fs.fat.ClusterChain.setChainLength(ClusterChain.java:164)
at de.waldheinz.fs.fat.ClusterChain.setSize(ClusterChain.java:132)
at de.waldheinz.fs.fat.FatFile.setLength(FatFile.java:91)
at de.waldheinz.fs.fat.FatFile.write(FatFile.java:154)
at com.android.jobb.Main$1.processFile(Main.java:495)
at com.android.jobb.Main.processAllFiles(Main.java:604)
at com.android.jobb.Main.processAllFiles(Main.java:600)
at com.android.jobb.Main.main(Main.java:417)
Exception in thread "main" java.lang.RuntimeException: Error getting/writing file with           name: main.1.com.example.helloworld.obb
at com.android.jobb.Main$1.processFile(Main.java:501)
at com.android.jobb.Main.processAllFiles(Main.java:604)
at com.android.jobb.Main.processAllFiles(Main.java:600)
at com.android.jobb.Main.main(Main.java:417)

person Techie Manoj    schedule 26.11.2012    source источник
comment
У меня та же проблема, что и у вас... Все еще не знаю, как ее решить. Если вы нашли решение, пожалуйста, дайте мне знать.   -  person xarlymg89    schedule 05.03.2013
comment
См. проблема Android № 53878.   -  person tc.    schedule 10.04.2013


Ответы (7)


Вы также можете получить следующую ошибку с помощью jobb-Tool (по крайней мере, в Windows с jobb.bat), если у вас много файлов.

de.waldheinz.fs.fat.Directory Full Exception: directory is full

Это связано с тем, что формат файла obb сохраняется в FAT16, что позволяет хранить только 512 записей/файлов в корневом каталоге.

В Windows: если у вас есть папка «данные» с потерянными изображениями и скопирована в каталог android sdk-tools

  • данные/1.jpg
  • данные/2.jpg
  • данные/3.jpg
  • данные/...
  • данные/5000.jpg

и вы используете

console>>>jobb -pn my.package.name -pv VERSIONCODE -d ./data -k obb_password
-o main.VERSIONCODE.my.package.name.obb

вы получите указанную ошибку. Попробуйте добавить одну иерархию каталогов и сделать каталог «данные» подпапкой.

  • корень/данные/1.jpg
  • корень/данные/2.jpg
  • корень/данные/3.jpg
  • корень/данные/...
  • корень/данные/5000.jpg

использовать

console>>>jobb -pn my.package.name -pv VERSIONCODE -d ./root -k obb_password 
-o main.VERSIONCODE.my.package.name.obb

вы должны иметь в виду, что если вы хотите прочитать из кэша позже, что изображения теперь находятся в подпапке.

person lx222    schedule 17.04.2013
comment
Вы спасли мои дни. Большое спасибо - person anhnt; 09.08.2015
comment
где я могу найти выходной файл (файл obb) - person Ayoub Anbara; 19.10.2019

В дополнение к тому, что Ix222 сказал о том, что FAT16 ограничивает количество файлов в корневом каталоге, существует также проблема с самим инструментом jobb и используемой им библиотекой FAT.

В библиотеке FAT максимальный размер файловой системы для FAT12 определяется как 4 МБ, для FAT16 — 512 МБ, а для всего, кроме этого, используется FAT32. На самом деле FAT12 позволяет использовать до 16 МБ (32 МБ в некоторых реализациях), а FAT16 — до 2 ГБ. Это является причиной того, что если размер вашего OBB с использованием текущего инструмента ограничен диапазоном 4 МБ ‹= размер OBB ‹ 512 МБ.

Инструмент jobb также ошибочно полагается на библиотеку FAT для определения файловой системы, но он только совместим с FAT16.

Быстрое решение — создать собственную версию инструмента jobb (рекомендую создать резервную копию существующего JAR-файла и заменить его своим собственным, для его запуска по-прежнему следует использовать пакетный файл Windows) с модифицированной версией встроенной библиотеки libfat32. , Простого изменения метода, который определяет файловую систему, чтобы возвращать FAT16 для чего-либо до 2 ГБ и FAT32 в противном случае достаточно для создания действительных файлов OBB размером до 2 ГБ (что в любом случае является пределом для файлов OBB).

SuperFloppyFormatter возвращает FAT32 для всего, что превышает 512 МБ?

https://code.google.com/p/android/issues/detail?id=60294

person monkey0506    schedule 21.09.2013

У меня было такое же поведение, но это было только в тестовой структуре каталогов, с которой я экспериментировал. В нем почти не было контента, так что, возможно, это проблема с jobb при таких маленьких размерах. Или, может быть, соблюдаются некоторые условия ошибки в зависимости от места, занимаемого всеми файлами. Я прокомментировал более подробно код Google. проблема.

Интересно, может ли добавление пары избыточных файлов избежать этой ошибки для тех, кто испытывает ее с нетривиальной структурой каталогов.

person darrenp    schedule 30.07.2013

Столкнулся с той же проблемой, и обходной путь, который я нашел, состоит в том, чтобы создать архив с минимальным размером 4 мес. Чтобы добавить поддельные данные в мой небольшой архив, чтобы это сработало…

Проблема : https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=53878

person Nicolas Lauquin    schedule 21.08.2013
comment
Чтобы уточнить, OBB любого размера файла до 2 ГБ должен быть действительным. Предложения по увеличению их размера как минимум до 4 МБ являются обходным путем для основной проблемы. И... что такое вообще? :П - person monkey0506; 21.09.2013

В моем случае я решил проблему, удалив несколько скрытых файлов...

Мой босс владеет и работает на MacOSX, я на Windows. Итак, когда он передал его и после открытия папки, я обнаружил несколько скрытых файлов, таких как .DS_Store и ._.DS_Store. Кроме того, я нашел скрытые временные JPG, например, если у меня был файл с именем image1.jpg, у меня был еще один .image1.jpg. Итак, в конце концов я удалил все скрытые файлы.

И вуаля!

person russellhoff    schedule 11.06.2015

В моем случае это решило повторный запуск программы с теми же параметрами и тем же содержимым в каталоге, который я хотел упаковать.

./jobb -d /media/assets/ -o my-app-assets.obb -k my_pass -pn package-name -pv your-version
person xarlymg89    schedule 05.03.2013

В моем случае мне просто нужно добавить один файл размером 2,46 МБ. Добавление меньшего файла не сработало. Так что просто попробуйте добавить больше фиктивных файлов, пока это не сработает.

person drunkcat    schedule 23.06.2020