将 jar 转换为 dex 时保留文件夹

Keep folders while converting jar to dex

我想将我的 jar 转换为 dex:dx --dex --output=file.dex file.jarfile.jar 中存在文件夹 cnf/,其中包含我的 类 所需的配置文件。但是生成的 dex 文件中没有文件夹 cnf/

如何在转换时将所有文件和文件夹保留在 dex 文件中?

这是不可能的,没有办法在 dex 文件中存储任意文件。您可以获得的最接近的方法是创建一个 "android" jar 文件,将 dex 文件作为 classes.dex 条目,以及您想要放入其中的任何其他内容,例如 cnf 文件夹。

您可以将 cnf/ 放入 APK 文件中。 APK 是一个 ZIP 存档。在设备上解压后 cnf/ 文件夹将位于类路径中,因此它应该与在 JAR 中一样工作。

  1. 构建后从 APK 内的 META-INF 文件夹中删除 MANIFEST.MF 和证书;

    zip -d file.apk "META-INF/*"
    
  2. 将您的资源 (cnf/) 添加到 APK;

    aapt add -v file.apk cnf/*
    
  3. 重新签署 APK。这是一个使用默认调试密钥的示例:

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore file.apk androiddebugkey