将 Android Studio 和 SDK 更新到 22。现在,当尝试打开地图片段时,它会崩溃
Posted
技术标签:
【中文标题】将 Android Studio 和 SDK 更新到 22。现在,当尝试打开地图片段时,它会崩溃【英文标题】:Updated Android studio and SDK to 22. Now when trying to open a map fragment it crashes 【发布时间】:2015-10-07 05:11:15 【问题描述】:这是我的清单权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="nl.hgrams.passenger.C2D_MESSAGE" />
这是我的活动:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
ButterKnife.inject(this);
mSearchFragment = new PSSearchFragment();
mMapFragment = new PSMapFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.fragmentContainer, mSearchFragment, TAG_SEARCH);
transaction.add(R.id.fragmentContainer, mMapFragment, TAG_MAP);
transaction.hide(mMapFragment);
transaction.commit();
mCurrentFragment = mSearchFragment;
其中有一个 FrameLayout,我在其中加载 Fragments:
<FrameLayout
android:id="@+id/fragmentContainer"
android:layout_
android:layout_/>
这是我的地图片段:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_
android:layout_/>
<LinearLayout
android:id="@+id/display_button"
android:visibility="gone"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_gravity="bottom|center_horizontal"
android:background="#88FFFFFF">
<Button
android:id="@+id/display_markers"
android:layout_
android:layout_
android:layout_margin="@dimen/text_medium_padding"
android:background="@drawable/rounded_button_green"
android:text="@string/display_location_markers"
android:textColor="@color/white" />
</LinearLayout>
<TextView
android:id="@+id/display_message"
android:visibility="gone"
android:layout_
android:layout_
android:gravity="center_horizontal"
android:padding="10dp"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom|center_horizontal"
android:text="@string/long.press.tooltip"
android:background="#88FFFFFF">
</TextView>
<nl.hgrams.passenger.ui.AnimatedImageView
android:id="@+id/loader_container"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:background="@drawable/loading_animation"
android:visibility="invisible" />
这是我的 mapFragment 的 OnCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
try
View view = inflater.inflate(R.layout.fragment_map, container, false);
ButterKnife.inject(this, view);
if(!PSLocationCenter.getInstance().mLocationClient.isConnected())
PSLocationCenter.getInstance().startLocationClient();
gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy()
@Override
public boolean shouldSkipField(FieldAttributes f)
return f.getDeclaringClass().equals(RealmObject.class);
@Override
public boolean shouldSkipClass(Class<?> clazz)
return false;
)
.create();
return view;
catch (Exception e)
Log.i("","errror in map fragment" + e.getMessage());
getActivity().startActivity(new Intent(getActivity(), PSSearchActivity.class));
getActivity().finish();
return null;
我在尝试打开活动时收到以下错误:
Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
我尝试使用:
android:name="com.google.android.gms.maps.SupportMapFragment"
代替:
android:name="com.google.android.gms.maps.MapFragment"
然后它崩溃了:
View view = inflater.inflate(R.layout.fragment_map, container, false);
错误:二进制 XML 文件第 8 行:膨胀类片段时出错
进入 try catch 并且不显示任何内容。 知道我做错了什么吗?我更新了 SDK 工具管理器中的所有内容,甚至更新了 google api。尝试使用旧版本的播放服务,尝试返回构建工具 21.0.1 但同样的事情:(
Build.gradle 文件:
android
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig
minSdkVersion 16
targetSdkVersion 22
versionCode 291
versionName '1.5.0'
multiDexEnabled true
dexOptions
preDexLibraries = false
javaMaxHeapSize "2g"
packagingOptions
exclude 'META-INF/services/javax.annotation.processing.Processor'
buildTypes
release
ext.enableCrashlytics=true
ext.betaDistributionReleaseNotesFilePath="/Users/gopublic/bamboo-home/xml-data/build-dir/131073/PAS-PAD-VRANDROID/changelog.txt"
ext.betaDistributionEmails="alin.rosu@100grams.nl, pedro.amanhui@100grams.nl, 100gramstest@gmail.com"
ext.betaDistributionGroupAliases="passenger-android-beta"
debug
ext.enableCrashlytics=true
ext.betaDistributionEmails="alin.rosu@100grams.nl, pedro.amanhui@100grams.nl, 100gramstest@gmail.com"
ext.betaDistributionReleaseNotesFilePath="/Users/gopublic/bamboo-home/xml-data/build-dir/131073/PAS-PAD-VRANDROID/changelog.txt"
ext.betaDistributionGroupAliases="passenger-android-beta"
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.+'
compile 'com.android.support:multidex:1.0.0'
compile 'com.google.code.gson:gson:2+'
compile 'com.android.support:cardview-v7:22.0.+'
compile 'com.android.support:recyclerview-v7:22.0.+'
compile 'com.mcxiaoke.volley:library:1.0.+'
compile 'com.jakewharton:butterknife:4.0.+'
compile 'com.squareup.okhttp:okhttp:2.0.0+'
compile 'com.google.android.gms:play-services:+'
compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
compile 'com.tonicartos:stickygridheaders:1.0.1@jar'
compile 'com.prolificinteractive:parallaxpager:0.8.0'
compile files('libs/nineoldandroids-2.4.0.jar')
compile files('libs/gcm.jar')
compile files('libs/okhttp-urlconnection-2.0.0.jar')
compile project(':libraries:facebook')
compile 'com.edmodo:cropper:1.0.1'
compile 'com.squareup.picasso:picasso:2.3.3'
compile 'com.makeramen:roundedimageview:1.3.0'
compile 'com.androidplot:androidplot-core:0.6.1'
compile 'com.google.maps.android:android-maps-utils:0.3+'
compile 'com.instabug.library:instabugsupport:1+'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile 'io.realm:realm-android:0.80.+'
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar')
transitive = true;
compile files('libs/easyandroidanimationslibrary-v0.5.jar')
【问题讨论】:
你能发布你的build.gradle
文件吗?
确定,现在编辑
10x,用于编辑,第二次检查清单,因为我发现它的格式不太好
@rosualin 你找到解决方案了吗?
我改回 21.1.2 是我没记错,并删除了 1 个导致主题被定义两次的库,然后它工作了,然后当我更新时它消失了,我我现在在 25 岁,已经有一段时间了。
【参考方案1】:
我也遇到过同样的问题。试试这个compileSdkVersion 21
buildToolsVersion '21.1.2'
而不是22.0.1
。版本22.0.1
不是纯稳定的
【讨论】:
用 21.1.2 尝试过同样的问题。甚至试图强迫它使用旧版本的播放服务,但没有运气。没有更多的想法。等待答案,同时,开始将我的代码转换为使用 2 个活动而不是 1 个活动和 2 个片段,因为地图在活动中工作。 supportMapFragment 或 MapFragment 存在问题。不知道是什么,还没有 你使用过 import android.support.v4.app.FragmentActivity 吗? 使用 supportMapFragment 代替 MapFragment(我知道你已经尝试过) 使用这个编译 'com.google.android.gms:play-services:5.0.89' 而不是编译 'com.google.android.gms:play-services:+' 我收到此错误:/Users/alinrosu/Workspace/passenger-android/passenger/src/main/res/values/colors.xml 错误:(2) 属性“主题”已定义即使我的colors.xml文件中没有“主题”,wtf?以上是关于将 Android Studio 和 SDK 更新到 22。现在,当尝试打开地图片段时,它会崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在Android Studio中更新Android SDK API 28时出现问题
mac android studio怎么更新sdk manager
Android Studio 问题:为啥即使我已经更新到 SDK 22,它仍然会报错?