App crashes on apk install

Hi.

I just started a new ionic project (not my first) and have a problem running it on android device.
When I use Ionic DevApp and ionic serve everything works fine, but when I have built an apk, I can’t install it because installation crashes and phone restarts. Here is a log from adb:

E/AndroidRuntime(18872): !@*** FATAL EXCEPTION IN SYSTEM PROCESS: PackageManager
E/AndroidRuntime(18872): java.lang.NullPointerException
E/AndroidRuntime(18872):        at com.android.server.pm.SELinuxMMAC.assignSeinfoValue(SELinuxMMAC.java:760)
E/AndroidRuntime(18872):        at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:6864)
E/AndroidRuntime(18872):        at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:12530)
E/AndroidRuntime(18872):        at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:13830)
E/AndroidRuntime(18872):        at com.android.server.pm.PackageManagerService.access$2500(PackageManagerService.java:284)
E/AndroidRuntime(18872):        at com.android.server.pm.PackageManagerService$7.run(PackageManagerService.java:10403)
E/AndroidRuntime(18872):        at android.os.Handler.handleCallback(Handler.java:733)
E/AndroidRuntime(18872):        at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(18872):        at android.os.Looper.loop(Looper.java:146)
E/AndroidRuntime(18872):        at android.os.HandlerThread.run(HandlerThread.java:61)

Other ionic aplication runs without an problems, but the new application (almost clear starting code) crashes.
Apps are built the same way (ionic cordova build android --prod --release), the only difference is that the old application is signed before copying apk to device and new app is not signed (may it be a reason of crash?).

Android version on my device is 4.4.4.

Here is my package.json:

{
  "name": "gps-tracker",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "start": "ionic-app-scripts serve",
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "lint": "ionic-app-scripts lint"
  },
  "dependencies": {
    "@angular/animations": "5.2.11",
    "@angular/common": "5.2.11",
    "@angular/compiler": "5.2.11",
    "@angular/compiler-cli": "5.2.11",
    "@angular/core": "5.2.11",
    "@angular/forms": "5.2.11",
    "@angular/http": "5.2.11",
    "@angular/platform-browser": "5.2.11",
    "@angular/platform-browser-dynamic": "5.2.11",
    "@ionic-native/core": "~4.11.0",
    "@ionic-native/geolocation": "^4.12.0",
    "@ionic-native/splash-screen": "~4.11.0",
    "@ionic-native/status-bar": "~4.11.0",
    "@ionic/lab": "^1.0.7",
    "@ionic/storage": "2.1.3",
    "cordova-android": "7.0.0",
    "cordova-browser": "5.0.4",
    "cordova-plugin-device": "^2.0.2",
    "cordova-plugin-geolocation": "^4.0.1",
    "cordova-plugin-ionic-keyboard": "^2.1.2",
    "cordova-plugin-ionic-webview": "^1.2.1",
    "cordova-plugin-splashscreen": "^5.0.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "ionic-angular": "3.9.2",
    "ionicons": "3.0.0",
    "rxjs": "5.5.11",
    "sw-toolbox": "3.6.0",
    "zone.js": "0.8.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "3.1.11",
    "typescript": "~2.6.2"
  },
  "description": "An Ionic project",
  "cordova": {
    "plugins": {
      "cordova-plugin-geolocation": {
        "GEOLOCATION_USAGE_DESCRIPTION": "To get your trip informations"
      },
      "cordova-plugin-whitelist": {},
      "cordova-plugin-device": {},
      "cordova-plugin-splashscreen": {},
      "cordova-plugin-ionic-webview": {},
      "cordova-plugin-ionic-keyboard": {}
    },
    "platforms": [
      "browser",
      "android"
    ]
  }
}

and config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.myname.gpstracker" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>gps-tracker</name>
    <description>An awesome Ionic/Cordova app.</description>
    <author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <platform name="android">
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
        <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
    </platform>
    <plugin name="cordova-plugin-whitelist" spec="1.3.3" />
    <plugin name="cordova-plugin-device" spec="2.0.2" />
    <plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
    <plugin name="cordova-plugin-geolocation" spec="^4.0.1">
        <variable name="GEOLOCATION_USAGE_DESCRIPTION" value="To get your trip informations" />
    </plugin>
    <allow-navigation href="*" />
    <engine name="browser" spec="5.0.4" />
    <engine name="android" spec="7.0.0" />
</widget>

I tried:

  1. reinstalling plugins, platforms and node_modules
  2. Using the same package versions as in working applicaiton
  3. Removing “@ionic-native/geolocation” and related code (these was the only things I added to original code)
  4. Cursing a lot

Nothing helps. Can you help me?

What is your ionic info output?
Does it work if you create a new app with ionic start?

ionic info


