#android #manifest #failed-installation
#Android #манифест #сбой установки
Вопрос:
Я разрабатываю небольшое приложение, в котором перечислены все приложения, присутствующие / установленные на устройстве Android. Но я получаю приведенную ниже ошибку, когда пытаюсь запустить код.
Ошибка установки: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Пожалуйста, кто-нибудь может помочь мне разобраться в этой ошибке. Я прочитал все похожие сообщения об ошибках в stack over flow, но ни одно из них вообще не помогло. Итак, я также размещаю свой исходный код, надеясь, что кто-нибудь сможет мне помочь.
Манифест основной активности:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.ankitverma.energyharvest"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="info.ankitverma.energharvest.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="info.ankitverma.energharvest.permission.MAPS_RECEIVE" />
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Required to show current location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="Energy Harvest">
<uses-library
android:name="com.google.android.maps" />
<activity
android:name="info.ankitverma.energyharvest.MainActivity"
android:label="Energy Harvest"
android:theme="@style/AppBaseTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Goolge API Key -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDOxEOjotMFhFPxhtea72ryXKDpwGQQESw"
/>
<meta-data android:name="com.google.android.gms.version"/>
</application>
</manifest>
Основное действие Java-файл:
package info.ankitverma.energyharvest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MapFragment mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map);
final MapWrapperLayout mapWrapperLayout = (MapWrapperLayout)findViewById(R.id.map_relative_layout);
final GoogleMap map = mapFragment.getMap();
// MapWrapperLayout initialization
// 39 - default marker height
// 20 - offset between the default InfoWindow bottom edge and it's content bottom edge
mapWrapperLayout.init(map, getPixelsFromDp(this, 39 20));
// We want to reuse the info window for all the markers,
// so let's create only one class member instance
this.infoWindow = (ViewGroup)getLayoutInflater().inflate(R.layout.info_window, null);
this.infoTitle = (TextView)infoWindow.findViewById(R.id.title);
this.infoSnippet = (TextView)infoWindow.findViewById(R.id.snippet);
this.infoButton = (Button)infoWindow.findViewById(R.id.button);
// Setting custom OnTouchListener which deals with the pressed state
// so it shows up
this.infoButtonListener = new OnInfoWindowElemTouchListener(infoButton,
getResources().getDrawable(R.drawable.dbh1),
getResources().getDrawable(R.drawable.dbh10))
{
@Override
protected void onClickConfirmed(View v, Marker marker) {
// Here we can perform some action triggered after clicking the button
Toast.makeText(MainActivity.this, marker.getTitle() getResources().getDrawable(R.drawable.dbh10), Toast.LENGTH_SHORT).show();
}
};
this.infoButton.setOnTouchListener(infoButtonListener);
map.setInfoWindowAdapter(new InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
// Setting up the infoWindow with current's marker info
infoTitle.setText(marker.getTitle());
infoSnippet.setText(marker.getSnippet());
infoButtonListener.setMarker(marker);
// We must call this to set the current marker and infoWindow references
// to the MapWrapperLayout
mapWrapperLayout.setMarkerWithInfoWindow(marker, infoWindow);
return infoWindow;
}
});
LatLng IrvinePark = new LatLng(33.646091,-117.842737);
LatLng IrvineDBH = new LatLng(33.643197,-117.841996);
LatLng IrvineStudentCenter = new LatLng(33.64944,-117.842469);
LatLng IrvineParkingStructure1 = new LatLng(33.643152,-117.837608);
LatLng IrvineParkingStructure2 = new LatLng(33.647542,-117.837489);
LatLng IrvineFoodCourt1 = new LatLng(33.645939,-117.844325);
LatLng IrvineFoodCourt2 = new LatLng(33.645626,-117.840709);
LatLng IrvineTheater = new LatLng(33.649181,-117.840773);
LatLng IrvineLibrary1 = new LatLng(33.645751,-117.846739);
LatLng IrvineLibrary2 = new LatLng(33.647341,-117.84146);
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvinePark, 13));
map.addMarker(new MarkerOptions()
.title("Alrich Park")
.snippet("University of california Irvine")
.position(IrvinePark));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineDBH, 13));
map.addMarker(new MarkerOptions()
.title("DBH")
.snippet("University of california Irvine")
.position(IrvineDBH));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineStudentCenter, 13));
map.addMarker(new MarkerOptions()
.title("Student Center")
.snippet("University of california Irvine")
.position(IrvineStudentCenter));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineParkingStructure1, 13));
map.addMarker(new MarkerOptions()
.title("Anteater Parking Structure")
.snippet("University of california Irvine")
.position(IrvineParkingStructure1));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineFoodCourt1, 13));
map.addMarker(new MarkerOptions()
.title("BC Caverns Food Court")
.snippet("University of california Irvine")
.position(IrvineFoodCourt1));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineFoodCourt2, 13));
map.addMarker(new MarkerOptions()
.title("Phenoix Food Court")
.snippet("University of california Irvine")
.position(IrvineFoodCourt2));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineTheater, 13));
map.addMarker(new MarkerOptions()
.title("Irvine Barcaly Theater")
.snippet("University of california Irvine")
.position(IrvineTheater));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineLibrary1, 13));
map.addMarker(new MarkerOptions()
.title("Science Library")
.snippet("University of california Irvine")
.position(IrvineLibrary1));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineLibrary2, 13));
map.addMarker(new MarkerOptions()
.title("Between Langson and Gateway")
.snippet("University of california Irvine")
.position(IrvineLibrary2));
//
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(IrvineParkingStructure2, 13));
map.addMarker(new MarkerOptions()
.title("Social Sicence Parking Structure")
.snippet("University of california Irvine")
.position(IrvineParkingStructure2));
}
public static int getPixelsFromDp(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dp * scale 0.5f);
}
}
Основное действие:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment
android:id="@ id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Ответ №1:
попробуйте переместить
<permission
android:name="info.ankitverma.energharvest.permission.MAPS_RECEIVE"
android:protectionLevel="signature"
под <uses-permission
тегами
или удалите папку «gen» и позвольте ей воссоздать себя.