当前位置: 首页 > 知识库问答 >
问题:

除非您(通过Bazaar)更新Google Play服务,否则此应用程序不会运行

栾和风
2023-03-14

我正在测试新的Android版谷歌地图API V2,当应用程序启动时,我收到了以下信息:

这是在4.1模拟器上运行的。

这是我的AndroidManifest。xml文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Require OpenGL ES version 2 -->
    <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="##myapikey##"/>

    </application>
</manifest>

文件main活动。爪哇:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

文件activity_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" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>

单击"Update"会使应用程序崩溃,并显示以下stackTrace:

E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent
  { act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
  id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending }
E/AndroidRuntime(1034):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
E/AndroidRuntime(1034):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3351)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3312)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3522)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3490)
E/AndroidRuntime(1034):     at com.google.android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034):     at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(1034):     at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(1034):     at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1034):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)

我还提到了Google Play服务项目。我做错了什么?

更新

Google issue tracker中相应的bug(https://issuetracker.google.com/issues/35822258)一段时间前就解决了。

现在,您可以在模拟器中使用谷歌地图Android应用编程接口,并创建具有播放服务的虚拟设备,如以下答案所述:

https://stackoverflow.com/a/46246782/5140781

共有3个答案

茅桐
2023-03-14

我花了大约一天的时间在Android emulator上配置新的GMAPSAPI(谷歌地图Android API v2)。我在互联网上找到的那些方法中,没有一种适合我。但我还是做到了。以下是如何:

  1. 使用以下配置创建新的仿真器:

在其他版本上,由于安装必要的应用程序时出现各种错误,我无法进行配置。

2) 启动emulator并安装以下应用程序:

您可以通过以下命令完成此操作:

2.1)adb shell安装-o reount, rw-t yaffs2 /dev/block/mtdblock0 /system
2.2)adb shell chmod 777 /system/app
2.3-2.5)adb推送Each_of_the_3_apk_files.apk /system/app/

下载APK文件的链接。我已经从我的根深蒂固的Android设备复制它们。

  • 谷歌登录服务。apk

3) 在模拟器上安装Google Play服务和Google地图。我有一个错误491,如果我安装他们从谷歌播放商店。我将应用程序上传到emulator,并在本地运行安装。(您可以使用adb安装此软件)。应用程序的链接:

  • 谷歌地图
  • 谷歌播放服务

4) 完成这些步骤后,我成功地在模拟器上运行了一个演示示例。以下是一个屏幕截图:

督飞羽
2023-03-14

根据与谷歌Android开发者的讨论,目前不可能在模拟器上运行新的MapAPI。

(评论来自Zhelyazko Atanasov昨天23:18,我不知道如何直接链接到它)

此外,在实际设备上运行时,您不会看到“(via Bazaar)”部分,而“更新”按钮将打开Play Store。我假设Bazaar打算在Android模拟器上提供Google Play服务,但它还没有准备好。。。

司徒胤
2023-03-14

更新

谷歌地图API v2现在安装在最新的谷歌系统图像(api: 19 ARM或x86)上。
所以你的应用程序应该只使用新图像。没有必要安装这些文件。

我一直在尝试在模拟器下运行Android Google Maps V2应用程序,一旦我最终运行了Google Play服务,我将我的SDK更新为Google Play服务第4版,我的模拟器将不再运行我的应用程序。

我现在已经知道了如何从transformer平板电脑更新模拟器。(您不需要平板电脑,因为您可以下载以下文件。)

我使用钛备份备份我的华硕Eee Pad变压器(TF101),然后抓取com.Android自动售货机和com.google.Android来自备份的gms APK文件。

我在一个配置有平台的模拟器上安装了这些: 4.1.2,应用编程接口级别: 16,CPU英特尔/原子x86)和我的谷歌地图V2应用程序再次工作。

就这些。。不需要关于/system/app的任何其他步骤。

我的应用程序只使用Google Maps API,毫无疑问,如果您使用其他Google Play服务,则需要执行更多步骤。

最新Google Play服务的新文件:

>

通用域名格式。Android自动售货机-20140218。apk

与之前相同的说明:创建一个新的模拟器与任何CPU/ABI,非谷歌API目标(版本10-19工作)和GPU仿真打开或关闭,然后安装文件:

adb install com.android.vending-20140218.apk
adb install com.html" target="_blank">google.android.gms-20140218.apk

如果要升级现有仿真器,则可能需要通过以下方式卸载以前的版本:

adb uninstall com.android.vending
adb uninstall com.google.android.gms

这就是全部。

 类似资料:
  • 我试图使用BaseGameUtils在我的应用程序中集成游戏。一切看起来都很好,但当我运行应用程序时,我得到的消息是“这个应用程序不会运行,直到你更新谷歌播放服务”,当我点击更新按钮,播放商店在谷歌播放服务页面中打开,但我只能“打开”或“卸载”,因为它是更新的。我试图重新安装,但不起作用。 编辑:我从Logcat“GooglePlayServiceSutil:Google Play service

  • 问题内容: 编辑: 在Github 上正在讨论一个相关的问题,但是在另一种部署模式下(Typesafe Activator UI,而不是Docker)。 我试图模拟系统重启,以验证Docker重启策略,该策略声明能够按照正确的顺序重新运行容器。 我有一个用Java编写的Play框架应用程序。 Dockerfile看起来像这样: 我使用开始。 当我 然后控制台告诉我: 编辑: 当我按照Play文档的

  • 问题内容: 这是我的配置: 根据此处找到的logback文档(http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy),文件将根据我的fileNamePattern 每分钟翻转一次。 我观察了它是如何工作的,这是我的发现: 它不会在很短的时间内创建日志文件。 当新日志到达时,它只会为前一分钟创建一个日志文件。(例如,我在

  • 问题内容: 好的,所以我有一个监视线程,该线程检查ArrayList的大小,并在该大小大于某个数字之后执行一些操作。我现在遇到的问题是,除非我的循环中有打印语句,否则大小值永远不会更新。这是一些代码来显示我到底要做什么。 上面的代码不起作用。它永远不会进入if语句。但是,这很好用: 编辑:getSize()代码: 注意:我有另一个正在运行的线程正在更新并添加到我的t类中的列表中。 有什么帮助吗?当

  • 使用JavaFX8,如果ObjectProperty的一个属性发生更改,但引用保持不变,那么如何能够得到通知? 下面是使用ObjectProperty的具体示例 相关代码是第一次设置的值并随后删除一个元素的位置。change eListener仅在设置的值时收到通知,但在值更改时不会收到通知。 我的问题是:即使引用的对象没有更改,如果密钥库得到更新,我如何获得通知?JavaFX中是否有内置方式?

  • 我正试图通过后台服务将数据发布到web服务器。 函数PostData将数据发送到服务器,但当我添加它时,程序显示: 不幸的是,程序停止工作 这是我的代码: 和堆栈跟踪: