gpt4 book ai didi

android - 非自定义签名的 APK(通过调试生成)运行正常但自定义签名的 APK(发布)不起作用的可能原因是什么?

转载 作者:行者123 更新时间:2023-11-30 00:53:53 25 4
gpt4 key购买 nike

我的 Android 应用即将结束。调试多次运行正常,无任何错误。它运行得很好。现在是我构建版本并发布应用程序的时候了。我遵循可以通过谷歌轻松找到的所有步骤。事实上,已签名的 APK 安装正常并且应用启动正常但是如果用户交互以在应用的屏幕之间导航,它会无缘无故地崩溃。并非所有屏幕切换都会导致应用程序崩溃,只是其中一些,我注意到它可能涉及此处的 Reflection。我设计了自己的绑定(bind)系统,将 ViewModel 与 Fragment 绑定(bind)在一起,并且必须使用 Reflection,别无他法。

我完全相信这不是我的代码中的任何错误,因为应用程序在 Debug模式下运行得很好。在几乎完全失去发布该应用程序的所有希望时,我在 debug 文件夹中找到了 APK 文件的签名版本(该签名版本仅在以下情况下生成您开始调试应用程序以在某些目标设备上运行 - 即使是某些模拟器,在 Debug模式下构建也不会生成该文件)。我很幸运,签名的 apk 可以正常工作。我可以将该 APK 部署到新设备并正常安装,应用程序按预期运行。

所以一定是发布过程出了问题。以下是有关 Release模式配置的一些信息(主要在 Android 选项 选项卡中):

  • Packaging(包装属性):这里没有勾选任何东西。
  • 链接器:我尝试了仅 Sdk 程序集Sdk 和用户程序集,但没有任何效果。<
  • 高级属性:我检查了所有选项以支持所有可能的 CPU 架构(这应该不是问题,因为在 Debug模式下,还会检查所有这些选项)。

在学习Xamarin Android之初,我尝试查找有关发布Android应用程序的信息并完成了一个简单的测试(部署一个简单的应用程序)。当时它工作正常(可能是因为它太简单了),但现在当涉及到一个复杂的(主要涉及我的绑定(bind)系统,它大量使用反射)时,它可能会在某些用户交互时崩溃。我还有一个单独的库项目(包含一些自定义 View )在我的主项目中引用了 OK(不确定这是否会中断,但是一个自定义 View 可以正常使用,而其他一些可能会导致崩溃)。因为所有崩溃都发生在已编译的构建中,所以我无法调试任何东西以查看可能出了什么问题。

这里没有提供代码,因为代码太多,好像很多地方都崩溃了,还有一个更重要的原因是代码应该不是问题(原因之一我在上面解释过 - 它在调试中运行顺利模式,我什至在调试文件夹中找到了一个签名的 APK 文件,可以正常安装,然后应用程序运行正常,就像在 Debug模式下一样)。

最佳答案

既然您说您正在使用大量反射,那么首先要做的是:

  • 在 Android build设置中:
    • 如果选中则禁用 Proguard
    • 将链接器选项更改为不链接
    • 重建发布版本

更新:因为这行得通并且应用程序不再崩溃。

The linker will sometimes remove code that you want to preserve. For example:

您将需要确定要删除哪些类和/或方法,因为它们没有直接引用并且仅通过反射调用并保留它们以防止链接器删除它们。

如果它们在您的代码中,您可以使用 [Preserve] 属性。

如果它们是第 3 方库或 Xamarin.Android 框架,您可以创建对这些类/成员的“硬编码”引用,以便链接器看到您需要它们。

  • You might have code that you call dynamically via System.Reflection.MemberInfo.Invoke.
  • If you instantiate types dynamically, you may want to preserve the default constructor of your types.
  • If you use XML serialization, you may want to preserve the properties of your types.

引用:https://developer.xamarin.com/guides/android/advanced_topics/linking/

关于android - 非自定义签名的 APK(通过调试生成)运行正常但自定义签名的 APK(发布)不起作用的可能原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40484473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com