Kiet Tran
Kiet Tran

Reputation: 1538

Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY for Android 2.2 API Level 8

I'm having an Android GPS project for my CS class. Right now I'm working through tutorials (using Eclipse with ADT plugin) to have an idea of how to use the Android library, but along the way, I received the Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY

I checked on LogCat and it seems the error starts on this line:

03-29 23:05:14.721: E/PackageManager(72): Package virginia.edu.cs2110 requires   unavailable shared library android.location; failing!

I have looked up this problem and did all the things that I was able to find. I declared the uses-library field in the manifest file:

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

If anyone is wondering, this is my whole manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="virginia.edu.cs2110"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TrivialGPS"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <uses-library android:name="android.location" />
        <uses-library android:name="com.google.android.maps" />
    </application>

</manifest>

I also created an Android emulator with Target Name "Google API (Google Inc.)": http://i42.tinypic.com/2dj3vd5.jpg

Also, here's the code that I wanted to run:

package virginia.edu.cs2110;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;


public class TrivialGPS extends MapActivity {

    private MapController mapController;
    private MapView mapView;
    private LocationManager locationManager;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        // create a map view
        mapView = new MapView(this, "C7:63:2F:C8:93:8B:E1:83:D6:4F:D3:5B:62:C1:75:90");
        mapController = mapView.getController();
        mapController.setZoom(22);
        setContentView(mapView);

        // get a hangle on the location manager
        locationManager =
        (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
        new LocationUpdateHandler());
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

    public class LocationUpdateHandler implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {
            int lat = (int) (loc.getLatitude()*1E6);
            int lng = (int) (loc.getLongitude()*1E6);
            GeoPoint point = new GeoPoint(lat, lng);
            mapController.setCenter(point);
            setContentView(mapView);
        }

        @Override
        public void onProviderDisabled(String provider) {}

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}

    }
}

Upvotes: 0

Views: 1037

Answers (1)

CommonsWare
CommonsWare

Reputation: 1006914

Delete <uses-library android:name="android.location" />, as there is no such library.

Upvotes: 2

Related Questions