1

내 응용 프로그램에서 FileProvider을 사용하고 있습니다. 평소처럼 파일에 <Provider> 태그를 다음과 같이 선언했습니다.android.support.v4.content.FileProvider 클래스가 안드로이드 Kitkat에 없습니다.

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.jk.android.fileprovider" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/file_paths" /> 
</provider> 

나는 잘 작동 lollipop 버전이 안드로이드 장치에서 실행합니다. 내가 kitkat 버전을 시도 할 때 다음과 같은 오류를 보여줍니다 : 나는 this처럼 많은 솔루션을 시도했다하지만 나를 위해 작동하지 않습니다

FATAL EXCEPTION: main 
       Process: com.jk.android.perfectphotoeditor2018, PID: 24992 
       java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.jk.android.perfectphotoeditor2018-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jk.android.perfectphotoeditor2018-2, /system/lib]] 
        at android.app.ActivityThread.installProvider(ActivityThread.java:5071) 
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4648) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4588) 
        at android.app.ActivityThread.access$1500(ActivityThread.java:151) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1290) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5299) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:932) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:748) 
        at dalvik.system.NativeStart.main(Native Method) 
       Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.jk.android.perfectphotoeditor2018-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jk.android.perfectphotoeditor2018-2, /system/lib]] 
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
        at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
        at android.app.ActivityThread.installProvider(ActivityThread.java:5056) 
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4648)  
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4588)  
        at android.app.ActivityThread.access$1500(ActivityThread.java:151)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1290)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:136)  
        at android.app.ActivityThread.main(ActivityThread.java:5299)  
        at java.lang.reflect.Method.invokeNative(Native Method)  
        at java.lang.reflect.Method.invoke(Method.java:515)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:932)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:748)  
        at dalvik.system.NativeStart.main(Native Method) 

. 그래서,이 문제를 해결할 수 있도록 도와주세요.

build.gradle 의존성 :

dependencies { 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    configurations.all { 
     resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' 
    } 
    testCompile 'junit:junit:4.12' 
    /* Add the CSDK framework dependencies (Make sure these version numbers are correct) */ 
    // compile 'com.aviary.android.feather.sdk:aviary-sdk:3.6.3' 
    compile 'com.android.support:appcompat-v7:25.4.0' 
    compile 'com.adobe.creativesdk.foundation:auth:0.9.1251' 
    compile 'com.adobe.creativesdk:image:4.8.4' 
    compile 'com.localytics.android:library:4.0.1' 
    compile 'com.android.support:design:25.4.0' 
    compile 'com.android.support:multidex:1.0.2' 
    compile 'com.android.support:support-v4:25.4.0' 
    compile 'com.intuit.sdp:sdp-android:1.0.4' 
    compile 'com.github.bumptech.glide:glide:4.3.1' 
    compile 'com.google.android.gms:play-services-ads:9.4.0' 
    implementation 'com.android.support:support-v4:25.4.0' 
} 
+0

build.gradle 파일 ('dependencies' 섹션 만)을 게시하십시오. 또한 전체 스택 트레이스는 무엇입니까? – pskink

+0

checkout 의존성에 대한 편집 된 질문 @pskink –

+0

"kitkat 버전에서 시도해 보면 ClassnotfoundException이 표시됩니다." - 질문을 편집하고 전체 Java 스택 추적을 게시하십시오. – CommonsWare

답변

-1

FileProvider이 롤리팝 안드로이드 API 레벨 22에 도입 된, 그건 롤리팝 장치에서 테스트 할 때 ClassNotFoundException가 직면하지 않은 이유입니다. Android Kitkat에는 FileProvider 클래스가 없으므로 예외가 발생합니다. 파일 this post에 액세스하려는 경우

+2

'FileProvider'는 지원 라이브러리의 파일입니다. 이것은 라이브러리의'22.1.0 '버전의 지원 라이브러리에 추가되었습니다. 그것은 적어도 안드로이드 4.0.3에서 작동합니다. – CommonsWare

관련 문제