Android 未签名的应用程序工作,而已签名的应用程序不工作?

Android 未签名的应用程序工作,而已签名的应用程序不工作?,android,Android,这是我面临的一个相当奇怪的问题。我有一个解析JSON文件以获取一些URL的应用程序。此文件存储在资产文件夹中。现在,当我从Eclipse运行未签名的应用程序时,该应用程序的行为符合预期;显示器很好 PlayStore版本存在问题。当我尝试运行PlayStore的应用程序时,我得到以下信息: 08-17 22:03:38.932: E/DatabaseUtils(2350): Writing exception to parcel 08-17 22:03:38.932: E/DatabaseUti

这是我面临的一个相当奇怪的问题。我有一个解析JSON文件以获取一些URL的应用程序。此文件存储在资产文件夹中。现在,当我从Eclipse运行未签名的应用程序时,该应用程序的行为符合预期;显示器很好

PlayStore版本存在问题。当我尝试运行PlayStore的应用程序时,我得到以下信息:

08-17 22:03:38.932: E/DatabaseUtils(2350): Writing exception to parcel
08-17 22:03:38.932: E/DatabaseUtils(2350): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
08-17 22:03:38.932: E/DatabaseUtils(2350):  at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at android.os.Binder.execTransact(Binder.java:388)
08-17 22:03:38.932: E/DatabaseUtils(2350):  at dalvik.system.NativeStart.run(Native Method)
08-17 22:03:38.992: E/SystemClock(2711): File Open Failed
08-17 22:03:40.954: E/DatabaseUtils(2350): Writing exception to parcel
08-17 22:03:40.954: E/DatabaseUtils(2350): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
08-17 22:03:40.954: E/DatabaseUtils(2350):  at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at android.os.Binder.execTransact(Binder.java:388)
08-17 22:03:40.954: E/DatabaseUtils(2350):  at dalvik.system.NativeStart.run(Native Method)  
应用程序没有崩溃,但是JSON文件没有被解析以显示数据。这很奇怪,因为这是我几分钟前没有签名就使用的同一个应用程序

这是因为我使用与上一个应用相同的密钥签署了应用吗?


PS:我尝试添加声明的权限,但没有帮助。

错误消息非常明确:

this requires android.permission.INTERACT_ACROSS_USERS_FULL
您需要尝试将该权限添加到AndroidManifest.xml

您正在运行的未签名版本在Android的开发者模式下运行,因此这可能就是它不需要该权限的原因(我可以找到一个备份的引用,我自己没有时间测试它),或者您正在构建的未签名版本有代码更改,包括该附加权限

这是一个系统级权限,除非您拥有与应用程序运行系统相同的签名,否则不应授予您该权限

Edit:无论如何,至少有一次有人声称该错误可能是对空指针异常的一种误导:


简短的总结是ProGuard出现了问题:

我修改了我的
ProGuard
配置以包含所有提到的规则

基于此,我必须将我与
GSON
一起使用的所有类添加到我的
ProGuard
config中作为例外。因此,由于我的应用程序中有一个名为
Response
的类,我必须添加以下规则:

-keepclassmembers com.littlejava.myapp.util.Response { <fields> };  
-keepclassmembers com.littlejava.myapp.util.Response{};

该应用程序可以在文件中运行。正如Rob S.提到的,logcat只是一条红鲱鱼。

你有没有试图更改签名?@DIVA什么签名?不,我没有尝试更改任何内容:)让我们在聊天中讨论这是一个签名级别的权限,除非应用程序使用与系统相同的密钥进行签名,否则将不会授予该权限。好的,我所做的是:我在Eclipse中点击“播放”按钮以运行调试版本(运行正常)。然后,我使用向导导出了相同的应用程序。我将APK复制到手机并安装了应用程序。如果您想测试它,请使用空白UI。您的代码试图做什么,甚至首先需要此权限?伟大的应用程序顺便说一句!一点也不奇怪!它试图解析BG中的JSON文件,并使用毕加索在UI上显示图像。正如我所说,URL位于JSOn文件中。