Android 个已签名的 APK 无法进行 API 个调用

Android signed APK can not make API calls

我们的应用程序在进行 API 调用时开始挂起,尽管几个月没有在生产中更新。我们可以使用应用程序的 Play 商店版本或通过创建本地构建的 APK 文件并对其进行签名来重现该问题。但是,我们无法在浏览器或本地构建的未签名 APK 文件上复制该问题。如果我们执行的操作发出 API 调用然后离开应用程序几分钟,我们会看到“应用程序没有响应”消息,即使您仍然可以在应用程序中导航。

是否有任何方法可以解决此问题或查看导致应用程序无响应的原因?我试过查看 network/debugging 选项卡,但在已签名的设备上似乎不可能。

# Generate Key
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000


# Sign the APK
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

您是否已将混淆器 shrinkResourcesmodifiable 启用到 gradle? 如果是,那么您必须为您的模型添加 proguard 规则 类

我在这个问题中发布的问题与我在 中发布的问题相同 issue/solution。根据应用程序的构建方式,这个问题只是以不同的方式出现。为了清楚起见,我从下面的另一个问题中复制了解决方案:

我们找到了解决办法。从不同的源服务器颁发证书就可以了。据我所见,证书、根证书和中间证书都是有效的。 Android 应用程序出于某种原因不接受证书有效。据我所知,这可能是由于中间证书过期或 Cordova 使用旧版本的 BoringSSL 造成的。

如果有人 运行 在 production/release 构建中遇到此问题,请进入 Android 清单文件并将 Debuggable 设置为 true。这个问题应该消失了。然后,使用 debuggable false 重新运行 production/release 构建,问题应该会再次出现。保持 production/release build on debuggable false 并将 android:usesCleartextTraffic 设置为 true。这个问题应该再次消失。如果您得到相同的结果,则您可能 运行 遇到类似的问题,即应用程序不接受证书(或者您使用的是 HTTP 而不是 HTTPS),新证书可能会解决该问题。

<application android:debuggable="true"android:usesCleartextTraffic="true">