Android 应用程序在发布中崩溃,但在调试 NullPointerException 中不会崩溃

2024-02-28

由于从我正在使用的 API 返回的数据发生了更改,我最近更改了 2 行代码作为解决方法。现在,当使用发布的 apk 和 aab 时,应用程序崩溃。但是,当我通过 API 27 上的 Android 模拟器使用该应用程序并将 API 27 设备连接到运行调试 apk 的计算机时,该应用程序可以完美运行。

我真的被这个问题难住了,根本不明白错误消息。

FATAL EXCEPTION: main
Process: com.guy.aqi, PID: 8328
java.lang.NullPointerException: throw with null exception
    at com.guy.aqi.n.a(Unknown Source:3)
    at com.guy.aqi.m.b(CurrentAirQualityFragment.java:8)
    at com.guy.aqi.m.b(CurrentAirQualityFragment.java:6)
    at com.guy.aqi.d.a(Unknown Source:4)
    at b.a.a.a.m.c(StringRequest.java:4)
    at b.a.a.a.m.a(StringRequest.java:1)
    at b.a.a.h$a.run(ExecutorDelivery.java:4)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我的 API 停止发送“主要污染物”字符串,所以我更改了这一行:

textViewMainPollutantUS.setText("U.S. Main Pollutant: " decodePollutant(mainPollutantUS));

to

textViewMainPollutantUS.setText("");

和这一行:

textViewMainPollutantCN.setText("China Main Pollutant: " decodePollutant(mainPollutantCN));

to

textViewMainPollutantCN.setText("");

我预计更改这些行可以解决问题。但现在问题似乎在应用程序的调试版本中得到解决,但在发布版本中没有得到解决。

proguard-rules.pro

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**

# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase

# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*

# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform

# Prevent Proguard from inlining methods that are intentionally extracted to ensure locals have a
# constrained liveness scope by the GC. This is needed to avoid keeping previous request references
# alive for an indeterminate amount of time. See also https://github.com/google/volley/issues/114
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

##---------------End: proguard configuration for Gson  ----------

-keep class com.crashlytics.** { *; }
-keepattributes SourceFile,LineNumberTable

对我来说,添加行(您放置 POJO 文件的包可能有其他名称):

-keep class [mypackagename].model.** { *; }

-keep class [mypackagename].datamodel.** { *; }

proguard.rules 完美运行,然后选项:

android
{
    ...

    buildTypes {

        release {

            minifyEnabled true 
            shrinkResources true

        }
    }
}

