在SDK工具更新到25.3.1之后,Android Studio上的模拟器无法启动

时间:2017-03-07 22:08:00

标签: android android-studio android-emulator

将我的Android SDK工具今天更新到25.3.1后,模拟器不再运行了。

我可以打开AVD Manager。当我点击" Play"在列表中的一个模拟器上,我在Android Studio上看到了下面的栏

enter image description here

但是在进度条结束后,没有任何反应。

我在release notes中看到最新的更新给模拟器带来了变化,因此我想知道这是一个错误还是我错过了一些错误。

我正在使用Android Studio 2.3。

有什么想法吗?

11 个答案:

答案 0 :(得分:24)

升级后我遇到了同样的问题。我无法弄清楚导致配置问题的原因,但我确实找到了解决方法。

首先,我尝试从命令行启动模拟器:

$ emulator @<name_avd_image>
emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-ranchu" is in the same location as your system image.
emulator: ERROR: ANDROID_SDK_ROOT is defined (<android>/sdk) but cannot find kernel file in <android>/sdk/system-images/ sub directories

如果您使用emulator标记运行-verbose,则可以获得更多信息。我尝试重新安装系统映像(例如Android API 25 x86 w / Google API),Android Emulator 25.3.1,然后重新创建AVD但没有任何效果。

最后作为一种解决方法,我只是将SDK系统映像目录中的所有系统文件复制到AVD目录中:

示例:Pixel XL(Android API 25 x86 w / Google API)
消息来源:<android> / sdk / system-images / android-25 / google_apis / x86 /
目的地:〜/ .android / avd / Pixel_XL_API_25.avd /

之后,模拟器立即启动。它并不理想,但是这阻碍了我的开发,所以我不得不让模拟器重新启动并运行。我希望其他人能够弄清楚配置中出现了什么。

更新:找出配置问题!

我注意到我经常看到控制台错误&#34;您的模拟器已过期,请通过启动Android Studio进行更新:&#34;所以我决定检查:

$ which emulator
<$ANDROID_SDK_ROOT>/tools/emulator

在此thread

的帮助下
  

问题是有两个模拟器:一个在   $ANDROID_SDK_ROOT/tools,另一个人   $ANDROID_SDK_ROOT/emulator$ANDROID_SDK_ROOT/tools中的那个   无法启动。之前放置$ANDROID_SDK_ROOT/emulator   $ANDROID_SDK_ROOT/tools变量中的$PATH,它应该修复   问题

注意:对于大多数Mac用户,您可以编辑~/.bash_profile以更改这些设置,然后运行$source ~/.bash_profile以加载更新。在我的特定情况下,我还有$ ANDROID_HOME的旧值,我必须清除它。

答案 1 :(得分:8)

您是否检查过** SDK工具中安装的Android模拟器?

转到设置 - &gt; SDK-工具

查看是否安装了Android。

我面临同样的问题。当我检查SDK工具时,我发现没有安装Android模拟器。

enter image description here

答案 2 :(得分:6)

libstdc++.so.6是原因(正如@doruMarinau指出的那样); Android Studio 2.3将文件移至新文件夹your_sdk/emulator/lib64

如果使用Linux,请为其创建符号链接:

$ ln -sf /usr/lib/libstdc++.so.6  /your_sdk/emulator/lib64/libstdc++/libstdc++.so.6

答案 3 :(得分:3)

解决方案是: 工具 - Android - Sdk经理 选项卡Sdk工具 安装模拟器25.3.1

答案 4 :(得分:2)

这对我有用:

转到AVD Manager,然后在“操作”列中,单击指向黎明的箭头,然后选择“擦除数据&#34;”。 在此之后,尝试运行模拟器。

enter image description here

答案 5 :(得分:1)

