将 jar 转换为 dex 时保留文件夹
Keep folders while converting jar to dex
我想将我的 jar 转换为 dex:dx --dex --output=file.dex file.jar
。 file.jar
中存在文件夹 cnf/
,其中包含我的 类 所需的配置文件。但是生成的 dex 文件中没有文件夹 cnf/
。
如何在转换时将所有文件和文件夹保留在 dex 文件中?
这是不可能的,没有办法在 dex 文件中存储任意文件。您可以获得的最接近的方法是创建一个 "android" jar 文件,将 dex 文件作为 classes.dex 条目,以及您想要放入其中的任何其他内容,例如 cnf 文件夹。
您可以将 cnf/
放入 APK 文件中。 APK 是一个 ZIP 存档。在设备上解压后 cnf/
文件夹将位于类路径中,因此它应该与在 JAR 中一样工作。
构建后从 APK 内的 META-INF 文件夹中删除 MANIFEST.MF 和证书;
zip -d file.apk "META-INF/*"
将您的资源 (cnf/
) 添加到 APK;
aapt add -v file.apk cnf/*
重新签署 APK。这是一个使用默认调试密钥的示例:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore file.apk androiddebugkey
我想将我的 jar 转换为 dex:dx --dex --output=file.dex file.jar
。 file.jar
中存在文件夹 cnf/
,其中包含我的 类 所需的配置文件。但是生成的 dex 文件中没有文件夹 cnf/
。
如何在转换时将所有文件和文件夹保留在 dex 文件中?
这是不可能的,没有办法在 dex 文件中存储任意文件。您可以获得的最接近的方法是创建一个 "android" jar 文件,将 dex 文件作为 classes.dex 条目,以及您想要放入其中的任何其他内容,例如 cnf 文件夹。
您可以将 cnf/
放入 APK 文件中。 APK 是一个 ZIP 存档。在设备上解压后 cnf/
文件夹将位于类路径中,因此它应该与在 JAR 中一样工作。
构建后从 APK 内的 META-INF 文件夹中删除 MANIFEST.MF 和证书;
zip -d file.apk "META-INF/*"
将您的资源 (
cnf/
) 添加到 APK;aapt add -v file.apk cnf/*
重新签署 APK。这是一个使用默认调试密钥的示例:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore file.apk androiddebugkey