在 build.gradle 中设置(模块:app)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序在发布中崩溃,但在调试 NullPointerException 中不会崩溃 的相关文章

  • 每次我尝试将任何内容上传到 android 模拟器时都会出现 IOException

    我使用的是 Windows 7 Ultimate 64 位版本和带有 Android 插件的 Eclipse 3 5 每次我创建一个新项目并尝试发布它时 都会收到如下错误 2010 02 15 22 48 10 EPG3 Uploading
  • SharedPreferences - java.lang.Boolean 无法转换为 java.lang.String

    我对因不应该抛出的异常而感到困惑 错误如下 java lang ClassCastException java lang Boolean cannot be cast to java lang String 但是 我的代码不会尝试将布尔值转
  • 您的手机中未安装应用程序

    我在模拟器中运行该应用程序 它成功运行 并且应用程序的图标显示在模拟器菜单中 但是当我尝试从模拟器菜单再次运行该应用程序时 它不允许我从中运行并显示 Toast 您的手机中未安装应用程序 在图像中 红色圆形是我的应用程序图标 如果您有您的M
  • 使用 Android NDK r5b 链接静态库时出现问题 [重复]

    这个问题在这里已经有答案了 最近升级到 NDK r5b 构建失败 并出现对静态库中函数的 未定义引用 这是错误 home brian workspace VoiceEngineDemo obj local armeabi v7a objs
  • 有没有办法获取 Android 扩展文件中特定文件的 Url?

    我正在构建一个 PhoneGap 应用程序 其中包含大型音频和视频文件 在 Android 中 媒体文件应位于扩展文件中 以使应用程序大小保持在 Google Play 50 MB 限制以下 我目前正在考虑两种播放视频文件的方法 将所需的视
  • WebView 与 Chrome 自定义选项卡

    我正在构建一个应用程序 在详细活动中我必须显示一个网页 我本来打算使用 WebView 但后来我看到了 Chrome Custom Tab 你们认为最好实施什么 为什么 如果您只想显示某个页面 那么我建议您使用 chrome 自定义选项卡
  • Android 闹钟应用程序在 Oreo 下因 NullPointerException 导致 SystemUI 崩溃(仅限)

    我有一个 Android 闹钟应用程序 我有通常的 警报意图 gt 接收器 gt 活动链 其最后一步创建一个全屏窗口并发出警报 所有这些在 Oreo API 26 之前的 Android 版本上都可以正常工作 但在 Oreo 上 当警报触发
  • 带有 ListTiles 和按钮行的 Flutter 下拉菜单

    我正在尝试构建一个自定义下拉菜单 如下所示 我已经成功地实现了ListTiles and Row of Buttons没有下拉菜单 但我不确定如何将所有内容嵌套在下拉菜单类中 这是我到目前为止所得到的 class HomePage exte
  • 如何解决 FireBase 数据库 Key 中的禁止字符或解决方法

    我有这个 FireBase 数据库结构 我真的很想拥有像这个例子这样的密钥 US name United States PATH TO STREETS US California Orange County Orange 3138 E Ma
  • Android:如何在双 SIM 卡手机中获取两张 SIM 卡的 SIM ID

    我想获取双 SIM 卡手机中两个 SIM 卡的 SIM 序列号 ID 有什么方法可以获取它们吗 提前致谢 import java lang reflect Method import android content Context impo
  • 如何以编程方式启用小米应用程序的自动启动

    我想知道小米是否可以提供任何应用程序的后台服务 我的应用程序中有需要始终在后台运行的服务 在除小米之外的所有设备中都工作正常 如何以编程方式完成 也适用于小米 oppo vivo 和 oneplus 手机 try Intent intent
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • Android 生命周期哪个事件在生命周期中只触发一次?

    我读过一些博客并访问了一些网站 我想知道哪个事件在生命周期中只触发了一次 阅读博客后我意识到onCreate 方法在生命周期内仅触发一次 我不知道我是对还是错 现在我的问题是 我想触发任何仅在我更改横向或纵向方向时触发一次的事件 而不是在启
  • Gradle创建多项目Jar

    因此 从 Gradle 和 Android Studio 诞生之初起 我就一直在使用它们 然而 我发现自己用头撞墙的次数有时远远超过了它的价值 我花了一天半的时间试图解决我目前的困境 在我工作的地方 我们使用很多共享库项目 这意味着与 Gr
  • 短信管理器在少于 160 个字符时发送多部分消息

    我编写了一个使用短信管理器的应用程序 我用的方法sendTextMessage 但这行不通 现在我正在使用sendMutlipartTextMessage 这是工作 但当它大约 60 个字符时 它会发送多部分消息 这个是正常的 我读过的所有
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • 如何在按下硬件主页按钮时关闭所有活动?

    我有一个应用程序 其中有 5 个活动 一个菜单活动和另外 4 个子活动附加到菜单屏幕 所以我可以选择任何活动 然后返回菜单 假设我像这样四处走动 菜单 gt 活动 1 gt 菜单 gt 活动 3 gt 活动 2 gt 菜单 现在我按 主页
  • 是否可以在本机代码中读取/编辑共享首选项?

    我有一个 Android 应用程序 其中包含一个使用 NDK 执行一些代码的 C 库 在 C 库中 我想更新应用程序共享首选项 我的问题 是否可以在本机代码中读取 编辑共享首选项 您可以在本机代码中做任何您想做的事情 这只是很麻烦 您需要
  • Android 上的 Facebook 深度链接

    我正在尝试在我的应用程序上实现 Facebook 的深度链接功能 并遇到了以下情况 我有一个名为 MainActivity 的活动 其声明如下
  • 在应用程序的所有活动中重用操作栏

    我创建了一个 MenuActivity 它有一个操作栏和一个拆分操作栏 我想将此操作栏和 splitactionbar 视图用于我的应用程序中的所有活动 我是 android 的新手 所以有人可以逐步指导我 另外 我试图将搜索图标放在操作栏

