android - 无法安装签名的应用程序 - 安装时出现 NullPointerException
问题描述
我无法安装自己的应用程序,我遵循 android 开发的所有文档,我创建了 5 个签名密钥,但我仍然收到此错误:
I/PackageManager: error while grant permission
05-30 19:06:12.446 1301-1434/? W/System.err: java.lang.NullPointerException: Attempt to read from field 'android.content.pm.ApplicationInfo android.content.pm.PackageParser$Package.applicationInfo' on a null object reference
at com.android.server.pm.PackageManagerService$PackageHandler.doHandleMessage(PackageManagerService.java:1830)
at com.android.server.pm.PackageManagerService$PackageHandler.handleMessage(PackageManagerService.java:1568)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
05-30 19:06:12.453 1301-3673/? I/ActivityManager: START u0 {dat=file:///data/user_de/0/com.google.android.packageinstaller/no_backup/package3183593356569820254.apk flg=0x2000000 cmp=com.google.android.packageinstaller/com.android.packageinstaller.InstallFailed (has extras)} from uid 10022 pid 2400
05-30 19:06:12.461 1301-1361/? D/RestartProcessManager: Update Total Launch Times :com.google.android.packageinstaller
05-30 19:06:12.462 1301-1361/? D/RestartProcessManager: sLastRunningPackage (null) : com.google.android.packageinstaller
05-30 19:06:12.471 2400-2400/? D/InstallFailed: Installation status code: 1
05-30 19:06:12.506 1301-1402/? I/ActivityManager: Displayed com.google.android.packageinstaller/com.android.packageinstaller.InstallFailed: +43ms
05-30 19:06:12.506 1301-1402/? E/ANDR-PERF-JNI: com_qualcomm_qtiperformance_native_perf_io_prefetch_start
05-30 19:06:12.506 1301-1402/? E/ANDR-IOP: IOP HAL: Received pkg_name = com.google.android.packageinstaller pid = 2400
05-30 19:06:12.506 822-861/? E/ANDR-PERF-OPTSHANDLER: perf_lock_rel: updated /sys/class/scsi_host/host0/../../../clkscale_enable with 1
return value 2
但是,使用 android studio 调试安装应用程序可以完美运行。
这是我的 ApplicationInfo 的一部分(来自清单标签):
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".meniu">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这是我的 build.gradle 的一部分:
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "g3org3.limatexmm"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
解决方案
我遇到过同样的问题。
我尝试adb uninstall <packageName>
以及手动卸载应用程序(对所有用户选项也使用卸载)。
当我碰到新应用程序的版本时,它终于解决了。
只需增加文件中的versionCode
and即可。它应该可以解决问题。versionName
android/app/build
现在升级android/app/build
为:
versionCode 2
versionName "2.0"
假设此错误是在测试发布的 apk 期间出现的,对于完整的生产,我建议使用 google 的签名选项。
让我知道它是否有帮助。
推荐阅读
- javascript - 不和谐.js | 检测消息是否包含表情符号
- python - 如何从格式为 4/23/20 的 pandas data_frame 中提取日期和月份?
- flask - 用于测验的烧瓶计时器
- opencv - 网络摄像头视频源的openCV问题
- function - 在批处理文件中执行重复任务的最有效方法是什么?
- javascript - 使用锚标签将电子重定向到浏览器
- fault-tolerance - 如何确定 filex 的最佳容错内存?
- javascript - Javascript字符串比较有时会出错,但再次尝试时效果很好
- javascript - 监听元素及其子/后代的“滚动”事件
- javascript - 如何在 React 中修改对象的子集?