今はちょっと迷子です。 Googleマップを使用してAndroidアプリケーションを実装しています。
それを機能させるために、私はかなり効率的ないくつかのチュートリアルに従いました。しかし、私はこれに固執しています:
この問題を解決するために、いくつかのトリックを見つけました here または here この問題を解決するには、エミュレータ用に特別な設定を行う必要があることを伝えます。
エミュレータに.apkをインストールします。
そして、魔法が行われ、地図が表示されるはずですが、それは私の場合ではありません。
私のエキストラがうまくインストールされていることを確認しました:
これが私のAndroidManifestです:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="mypack"
Android:versionCode="1"
Android:versionName="1.0">
<uses-sdk Android:minSdkVersion="16"/>
<permission Android:name="mypack.permission.MAPS_RECEIVE"
Android:protectionLevel="signature"/>
<uses-permission Android:name="mypack.permission.MAPS_receive"/>
<!-- Permission pour utiliser la connexion internet -->
<uses-permission Android:name="Android.permission.INTERNET" />
<!-- Permission permettant de vérifier l'état de la connexion -->
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<!-- Permission pour stocker des données en cache de la map -->
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<application Android:label="@string/app_name" Android:icon="@drawable/ic_launcher">
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="MYKEY" />
<meta-data Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<activity Android:name="Home"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN"/>
<category Android:name="Android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
これが私のMainActivityです
import Android.app.Activity;
import Android.os.Bundle;
import com.google.Android.gms.maps.GoogleMap;
import com.google.Android.gms.maps.MapFragment;
public class Home extends Activity {
/**
* Called when the activity is first created.
*/
private GoogleMap map;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
}
}
および対応するレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/map"
Android:name="com.google.Android.gms.maps.MapFragment"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</LinearLayout>
いくつかの修正やここで見逃したものを見つけたいと思っています。事前に感謝します。
Android SDK Managerで、「Android 4.4.2(API 19)」の下に「Google API(x86システムイメージ)」をインストールする必要があります。Eclipseを終了して再起動します。
次に、AVDマネージャーで新しいAndroid仮想デバイスを作成し、ターゲットとして[Google API x86(Google Inc.)-APIレベル19]を選択します。[ホストGPUを使用]マップが高速化されます。
それだけです。この新しいエミュレータにはPlay Servicesがプリインストールされており、x86イメージであるため、より高速に実行されます。
Android studio、私を助けた唯一のことは、gradleファイルのGoogle Play Servicesバージョンを最後のバージョンからこれに減らすことでした:
compile 'com.google.Android.gms:play-services:4.2.+'
(もちろん、これは、実行を継続できるようにするための一時的な「バイパス」です)
私はこのエラーを取得するのに問題があり、「更新」ボタンを押すと何もしませんでした、それはループで止まりました、働いたのは次のことです(Android Studio):
提供された回答はエミュレーターで機能しますが、これは実際のデバイスでは実際の問題である可能性があり、これらのソリューションは実際のデバイスでは機能しません。これは、古いバージョンのGoogle Play Servicesがある古いデバイスで発生する可能性があります。
この問題を克服するために、Google Play ServicesライブラリにはGoogle Play Servicesの可用性を確認するためのAPIのセットがあります。主に GoogleApiAvailability
クラスは、古いバージョン。
さて、デバイスでGoogle Play開発者サービスが利用可能かどうかを検出するために、私は通常、チェックを実行するヘルパーメソッドを作成します
private boolean checkPlayServices(){
GoogleApiAvailability gaa = GoogleApiAvailability.getInstance();
int result = gaa.isGooglePlayServicesAvailable(getApplicationContext());
if(result != ConnectionResult.SUCCESS){
if(gaa.isUserResolvableError(result)){
gaa.getErrorDialog(this,result, REQUEST_PLAY_SERVICES_RESOLUTION).show();
}
return false;
}
return true;
}
このヘルパーメソッドは、isGooglePlayServicesAvailable
から返されたエラーコードを調べて、Google Play Servicesが利用可能かどうかを確認します。次に、isUserResolvableError
を呼び出して、ユーザーがエラーを解決できるかどうかを判断します(たとえば、Google Play開発者サービスを更新することにより)。解決可能な場合、ユーザーにシステムがエラーを解決することを確認するダイアログが表示されます。次に、アクティビティのonCreate
メソッドで呼び出し、以下のようにチェックを実行します
//I normally assume Google Play services is available
private boolean playServicesAvailable = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_selector);
//check for rare case where Google Play Services is not available
playServicesAvailable = checkPlayServices();
if(!playServicesAvailable){
//hide UI elements and turn off features that rely on Google Play Services
}
}
それがそこにいくつかを助けることを願っています
Google Playをサポートしていないエミュレータを設定する手間を省くために、常にplayicon
画像に示すように:Playstore行の下にあるplayアイコン.
Google Play互換エミュレーターをインストールした後、エミュレーターでアプリを再度実行します...通知が表示されたら、「アプリが起動しない場合......」通知をクリックして、画面の指示に従います:「署名Gmailアカウントを使用する場合...メールとパスワードなど」、Googleライセンスに同意するとすぐに、Google Playの更新画面が表示されます:
google Playを更新して、アプリをもう一度起動してください。また、アプリレベルのgradleおよびgradleにGoogleの依存関係があることを確認します。
アプリレベルグラドルbuild.gradle(Module:app)
dependencies {
}
apply plugin: 'com.google.gms.google-services'
プロジェクトレベルGradle "build、gradle(Project:AppName)"
依存関係{
classpath 'com.google.gms:google-services:3.2.1'
}
AndroidエミュレーターAndroid Studioを使用しているときにのみ、google-servicesプラグインをgradle:appに追加することで問題を解決しました。
apply plugin: 'com.google.gms.google-services'
その後、依存関係に追加します
compile 'com.google.Android.gms:play-services:9.0.0'
以前私は使用していました
compile 'com.google.Android.gms:play-services:9.4.0'
ただし、バージョンの不一致があるというエラーが発生し、com.Android.gmsバージョン9.0.0を使用することをお勧めします
同じエラーが発生しました。 Android Studioとそれに関連するAndroid SDKツールを更新することで修正しました。
Android 7.0でビルドしようとすると、この同じエラーが発生しました。6.0でリビルドしましたが、問題はありませんでした。1APIレベルに戻すことも役立ちます。
この問題を次の方法で解決しました。
1-「Google Play Services」がSDKツールにインストールされていることを確認します。この画像のように:
2-AndroidManifest.xmlファイルに次の行が含まれていることを確認します。
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
3-dependenciesofbuild.gradleこの行を追加します:
classpath 'com.google.Android.gms:play-services-maps:17.0.0'
注:play-services-mapsのバージョンを17から最新に変更する必要があるかもしれませんが、17は2019年8月に最新です...
この画像のように:
プロジェクトを再構築することを忘れないでください(flutterを使用する場合、ターミナルでこのコマンドを実行してくださいflutter clean)
次に、マップがエミュレーターで機能していることがわかります。