在 Android Studio 中运行 AVD 时应用程序崩溃。我正在使用 API 27 在虚拟设备像素 5x 上运行

Posted

技术标签:

【中文标题】在 Android Studio 中运行 AVD 时应用程序崩溃。我正在使用 API 27 在虚拟设备像素 5x 上运行【英文标题】:App is crashing while running AVD in Android Studio. I am running on virtual device pixel 5x with API 27 【发布时间】:2018-09-08 17:29:22 【问题描述】:

当我尝试创建 FusedLocationApi 的实例时,它没有被识别为一些 How。它是红色的。它没有导入任何类。在我看来,Gradle Build App 中可能存在一些问题。请检查一下。

这是我的 MapActivity.java 文件

package com.matt.mapapp;
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements             
OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks,     
GoogleApiClient.OnConnectionFailedListener, LocationListener 

private GoogleMap mMap;
private LocationRequest locationRequest;
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);



@Override
public void onMapReady(GoogleMap googleMap) 
    mMap = googleMap;
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
       String[] permissions,
        buildGoogleApiClient();
        mMap.setMyLocationEnabled(true);

    


private synchronized void buildGoogleApiClient()
    client = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
    client.connect();



@Override
public void onLocationChanged(Location location) 
    locationRequest = new LocationRequest();
    locationRequest.setInterval(1000);
    locationRequest.setFastestInterval(1000);
    locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

    if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
        LocationRequest.FusedLocationApi.requestlocationUpdates(client, locationRequest, this);
    




@Override
public void onConnected(@Nullable Bundle bundle) 



@Override
public void onConnectionSuspended(int i) 



@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) 



这是我的构建 gradle(模块应用程序)文件。编译时好像有问题,因为没有compile这样的命令

apply plugin: 'com.android.application'

   android 
       compileSdkVersion 26
       defaultConfig 
           applicationId "com.matt.mapapp"
           minSdkVersion 22
           targetSdkVersion 26
           versionCode 1
           versionName "1.0"
           testInstrumentationRunner               
"android.support.test.runner.AndroidJUnitRunner"
       
       buildTypes 
           release 
               minifyEnabled false
               proguardFiles getDefaultProguardFile('proguard-android.txt'),        
'proguard-rules.pro'
           
       
   

   dependencies 
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation 'com.android.support:appcompat-v7:26.0.0-beta1'
       implementation 'com.google.android.gms:play-services-maps:11.0.4'
       implementation 'com.google.android.gms:play-services-location:11.0.4'
       testImplementation 'junit:junit:4.12'
       androidTestImplementation 'com.android.support.test:runner:0.5'
       androidTestImplementation'com.android.support.test.espresso:espresso-core:2.2.2'

请检查一下并告诉我背后的原因。我正在关注一个关于如何创建基于地图的应用程序的视频教程,突然当我到达使用 Fused Location Api 的地方时,我被卡住了。教程中的 Build Gradle 代码与我的不同,所以我认为这可能是 FusedLocationApi 无法正常工作的原因。

【问题讨论】:

【参考方案1】:

在基于 Google 地图创建应用时,切勿使用虚拟设备,因为它在大多数情况下都会出错,而您应该连接到带有 USB 调试功能的 Android 手机。为此,您必须转到手机设置的“关于”部分,然后单击构建版本或内部版本号为 7 或它说成为开发人员所需的次数,而不是返回主设置并单击开发人员选项从那里你必须打开USB调试。现在您的手机会询问与 PC 的连接验证,单击接受并勾选记住我的选择。现在您将能够在所有列出的虚拟设备上方看到您的手机,并且您可以在手机中安装该应用程序。谢谢。

如果这对你有帮助,请告诉我...

【讨论】:

非常感谢您对我的帮助,也非常感谢您提供 USB 调试指南,我很感激。

以上是关于在 Android Studio 中运行 AVD 时应用程序崩溃。我正在使用 API 27 在虚拟设备像素 5x 上运行的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Android Studio 中看到 AVD 管理器

android Studio 运行不显示avd 无法运行

Android Studio 出错:无法在模拟器中启动 AVD

Mac + Android之Android Studio 环境搭建,AVD模拟器运行(包括Genymotion模拟器插件配置运行)

Android Studio AVD 导致 avd 崩溃,AS 无警告关闭

android studio运行时报错AVD Nexus_5X_API_P is already running解决办法