我正在反向工程一个android应用程序。自从我提出这个建议已经有一段时间了,但是在编辑APK以处理某些语言区域时遇到了问题。该应用程序已安装,但尝试在手机上运行时出错,这包括如果我只执行apktool d,然后执行apktool b,则通过日志猫出现此异常:


造成原因:java.util.MissingResourceException:找不到资源
包'j.bc.l.resources.resources.resources_en_US',键''


通过ResourceBundle.getBundle调用。通过此页面,我认为这是与解决不同语言的资源有关的问题。

我认为问题是默认情况下搜索不存在于其中的路径应用程序,所以它找不到文件,并且应用程序崩溃了。我解压缩了apk文件,在j.bc.l.resources中有一个resources.properties文件,但是没有用于搜索的resources_en_US目录。
所以在这个p不好意思,因为我需要对应用程序进行更改,所以我假设我需要使用新的属性文件在该目录中放置resources_en_US,但是我不知道如何将其修补到应用程序中。我无法解压缩和重新压缩,因为据我所知,它弄乱了标头,因此apktool和安装将失败。妥善解决。代码中没有对resources_en_US的引用,因此我假设使其正常工作的唯一方法是将目录修补到应用中并重新构建。但是,如果有解决此问题的简便方法,我也可以接受。

评论

底线-APK是存档文件您可以从其中提取文件,向其中添加文件并执行所有其他操作。因此,只需使用“您喜欢的存档管理器”将其打开,然后将其添加到APK中即可。

我知道这一点,但是正如我在倒数第二段中所述,在添加文件后尝试退出并安装它失败。我得到的INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES到目前为止,我认为这是因为我的证书与原始证书不同。这可能是我的应用专门编译的方式,或者因为这是一个评估,并且我没有原始证书,但是无论哪种情况,解压缩添加文件和重新压缩都无法解决任何问题。

您可以尝试使用调试密钥为APK退出吗?

那行得通,并且一切都正确安装。感谢你们俩。我将提出一个正式的解决方案并关闭问题

#1 楼

为了使它起作用,我不得不使用原始帖子上留下的评论的组合。正如我在主题中提到的那样,该问题看起来像是问题,资源束未正确包含在内。我最好的猜测是原始编译设置使默认资源包不同于此处记录的资源包。无论是语言兼容性方面的问题,还是Eclipse(或他们用来构建的内容)在后台进行的操作。根据抛出的异常,将其放入resources \ resources_zh_CN。应用程序从属性文件读取的常量/参数看起来没有什么特别的(而且都是英文),所以我不必对其进行任何更改。

之后我在此处删除了META-INF文件夹,然后重新压缩并使用默认的调试密钥签名:

以正确的顺序组合所有内容。