java.lang.SecurityException: invalid package name: com.google.android.gms
Asked Answered
U

4

11

I've got this weird stack trace while testing the app on Samsung Galaxy S2 (GT-i9100), Android version 4.3. If it helps, Bugsense reports also "log data" = {u'ms_from_start': u'19915', u'rooted': u'true'} , so I'm not quite sure if this device is rooted or not (client is testing the app, not me). EDIT: While I'm typing this, client confirmed me that the device is having custom ROM, if it matters.

Anyhow, this is a complete stack trace:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackagename/com.mypackagename.activities.ARActivity}: 

java.lang.SecurityException: invalid package name: com.google.android.gms
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
    at android.app.ActivityThread.access$600(ActivityThread.java:156)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5303)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
    at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.SecurityException: invalid package name: com.google.android.gms
    at android.os.Parcel.readException(Parcel.java:1431)
    at android.os.Parcel.readException(Parcel.java:1385)
    at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:540)
    at android.location.LocationManager.requestLocationUpdates(LocationManager.java:836)
    at android.location.LocationManager.requestLocationUpdates(LocationManager.java:430)
    at android.privacy.surrogate.PrivacyLocationManager.requestLocationUpdates(PrivacyLocationManager.java:290)
    at com.mypackagename.activities.ARActivity.onCreate(ARActivity.java:371)
    at android.app.Activity.performCreate(Activity.java:5259)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1098)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309)

Now, ARActivity.java:371 is just calling

locationManager.requestLocationUpdates(GPS, gpsRefreshPeriod, 0, locListener);

where

private String GPS = "gps";
private int gpsRefreshPeriod = 500;

and locListener is locationListener.

Now, I have no idea what could go wrong here, and I can't reproduce this error on my testing devices (Samsung Galaxy Tab2, Motorola Atrix 4G, Samsung Note2, Galaxy Nexus).

I guess there could be a check for com.google.android.gms somehow, and maybe there could be Intent (or something) that in case of missing that package, user updates device's component.. But I'm totally not sure if I'm going into the right direction with this thinking.

Any ideas or experience with this crash?

Thanks.

Umbelliferous answered 9/12, 2013 at 15:51 Comment(0)
R
1

try to use

<uses-library android:name="com.google.android.gms" />

under application tag. Example

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <uses-library android:name="com.google.android.gms" />
Rhyne answered 13/12, 2013 at 17:29 Comment(0)
A
1

Some devices that i use for testing doesn´t have capabilities to support gps and get the location, that was the reason for what i got the exception

"invalid package name: com.google.android.gms"

We must add permissions required

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  

and very important add android:required=false" for GPS.

  <uses-feature
         android:name="android.hardware.location.gps"
         android:required="false" />

More info: <uses-feature>

Allbee answered 16/12, 2013 at 22:13 Comment(2)
thanks for sharing your experience. My tester uses rooted Samsung Galaxy S2 with custom ROM, and I can't get info on what kind of custom ROM is being installed there. I'll try adding uses-feature part of your suggestion, as so far I only had those two permissions, assuming they were enough for GPS powered app. Although I think chances to solve the issue with this are pretty slim, as tester already enabled GPS and fakes location with fakeGPS app prior to start my app.Umbelliferous
The uses-feature setting will only filter your application in the Google Play store. Users will still be able to sideload the application and it will still crash. What's needed is a code based solution so we can detect and catch this error. It would be most helpful if someone could pin down what custom ROM is causing this issue.Moazami
D
1

It seems to me that this device simply does not have GoogleApps application installed. The custom ROM actually may be a hint for this. For instance, an owner of this device might have installed Cyanogenmod but he has forgotten (or deliberately has not installed) Google Apps, which are supplied separately.

Delia answered 17/12, 2013 at 22:12 Comment(0)
D
0

These 2 questions are very similar:

SecurityException when calling getLastKnownLocation

Add Google Maps to my app

Perhaps the issue is with the custom ROM and you need to attach the Play Services Android library project to your project.

Deleterious answered 11/12, 2013 at 16:43 Comment(1)
Thanks for suggestions. First link is also the only one covering the same issue. Third link is quite useful, but I already did that (forgot to mention in a question). The thing might be in version of that lib project, I found out I used 3.2.x, just changed it to 4.x (latest available), so will see if problem still occurs. Anyway, it seems that it's definitely custom ROM issue.Umbelliferous

© 2022 - 2024 — McMap. All rights reserved.