10

我正在运行以下命令来获取我的加密 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)
4

7 回答 7

4

如果您有很多文件,您还可以使用 jobb-Tool(至少在带有 jobb.bat 的 Windows 中)出现以下错误。

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

您必须记住,如果您想稍后从 obb 中读取,图片现在位于子文件夹中。

于 2013-04-17T22:04:01.640 回答
2

除了 Ix222 所说的 FAT16 限制根目录中的文件数量之外,jobb 工具本身以及它使用的 FAT 库也存在问题。

在 FAT 库中,它确定 FAT12 的最大文件系统大小为 4 MB,FAT16 为 512 MB,除此之外使用 FAT32。实际上,FAT12 最多允许 16 MB(在某些实现中为 32 MB),而 FAT16 最多允许 2 GB。就是如果您使用当前工具的 OBB 大小限制在 4 MB <= OBB 大小 < 512 MB 范围内的原因。

jobb 工具也错误地依赖 FAT 库来确定文件系统,但它只兼容 FAT16。

一个快速的解决方法是使用内置的 libfat32 库的修改版本构建您自己的 jobb 工具版本(我建议备份现有的 JAR 并用您自己的 JAR 替换它,仍应使用 Windows 批处理文件来运行它) . 简单地修改确定文件系统的方法以返回 FAT16 为 2 GB 和 FAT32 否则足以构建高达 2 GB 的有效 OBB 文件(无论如何这是 OBB 文件的限制)。

SuperFloppyFormatter 为超过 512 MB 的任何内容返回 FAT32?

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

于 2013-09-21T07:53:15.543 回答
1

我得到了相同的行为,但这只是在我正在试验的测试目录结构中。它几乎没有内容,所以这可能是这些小尺寸的 jobb 的问题。或者,根据所有文件占用的空间,可能会遇到一些错误条件。我已经更详细地评论了 Google Code 问题。

我想知道添加几个冗余文件是否可以避免那些使用非平凡目录结构遇到这种错误行为的人。

于 2013-07-30T09:53:06.430 回答
0

Got the same problem and the workaround I found is to make an archive with a minimum size of 4mo. To add fake data to my small archive make it worked…</p>

Issue : 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

于 2013-08-21T13:56:03.630 回答
0

就我而言,它解决了再次运行程序的问题,在我想要打包的目录中使用相同的参数和相同的内容。

./jobb -d /media/assets/ -o my-app-assets.obb -k my_pass -pn package-name -pv your-version
于 2013-03-05T15:25:13.337 回答
0

就我而言,我解决了删除几个隐藏文件的问题......

我的老板拥有并在 MacOSX 上工作,我在 Windows 上工作。所以,当他传过去,打开文件夹后,我发现了几个隐藏文件,比如.DS_Store和._.DS_Store。此外,我还发现了隐藏的临时 JPG,例如,如果我有一个名为 image1.jpg 的文件,我还有另一个 .image1.jpg。所以,最终我删除了所有隐藏文件。

瞧!

于 2015-06-11T12:52:26.837 回答
-1

就我而言,我只需要添加一个大小为 2.46 MB 的文件。添加较小的文件不起作用。因此,只需尝试添加更多虚拟文件,直到它起作用。

于 2020-06-23T11:16:26.783 回答