android - Type Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException -
i making simple map application on running it, errors displayed don't understand....
my project min sdk android 2.2(froyo) api 8 , target sdk android 4.4(kitkat) api 19 , app compiled google api 2 rev 8.....
i don't know should combinations of min, target , compiled apis in order make app run ....help me out proper combination.
following manifest file code
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.margallahillhikedroid" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="19" /> <uses-permission android:name="android.permission.access_coarse_location"/> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <uses-library android:name="com.google.android.maps"/>" <activity android:name="com.example.margallahillhikedroid.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>
// following main java source
// package com.example.margallahillhikedroid;
import com.google.android.maps.mapactivity; import com.google.android.maps.mapview; import android.os.bundle; import android.view.menu; public class mainactivity extends mapactivity { mapview map; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); map=(mapview)findviewbyid(r.id.mymap); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } @override protected boolean isroutedisplayed() { // todo auto-generated method stub return false; } }
following main.xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".mainactivity" > <com.google.android.maps.mapview android:id="@+id/mymap" android:layout_width="match_parent" android:layout_height="match_parent" android:apikey="aizasybctxeirtszthvlmal5jddc-sk-mw7s_ce"/> </relativelayout>
on running app following errors in console section displayed;
[2014-04-14 07:37:14 - margallahillhikedroid] dx trouble writing output: prepared [2014-04-14 07:37:14 - dex loader] unable execute dex: java.nio.bufferoverflowexception. check eclipse log stack trace. [2014-04-14 07:37:14 - margallahillhikedroid] conversion dalvik format failed: unable execute dex: java.nio.bufferoverflowexception. check eclipse log stack trace.
in problem section following error displayed
description resource path location type conversion dalvik format failed: unable execute dex: java.nio.bufferoverflowexception. check eclipse log stack trace. margallahillhikedroid unknown android packaging problem
i making map application on running above mentioned errors displayed in problem section console section.
your problem trying implement google maps api v1, using google maps api v2 key. , can't do.
so should make following changes in code:
1. remove: <uses-library android:name="com.google.android.maps"/>"
manifest file, v1 permission.
2. if want support v8 api have remove implementation of activity mapactivity
, change fragmentactivity
. supporting fragment on older systems.
3. change xml layout file from:
<com.google.android.maps.mapview android:id="@+id/mymap" android:layout_width="match_parent" android:layout_height="match_parent" android:apikey="aizasybctxeirtszthvlmal5jddc-sk-mw7s_ce"/>
to this:
<fragment android:name="com.google.android.gms.maps.supportmapfragment" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" />
4. have add staff in manifest file:
add permissions:
<permission android:name="your.application.package.permission.maps_receive" android:protectionlevel="signature"/> <uses-permission android:name="your.application.package.permission.maps_receive"/> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.write_external_storage"/> <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices"/> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-feature android:glesversion="0x00020000" android:required="true"/>
change your.application.package actual application package name.
and add those:
<meta-data android:name="com.google.android.maps.v2.api_key" android:value="your google maps api v2 key" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
under application
hive.
you can use guide wrote on topic out:
and go on steps of producing api key , make sure haven't missed thing:
Comments
Post a Comment