안드로이드 구글 지도 java.lang.NoClassDefFoundError: 확인 실패: Log/apache/http/ProtocolVersion
Google 지도 Android SDK 11.6.2(15.0.1도 시도)를 사용하고 있지만 지도가 표시되기 전에 다음과 같은 충돌이 발생합니다.매니페스트에서 API 키를 이미 확인했습니다. 사용할 수 있지만 여전히 이 문제가 발생합니다.나는 목표를 가지고 있습니다.SDK 버전은 28입니다.이것이 이 문제의 원인입니까?
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3)
at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4)
at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51)
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11)
at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16)
at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/system/priv-app/PrebuiltGmsCorePi/app_chimera/m/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi-v7a, /data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@12848063@12.8.48 (100408-196123505):25)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3)
at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4)
at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51)
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11)
at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16)
at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61)
매니페스트에 저장<application>
태그:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
더 많은 정보: https://issuetracker.google.com/issues/79478779
그러면 충돌이 해결됩니다.매니페스트에 적용
<application
...
>
...
<uses-library android:name="org.apache.http.legacy"
android:required="false"/>
...
<application/>
다음 해결 방법 중 하나를 수행합니다.
1 - Play-services-maps 라이브러리를 최신 버전으로 업데이트합니다.
com.google.android.gms:play-services-maps:16.1.0
2- 또는 다음 선언을 포함합니다.<application>
의 요소.AndroidManifest.xml
.
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
앱이 API 레벨 28(Android 9.0) 이상을 대상으로 하는 경우 다음 선언을 포함해야 합니다.<application>
AndroidManifest.xml 요소입니다.
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
앱이 API 레벨 28(Android 9.0) 이상을 대상으로 하는 경우 AndroidManifest.xml의 요소에 다음 선언을 포함해야 합니다.아래 링크에서 28+를 대상으로 하는 앱의 행동 변화를 봅니다.
https://developer.android.com/about/versions/pie/android-9.0-changes-28
Android 8.0 이상에서 이러한 일이 발생하면 매니페스트 응용 프로그램 태그에 이 줄을 입력하십시오.
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
여기 해결책이 있습니다.
<uses-library android:name="org.apache.http.legacy" android:required="false" />
내부의 Menifest.xml에 이 줄 추가<application>
꼬리표를 달다
더 많은 정보를 위하여
설정:
multiDexEnabled true
다음과 같이:
android {
compileSdkVersion 28
defaultConfig {
multiDexEnabled true
}
buildTypes {
release {
}
}
}
매니페스트 파일에 사용 권한 추가
`<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION."/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>`
그리고 부분적으로 이 코드 라인을 입력합니다.
` <uses-library android:name="org.apache.http.legacy" android:required="false"/>`
저도 같은 문제가 있었고 이것으로 해결되었습니다.
xml 파일 res/xml/network_security_config.xml 생성
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
AndroidManifest.xml에 태그 2개를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest......>
<application android:networkSecurityConfig="@xml/network_security_config">
<activity..../>
......
......
<uses-library
android:name="org.apache.http.legacy"
android:required="false"/>
</application>
앱 빌드 그라들에 useLibrary 'org.apache.http.legacy'도 추가합니다.
defaultConfig {
applicationId "com.ascorb"
minSdkVersion 19
targetSdkVersion 28
versionCode 6
versionName "1.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
useLibrary 'org.apache.http.legacy'
}
언급URL : https://stackoverflow.com/questions/50782806/android-google-maps-java-lang-noclassdeffounderror-failed-resolution-of-lorg-a
'source' 카테고리의 다른 글
Android에 사용되는 SQLite 버전은 무엇입니까? (0) | 2023.08.05 |
---|---|
M1 도커 미리 보기 및 키클로크 'image' 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼(linux/arm64/v8)과 일치하지 않음' 문제 (0) | 2023.08.05 |
진자 템플릿의 사전 목록을 통해 반복하는 방법은 무엇입니까? (0) | 2023.08.05 |
스프링 부트에서 rest 컨트롤러가 작동하지 않음 (0) | 2023.08.05 |
모듈 간 변수를 만드는 방법은 무엇입니까? (0) | 2023.08.05 |