Ionic:

   ionic (Ionic CLI)  : 4.0.1 (/home/jakub/.nvm/versions/node/v8.1.0/lib/node_modules/ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.1.11

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.0.0

System:

   Android SDK Tools : 26.1.1
   NodeJS            : v8.1.0 (/home/jakub/.nvm/versions/node/v8.1.0/bin/node)
   npm               : 6.1.0
   OS                : Linux 4.4

Environment:

   ANDROID_HOME : /home/jakub/Android/Sdk

Does it work if you create a new app with ionic start ?

I just created a new app and built it with ionic cordova build android. App installed successfully on my phone, but it shows an error net::ERR_CONNECTION_REFUSED (http://localhost:8080/).

EDIT:
I created a build with ionic cordova build android --prod --release and when trying to install it, application also crashed. So, ionic app crashes without any change in starting code if I use --prod --release flags.

Please check if there is allow-navigation in your config.xml.

<allow-navigation href="http://localhost:8080/*" />

Hope this can help you.

It did not help. Still the same.

This is because

and the version of cordova-plugin-ionic-webview that is installed in new project don’t work together - it needs Android >= 5. You have to downgrade if you really want to use Android 4.x.

Your Cordova tooling seems to be out of date, which might be causing all kinds of problems.
You can read about how to figure out the current Cordova versions and how to update CLI, platforms and plugins here: https://ionic.zone/cordova/update

Can you check if the same happens without --prod but with --release? Or the other way around?

I have downgraded cordova-plugin-ionic-webview to 1.2.1 (yes, I need it to work on android 4.4)
With both flags --prod and --release installation still crashes.
With only --prod flag application installed successfully and it displays net::ERR_CONNECTION_REFUSED error
With only --release flag installation crashes

At this moment I don’t want to upgrade cordova, because I’m working on other project for my client, and there everything works fine (on android >= 4 and iOS) so I don’t want to deal with new possible issues.

I downgraded @ionic-native/core to 4.8.0 and upgraded cordova-android to 7.1.1 (these are versions that works fine in my clients project).

Also, I changed config.xml:
<plugin name=“cordova-plugin-ionic-webview” spec="^1.2.1" />

Then I removed plugins, platforms and node_modules
npm install
ionic cordova platform add android

and the error net::ERR_CONNECTION_REFUSED disappeared. Application loads fine. But still crashes with --release flag.

Okay, you solved that part of the problem (which was only caused by the webview plugin btw).

Did you build the new app with a new keystore?
Can you try another computer?

Keystore? I don’t sign the application (I’ll try later with signed apk)
At this moment I can’t use another computer.

I found more logs in adb, when I ran the application on device with command: `ionic cordova run android --release":

E/AndroidRuntime( 1683): !@*** FATAL EXCEPTION IN SYSTEM PROCESS: PackageManager
E/AndroidRuntime( 1683): java.lang.NullPointerException
E/AndroidRuntime( 1683):        at com.android.server.pm.SELinuxMMAC.assignSeinfoValue(SELinuxMMAC.java:760)
E/AndroidRuntime( 1683):        at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:6864)
E/AndroidRuntime( 1683):        at com.android.server.pm.PackageManagerService.installNewPackageLI(PackageManagerService.java:12530)
E/AndroidRuntime( 1683):        at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:13830)
E/AndroidRuntime( 1683):        at com.android.server.pm.PackageManagerService.access$2500(PackageManagerService.java:284)
E/AndroidRuntime( 1683):        at com.android.server.pm.PackageManagerService$7.run(PackageManagerService.java:10403)
E/AndroidRuntime( 1683):        at android.os.Handler.handleCallback(Handler.java:733)
E/AndroidRuntime( 1683):        at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime( 1683):        at android.os.Looper.loop(Looper.java:146)
E/AndroidRuntime( 1683):        at android.os.HandlerThread.run(HandlerThread.java:61)
E/AndroidRuntime( 2744): FATAL EXCEPTION: IntentService[DropBoxEntryAddedChimeraService]
E/AndroidRuntime( 2744): Process: com.google.android.gms, PID: 2744
E/AndroidRuntime( 2744): java.lang.RuntimeException: Package manager has died
E/AndroidRuntime( 2744):        at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:95)
E/AndroidRuntime( 2744):        at kvd.a(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at kvd.<init>(:com.google.android.gms@12874003@12.8.74 (000306-204998136):10)
E/AndroidRuntime( 2744):        at kvd.<init>(:com.google.android.gms@12874003@12.8.74 (000306-204998136):22)
E/AndroidRuntime( 2744):        at lph.a(:com.google.android.gms@12874003@12.8.74 (000306-204998136):3)
E/AndroidRuntime( 2744):        at los.a(:com.google.android.gms@12874003@12.8.74 (000306-204998136):43)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):1)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
E/AndroidRuntime( 2744):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
E/AndroidRuntime( 2744): Caused by: android.os.DeadObjectException
E/AndroidRuntime( 2744):        at android.os.BinderProxy.transact(Native Method)
E/AndroidRuntime( 2744):        at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:1906)
E/AndroidRuntime( 2744):        at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:90)
E/AndroidRuntime( 2744):        ... 11 more
E/AndroidRuntime( 2744): Error reporting crash
E/AndroidRuntime( 2744): android.os.DeadObjectException
E/AndroidRuntime( 2744):        at android.os.BinderProxy.transact(Native Method)
E/AndroidRuntime( 2744):        at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4403)
E/AndroidRuntime( 2744):        at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:113)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):6)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at luq.uncaughtException(:com.google.android.gms@12874003@12.8.74 (000306-204998136):2)
E/AndroidRuntime( 2744):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
E/AndroidRuntime( 2744):        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
D/AndroidRuntime( 5978):

Huh!? Isn’t the definition of a release build that it is signed?

Please run your build command with --verbose added at the end and post its whole output here.

I signed apk with jarsigner and now everything works fine.
Thanks for help guys.

1 Like