转到Sdk/emulator/lib64/libstdc++移动libstdc++.so.6libstdc++.so.6.0.18到myfolder(我创建了这个)(或任何其他位置)作为备份并复制libstdc++.so.6libstdc++.so.6.0.21来自usr/lib64;再次尝试启动虚拟设备。

答案 6 :(得分:1)

这是一个libGL错误和libstdc ++问题。无法在模拟器中启动AVD。 这是一个知道错误,您可以通过一些简单的步骤轻松击败它。

我在Ubuntu 16.10 64bit上测试了这个解决方案

<强>解决方案:

$adb kill-server
$adb start-server

此后从Android工作室启动您的模拟器。如果这不起作用,那么请继续进行下一个解决方案。

替代解决方案:

首先,安装一些软件包和库:

$sudo apt-get install lib64stdc++6:i386
$sudo apt-get install mesa-utils

其次,调整一些链接:

$ cd YOURPATH/Android/Sdk/tools/lib64
$ mv libstdc++/ libstdc++.bak
$ ln -s /usr/lib64/libstdc++.so.6  libstdc++

第三,重新启动您的AVD设备并进行测试。

答案 7 :(得分:0)

过去几天,它让我疯了。这对我有用:

&p ;;系统环境变量&#34;中的

ANDROID_HOME, ANDROID_SDK_ROOT个变量与Android Studio -> Settings -> Android SDK Location不同。所以当我改变环境变量时,AVD就开始了!

(更改环境变量后,您应该重新启动Android Studio)

答案 8 :(得分:0)

唯一对我有用的解决方案是安装以下缺少的库:

-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
    if (metadataObjects != nil && [metadataObjects count] > 0) {
        AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjects objectAtIndex:0];

        if ([[metadataObj type] isEqualToString:AVMetadataObjectTypeQRCode]) {
            [_statuslbl performSelectorOnMainThread:@selector(setText:) withObject:[metadataObj stringValue] waitUntilDone:NO];

            self.tablenum=[NSString stringWithFormat:@"%@",[metadataObj stringValue]];
            NSLog(@"tablenum-----%@",self.tablenum);
           // NSString *ChkStr = [self.tablenum substringWithRange:NSMakeRange(9,7)];
           // NSLog(@"check str:%@",ChkStr);

            _tablevalue=self.tablenum;
            [[NSUserDefaults standardUserDefaults] setValue:_tablevalue forKey:@"qrcode"];
            [[NSUserDefaults standardUserDefaults] synchronize];



            dispatch_async(dispatch_get_main_queue(), ^{

            UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"Qr Value Acquired!!" message:@"Your QR code has been scanned successfully!!." preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                             handler:^(UIAlertAction *action)
                                       {
                                           [[NSUserDefaults standardUserDefaults] setValue:self.tablenum forKey:@"qrcode1"];
                                           [[NSUserDefaults standardUserDefaults] synchronize];
                                           AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
                                           [captureSession stopRunning];
                                           captureSession = nil;

                                         //  [_videoPreviewLayer removeFromSuperlayer];

                                           [self performSegueWithIdentifier:@"qrback" sender:self];

                                       }];
            [alertController addAction:okAction];
            [self presentViewController:alertController animated:YES completion:nil];
            });
            [self performSelectorOnMainThread:@selector(stopReading) withObject:nil waitUntilDone:NO];
            [_scanqrb performSelectorOnMainThread:@selector(setTitle:) withObject:@"Start!" waitUntilDone:NO];
            _isReading = NO;
        }
    }
}

有了它们,请使用以下内容更新sdk模拟器中的那个:

$sudo apt-get install lib64stdc++6:i386
$sudo apt-get install mesa-utils

再次启动你的模拟器,它会正常工作。

答案 9 :(得分:0)

在此版本中,Android Emulator将与SDK Tools分开发布。 所以只需在你的android studio中使用sdk工具安装android Emulator

答案 10 :(得分:0)

我的问题是ANDROID_SDK_HOME指向d:\.android而不是d:\。找不到图像了。