2016-01-13 14 views
7

मैं डिवाइस से फ़ोटो प्राप्त करने के लिए एक फ़ाइल प्रदाता का उपयोग कर रहा हूं। कार्यान्वयन डिबग में बस ठीक काम करता है बनाता है (गलत minifyEnabled) लेकिन जब मैं रिहाई के निर्माण का निर्माण कर रहा हूँ (सच minifyEnabled) मैं कोई त्रुटि मिलती है:एंड्रॉइड फ़ाइलप्रोवाइडर क्लास रिलीज में नहीं मिला

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.package.name-2/base.apk"], 
nativeLibraryDirectories=[/data/app/om.package.name-2/lib/arm, /vendor/lib, /system/lib]] 

तो मैं इस ProGuard सेटअप

से कोई लेना देना someting है लगता है

मैं

compile 'com.android.support:support-v13:23.1.1' 

जो मेरे Gradle फ़ाइल में v4 का सुपरसेट है और

minSdkVersion 21 
targetSdkVersion 23 
है

और

-keep class android.support.v4.app.** { *; } 
-keep class android.support.v4.content.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep interface android.support.v4.content.** { *; } 
-keep class * extends android.content.ContentProvider 

मेरी proguard-rules.pro फ़ाइल में

मैं दोनों एंड्रॉयड 5 और 6 और एक ही बात होता है के साथ परीक्षण किया है। कोई भी सुझाव उपयोगी होगा, अग्रिम धन्यवाद।

+0

इस लिंक पर एक नज़र डालें। यह आपकी मदद कर सकता है। [https://stackoverflow.com/a/44458490/2054348 ](https://stackoverflow.com/a/44458490/2054348) –

उत्तर

1

अधिक आसपास googling मैं Gradle को अद्यतन करने के समाप्त हो गया और

dependencies { 
    classpath 'com.android.tools.build:gradle:1.5.0' 
    classpath 'com.google.gms:google-services:1.5.0' 
} 

सेवाओं गूगल किया है की कुछ घंटों के बाद पहले से संस्करण वेयर

classpath 'com.android.tools.build:gradle:1.3.0' 
    classpath 'com.google.gms:google-services:1.5.0-beta2' 

मैं वहाँ के साथ कुछ करने की जरूरत है लगता है गूगल-सेवा लाइब्रेरी

+3

** com.google.gms: google-services ** के साथ क्या करना है 'android.support.v4.content.FileProvider'? –

+3

मैं यह भी जानना चाहता हूं :)) – DraganescuValentin

-1
java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" 

प्रोग्रामिंग से संबंधित नहीं है यदि यह कार्यरत है पहले उचित विन्यास के साथ जी।

अगर यह किसी भी तरह से किसी की मदद करता है तो इसे इस लिंक से देखें।

File Provider Class not found issue resolved

6

मेरे लिए काम किया है:

defaultConfig { 
... 
multiDexEnabled true 
... 

}

तब:

dependencies { 
... 
compile 'com.android.support:multidex:1.0.2' 
... 

अपने मॉड्यूल build.gradle फ़ाइल में}

और अंत में, सुनिश्चित करें कि आपके आवेदन वर्ग निम्न में से एक है:

ए यदि आप करते हैं नहीं आपके आवेदन वर्ग का विस्तार:

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 
    package="com.example.myapp"> 
 
    <application 
 
      android:name="android.support.multidex.MultiDexApplication" > 
 
     ... 
 
    </application> 
 
</manifest>

बीआपको बस इतना हैं अपने आवेदन वर्ग का विस्तार करने और लेकिन आधार वर्ग बदल सकते हैं:

public class MyApplication extends MultiDexApplication { ... } 

सी आप कर यदि आपका आवेदन वर्ग का विस्तार करने और आधार वर्ग को नहीं बदल सकते:

public class MyApplication extends SomeOtherApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
    } 
} 

के लिए अधिक जानकारी:

https://developer.android.com/studio/build/multidex.html#mdex-gradle

संबंधित मुद्दे