首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >例外java.lang.NoClassDefFoundError: Landroid/app/usage/NetworkStatsManager

例外java.lang.NoClassDefFoundError: Landroid/app/usage/NetworkStatsManager
EN

Stack Overflow用户
提问于 2016-07-01 13:16:57
回答 2查看 409关注 0票数 1

我编写了应用程序,并使用Google Play将其分发给用户。我在那里集成了Firebase Crash,现在我在控制台中看到了很多错误。

代码语言:javascript
复制
Exception java.lang.NoClassDefFoundError: Failed resolution of: Landroid/app/usage/NetworkStatsManager;

Caused by java.lang.ClassNotFoundException: Didn't find class "android.app.usage.NetworkStatsManager" on path: DexPathList[[zip file "/data/app/com.xxx.yyy/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

我在默认设置中使用ProGuard。我能做些什么来解决这个问题吗?我用Android Studio 2.2 Preview 4编译了它。

谢谢你的帮助。

编辑

我重新检查了我的代码,我很惭愧地问:)为什么?

正如您所建议的,我应该检查API版本,但由于我开发了多版本应用程序(基于API版本的工作方式不同),我不得不“禁用”有关API版本的警告。

我犯了一个愚蠢的错误,因为在检查是否存在API23之前,我实现了函数所需的API23。

如果API是最好的方法,是否有更好的方法来做到这一点,或者遵循API?

代码语言:javascript
复制
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M)
        {
            return true;
        }
else
        {
            return false;
        }
EN

回答 2

Stack Overflow用户

发布于 2016-07-01 13:57:51

NetworkStatsManager 需要API级别23.实际上,在Android中应该会看到相应的警告。您应该使用运行所选minSdkVersion API版本的模拟器或设备来测试应用程序,并注意由Android显示的警告。

票数 3
EN

Stack Overflow用户

发布于 2016-07-01 13:28:10

如果您在代码中的某个地方使用这个类:

代码语言:javascript
复制
android.app.usage.NetworkStatsManager

然后将以下内容添加到proguard-rules.pro文件中:

代码语言:javascript
复制
-keep class android.app.usage.NetworkStatsManager

还为您获得的其他-keep class规则添加NoClassDefFoundError规则,标识正在使用该规则的库,并添加它们的保护规则。

正如您所说的,您已经将Firebase Crash Reporting集成到您的应用程序中,我建议您也为此添加保护规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38146470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档