web-dev-qa-db-ja.com

マップアクティビティを実行するとアプリがクラッシュする

プロジェクトマップアクティビティが機能していません
ちょうどgoogle_maps_api.xmlにAPIキーを貼り付け、実行をクリックしました

Logcat:

E/AndroidRuntime:致命的な例外:スレッド5プロセス:com.example.appmy.lofind、PID:10901 Java.lang.NoClassDefFoundError:失敗した解決:Lorg/Apache/http/ProtocolVersion; el.b(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):3)at ek.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48 (040700-196123505):4)em.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):51)at com.google.maps.api.Android.lib6。 drd.ap.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):11)at dw.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8。 48(040700-196123505):16)at dw.run(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):61)原因:Java.lang.ClassNotFoundException:Did n'tパスでクラス「org.Apache.http.ProtocolVersion」を見つけます:DexPathList [[Zip file "/system/priv-app/PrebuiltGmsCore/app_chimera/m/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com .google.Android.gms/app_chimera/m/00000006/MapsDynamite.apk!/ lib/x86、/ system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:126) java.lang.ClassLoader.loadClass(ClassLoader.Java:379)at ad.loadClass(:com.google.Android.gms.dynamite_dynamiteloader @ 12848026 @ 12.8.48(040700-196123505):25)at Java.lang.ClassLoader .loadClass(ClassLoader.Java:312)at el.b(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):3)at ek.a(:com.google.Android。 gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):4)em.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):51)at com.google .maps.api.Android.lib6.drd.ap.a(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):11)at dw.a(:com.google.Android .gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):16)dw.run(:com.google.Android.gms.dynamite_mapsdynamite @ 12848026 @ 12.8.48(040700-196123505):61)E/SchedPolicy :set_timerslack_nsの書き込みに失敗しました:操作は許可されていません

14
MajdNaji

ここで、ターゲットSDK 28を使用するときの同じ問題。SDK27に戻すことで問題が解決しました。


ターゲットSDKを元に戻さないでください。

このソリューションをより適切に使用してください https://stackoverflow.com/a/50944537/5710605

13

Android Google maps Java.lang.NoClassDefFoundError:Failed resolution of:Lorg/Apache/http/ProtocolVersion で別のソリューションを見つけました

これをマニフェストに追加するだけです:

<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>

更新:

Google Maps SDKバージョン16.1.0以降では、マップライブラリのAndroidManifestにタグが追加されているため、上記のソリューションの追加をスキップできます。

https://developers.google.com/maps/documentation/Android-sdk/releases#2019-02-06

Android P以降でApache HTTPクライアントをサポートするために、AndroidManifest.xmlに次の宣言を追加しました。 com.google.Android.gms:play-services-maps:16.1.0に更新した後、独自のAndroidManifest.xmlからこの行を削除できます。 (問題 117591497

<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>

51

これをマニフェストタグに追加します。

<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>

詳細: https://issuetracker.google.com/issues/79478779

googleのドキュメントが言ったように:

Com.google.Android.gms:play-services-maps:16.0.0以下を使用しており、アプリがAPIレベル28(Android 9.0)以上をターゲットにしている場合、AndroidManifestの要素内に次の宣言を含める必要があります。 xml。

1
mhdjazmati