You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用发布至Play Store后无法从远程MySQL数据库获取数据

问题排查与解决方案

针对你遇到的Debug模式正常、Play Store发布版本仅能插入数据但无法获取数据(API返回NULL)的问题,以下是常见的排查方向和解决方法:

1. 网络安全配置限制

Android 9(API 28)及以上版本默认禁止明文HTTP请求。Debug模式下,Android Studio会自动注入临时配置允许明文请求,但Release版本(尤其是Play Store签名包)不会包含该配置:

  • 检查AndroidManifest.xml的<application>标签是否配置了android:networkSecurityConfig="@xml/network_security_config",若未配置,需添加网络安全配置文件,允许访问你的Azure虚拟机IP/域名的HTTP请求;
  • 临时测试可在<application>标签添加android:usesCleartextTraffic="true",但Play Store不推荐长期使用,建议尽快将API切换为HTTPS协议。

2. ProGuard/R8 混淆破坏数据解析

Release版本默认开启代码混淆,若未正确配置混淆规则,会导致网络请求实体类、解析库(如Gson、Retrofit)被混淆,进而解析失败返回NULL:

  • 打开Module级别的build.gradle,确认minifyEnabled是否为true;
  • 在proguard-rules.pro中添加规则,保留你的数据实体类、网络请求相关类不被混淆,示例:
    -keep class com.yourpackage.model.** { *; }
    -keepattributes Signature
    -keepattributes *Annotation*
    # 若使用Gson,需额外添加
    -keep class com.google.gson.** { *; }
    -keep class com.google.gson.annotations.** { *; }
    

3. 签名差异导致API验证失败

若你的PHP API包含应用签名校验逻辑(如包名+签名哈希匹配),Debug与Release版本使用不同签名文件,会导致Release请求被拒绝:

  • 检查PHP接口是否存在签名验证逻辑;
  • 若存在,获取Release版本的签名哈希(使用本地签名文件或Play App Signing生成的签名),添加到API白名单中。获取本地签名哈希的命令:
    keytool -list -v -keystore your-release-keystore.jks
    
  • 若开启了Play App Signing,需在Google Play控制台的「应用签名」页面获取Google生成的签名哈希。

4. Play App Signing的额外影响

开启Play App Signing后,Google会替换你上传的APK签名,此时API验证需使用Google生成的签名哈希,而非本地Release签名哈希,务必确认配置的哈希值正确。

5. 权限与请求配置检查

  • 确认AndroidManifest.xml中已添加<uses-permission android:name="android.permission.INTERNET" />,该权限无需动态申请,但遗漏会导致网络请求失败(你能插入数据,此可能性较低,但仍需确认);
  • 检查Debug与Release版本的API请求URL、参数是否一致,避免BuildConfig中区分环境时出现配置错误。可在Release版本中添加日志(如Firebase Crashlytics),打印请求URL、参数及原始返回数据,定位请求或响应异常。

内容的提问来源于stack exchange,提问作者Naresh Pradhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:36:59