0

我目前正在努力让一个旧的 Titanium SDK 1.x 应用程序在 Titanium SDK 3.1.2 上运行在现代时代。我设法发现自己​​陷入困境的挑战之一是从 Google Android Maps API v1 升级到 v2 后,我一直收到此错误:

未找到 Google Play 服务资源。检查您的项目配置以确保包含资源。

我已经在 ADK 中安装了 18.0.1 构建工具以及所需的 Google Play Services extras 包。卸载/重新安装没有任何用处,据我所知,没有办法在 Titanium 中手动包含 Play Store Services 库。

作为参考,我按照此处的说明在应用程序中设置 Maps API v2。以下是我的 tiapp.xml 文件中的内容(我替换了实际的包名称):

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<uses-permission android:name="com.example.permission.MAPS_RECEIVE"/>
<permission android:name="com.example.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<application>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="###"/>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>
</application>

请注意,已在 Google API 控制台中使用了正确的证书和正确的 API。

有谁知道为什么我可能无法在我的 Titanium 应用程序中加载 Google Play 服务?

提前致谢!

4

2 回答 2

0

地图仅适用于设备。你在模拟器中运行这个吗?

我有一个额外的权限集"android.permission.ACCESS_NETWORK_STATE"

还要仔细检查以确保您appId的内容正确并与tiapp.xml文件中的内容相匹配

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <tool-api-level>14</tool-api-level>
    <manifest>
        <!-- uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14" -->
        <!-- Camera Access -->
        <uses-permission android:name="android.permission.CAMERA"/>
        <uses-feature android:name="android.hardware.camera"/>
        <uses-feature android:name="android.hardware.camera.autofocus"/>
        <!-- Allows the API to download data from Google Map servers -->
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <!-- Allows the API to cache data -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <!-- Use GPS for device location -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <!-- Use Wi-Fi or mobile connection for device location -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <!-- Allows the API to access Google web-based services -->
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
        <!-- Specify OpenGL ES 2.0 as a requirement -->
        <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
        <!-- Replace <com.domain.appid> with your application ID -->
        <uses-permission android:name="com.wiley.TIgram.permission.MAPS_RECEIVE"/>
        <permission android:name="com.wiley.TIgram.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
        <application android:hardwareAccelerated="true" android:theme="@android:style/Theme.Holo.Light">
            <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="XXXXXXXXXXXXXXXXXXXXXXXX"/>
            <activity android:configChanges="keyboardHidden|orientation" android:name="ti.modules.titanium.media.TiCameraActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        </application>
    </manifest>
</android>
于 2013-08-23T13:58:30.480 回答
0

这更像是一个建议而不是一个答案,但我得到了同样的错误,它让我在很长一段时间内都发现错误的树,然后我才意识到我在代码的其他地方有错误。在我的例子中,有一个 view 元素有一个 null 属性,尽管从堆栈跟踪中并不清楚。您在上面粘贴的 Play Services 错误很早就可见,但如果找到该服务,编译器似乎会忽略它。

:(

为了让事情变得更加混乱,我为 iOS 构建了相同的代码并且没有错误。

于 2014-06-12T01:00:42.967 回答