随机推荐

  • PHP 5.3 中自动加载命名空间?

    如何在 PHP 5 3 中使用 autoload 和命名空间 我在与脚本分开的命名空间中有一个主要的自动加载函数 我还调用具有不同名称空间的类 这并不奇怪 但是 它没有找到自动加载功能 我是否必须为每个命名空间重新创建自动加载函数 这似乎不
  • “Office 2010 加载项:图标库” - 如何从后台选项卡中提取图标 (docx)

    我下载了 Office 2010 加载项 图标库 https www microsoft com en in download confirmation aspx id 21103 这是一个 docx 文件 有两个包含图标的后台选项卡 如何
  • 在c#中将bool表达式转换为char

    当我遇到如下问题时 我通过了 NET 测验 Char ch Convert ToChar a e c a 在控制台中我们可以看到输出ch变量是g 有人可以描述发生了什么吗 谢谢 是二元或运算符 a binary representation
  • 将重复值复制粘贴到大型 Excel 文件的列中

    我遇到了一个问题 希望得到一些帮助 这是我现在正在处理的内容 我想要的是 B C 和 D 列复制到其下面的空白行 直到它到达新客户端 如下所示 非常感谢任何和所有的帮助 Thanks 非VBA解决方案 Select entire range
  • 使用 jQuery 按住 Shift + 鼠标悬停

    我试图检测当光标移动到特定元素上时是否按下了 Shift 键 该函数会触发 但仅after我首先单击另一个元素 有什么方法可以解决这个问题吗 我尝试将焦点设置为文档和元素 并尝试创建伪单击功能 但到目前为止没有任何效果 例如 以下代码仅在我
  • OpenCL clGetPlatformIDs 异常

    我使用此包安装附带的示例中的 HelloWorld 示例 AMD 套件 http developer amd com tools and sdks heterogeneous computing amd accelerated parall
  • SQL 调用临时表中的最大行数

    在临时表中只有两列可用 我想获取每次加载的最新ID 如下图所示 我已经尝试过 但它没有给我我需要的答案 select max rn plus 1 a load a id from select a load a id ROW NUMBER
  • 交互式 lua:命令行参数

    我想做 lua prog lua arg1 arg2 从命令行 在prog lua里面 我想说 比如 print arg1 arg2 n Lua 似乎没有 argv 1 等 而且我见过的处理命令行参数的方法似乎不成熟和 或麻烦 我错过了什么
  • 在 Express 中使用“jade”模板引擎时渲染“html”

    你如何渲染一个html文件 同时保持模板引擎为jade app set view engine jade 是我将模板引擎设置为jade我想做一些类似的事情 app get world function req res res render
  • Android:ScrollView 内的 Horizo​​ntalScrollView

    我有多个水平滚动视图里面一个滚动视图 水平滚动一点也不流畅 我必须几乎完全水平滚动才能滚动才能工作 有没有一个简单的修复方法可以调整这个 谢谢 您可以将 Recycler 视图与交错布局管理器一起使用 StaggeredGridLayout
  • 如何为 TFS 上的 dockerized F# Expecto 测试配置 CI

    我有一些码头化的由 Expecto 和 fscheck 框架编写的 F 测试 作为 dotnet 核心独立可执行文件 如何在 Team Foundation Server 上配置持续集成以运行它们并在每次运行后获取相应的报告 如果您的意思是
  • Play Framework:合并多模块项目中的多个全局对象

    我正在使用 Play 2 3 和 Java 8 构建一个多模块项目 根应用程序和每个模块都有一个全局对象 但我们如何知道 Play 仅使用根应用程序中的一个全局对象 简化的文件夹结构 root app Global java conf ap
  • SAS 中的“auto.arima”?

    我曾经使用 auto arima 在 R 中运行 arima 模型来识别适合数据的最佳 arima 模型 即使没有它 在 R 中编写一个函数来执行类似的任务也很容易 然而 我这几天google了一下 在SAS中找不到类似的过程 有谁知道SA
  • 在Python中应用PMML预测模型

    Knime 为我生成了PMML http en wikipedia org wiki Predictive Model Markup Language模型 这时候我想把这个模型应用到一个python进程中 这样做的正确方法是什么 更深入 我
  • 在应用程序浏览器中将 Instagram 转义至 Safari

    我的网站中有一个链接 可以重定向到 Instagram 登录以获取一些照片 但该页面无法在 iOS 设备上的 Instagram 应用内浏览器上运行 我的想法是放置一个链接 以便用户可以单击它并重定向到 safari 或默认浏览器中的页面
  • 有没有一种好方法可以让 Map get 和 put 忽略大小写? [复制]

    这个问题在这里已经有答案了 有没有好的方法可以有一个Map
  • 如何使用离线设备捕获地理位置 - cordova

    我正在使用 cordova 开发一个应用程序 并发现需要获取用户的纬度和经度数据 但我的应用程序将离线使用 无需互联网访问 我有两个问题 1 如何检查设备是否启用 GPS 2 如何在没有互联网连接的情况下离线获取纬度和经度 这是可能的 我会
  • 在 React 中设置单选按钮值

    我正在制作一个简单的反应应用程序 其表单具有单选按钮 这里有一个可用的默认数据 例如 const defaultData ContactMode 3 ContactMode 2 ContactMode 2 要求 gt 需要迭代这个defau
  • Tensorflow:“GraphDef 不能大于 2GB。”分配变量后保存模型时出错

    我想用一个预训练的模型来热启动另一个有一点差异的模型 简而言之 我创建一个新模型 并使用预训练的模型权重分配具有相同名称的变量 但是 在保存模型时 出现错误 Traceback most recent call last File tf t
  • Android 应用程序在发布中崩溃,但在调试 NullPointerException 中不会崩溃

    由于从我正在使用的 API 返回的数据发生了更改 我最近更改了 2 行代码作为解决方法 现在 当使用发布的 apk 和 aab 时 应用程序崩溃 但是 当我通过 API 27 上的 Android 模拟器使用该应用程序并将 API 27 设