2015-12-28 8 views
6

पढ़ नहीं सकता मैं एक आवेदन विकसित कर रहा हूं जो 65k सीमा से बचने के लिए मल्टीडेक्स को सक्षम करता है। मैं जार प्रकार (यानी आईपी जार एसडीके) में एक बाहरी पुस्तकालय जोड़ना चाहता हूं। मैंने ग्रैडल सिंक्रनाइज़ किया है और सफल रहा है लेकिन मैं प्रोजेक्ट चलाने में विफल रहा हूं।डीबग मल्टी डेक्स घटक हटना; डीआईआर/allclasses.jar

त्रुटि संदेश की तरह नीचे

Error:Execution failed for task ':app:shrinkDebugMultiDexComponents'. 

java.io.IOException: Can't read [/[dir]/app/build/intermediates/multi-dex/debug/allclasses.jar] (Can't process class [com/ipay/IpayAcitivity.class] (Unknown verification type [14] in stack map frame))

यह मेरा Gradle कोड

apply plugin: 'com.android.application' 
apply plugin: 'android-apt' 
def AAVersion = '3.2' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
    } 
} 

repositories { 
    mavenCentral() 
    mavenLocal() 
} 

apt { 
    arguments { 
     androidManifestFile variant.outputs[0].processResources.manifestFile 
     resourcePackageName '[My Package]' 
    } 
} 

dependencies { 
    apt "org.androidannotations:androidannotations:$AAVersion" 
    compile "org.androidannotations:androidannotations-api:$AAVersion" 

    compile fileTree(dir: 'libs', include: ['*.jar']) 
    //Libs folder contains: org.apache.http.legacy.jar 
    //and ipay88_androidv7.jar 

    compile 'com.loopj.android:android-async-http:1.4.5' 
    compile 'com.github.rey5137:material:1.2.1' 
    compile 'com.jpardogo.materialtabstrip:library:1.0.9' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:recyclerview-v7:23.0.1' 

    compile 'com.google.android.gms:play-services:8.1.0' 
    compile 'com.facebook.android:facebook-android-sdk:4.7.0' 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+' 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    useLibrary 'org.apache.http.legacy' 

    defaultConfig { 
     applicationId "[My Application Id]" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled = true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'src/main/AndroidManifest.xml' 
      java.srcDirs = ['src/main/java', 'build/source/apt/debug'] 
      resources.srcDirs = ['src/main/res'] 
      res.srcDirs = ['src/main/res'] 
      assets.srcDirs = ['src/main/assets'] 
     } 

     beta { 
      resources.srcDirs = ['app/src/beta/res'] 
      res.srcDirs = ['app/src/beta/res'] 
     } 
    } 
    signingConfigs { 
     release { 
      ... 
     } 
    } 
} 

है दिखाया गया है इससे पहले कि मैं बाहरी पुस्तकालय के इस प्रकार जोड़ा (यानी iPay जार एसडीके), एप्लिकेशन सफलतापूर्वक चल रहा था। लेकिन आईपी जार एसडीके (दूसरी जार लाइब्रेरी) को जोड़ने के बाद समस्या उत्पन्न हुई।

अधिक जानकारी के लिए, मैं पहले से ही इस गाइड का पालन कर चुका हूं https://developer.android.com/tools/building/multidex.html लेकिन यह मेरी परियोजना का काम नहीं करता है।

इस त्रुटि को ठीक करने के लिए आपका सुझाव क्या है?

+0

पा सकते हैं जाहिर है वहाँ एक को दूर iPay एसडीके के साथ समस्या, और अधिक विशेष रूप से 'com/ipay/IpayAcitivity.class' के साथ। चूंकि एसडीके सार्वजनिक रूप से उपलब्ध नहीं है, इसलिए मैं वास्तव में इसे स्वयं से नहीं देख सकता। क्या आपने iPay के समर्थन से संपर्क करने की कोशिश की है? –

+0

@AlexLipov हां, मैंने आईपी की सहायता टीम से संपर्क किया है। लेकिन, उन्होंने जवाब नहीं दिया है। जब मैंने एसडीके को किसी अन्य नई परियोजना पर लागू करने की कोशिश की (बिना मल्टीडेक्स के, तीसरे पक्ष के lib के बिना), परियोजना बिना त्रुटि के चल सकती है। – Izzuddiin

+0

यह अपवाद प्रोगुआर्ड से आता है (ऐप: shrinkDebugMultiDexComponents कार्य आंतरिक रूप से प्रोगार्ड को आमंत्रित करता है - मेरा जवाब देखें [यहां] (http://stackoverflow.com/a/27207969/1233652))। इसलिए, यदि आप दूसरी परियोजना में 'minifyEnabled' को सत्य पर सेट करेंगे, तो शायद आपको एक ही त्रुटि होगी। –

उत्तर

0

इस प्रयास करें:

public class MyApplication extends MultiDexApplication 
{ 
    @Override 
    protected void attachBaseContext(Context base) 
    { 
     super.attachBaseContext(base); 
    } 

    @Override 
    public void onCreate() 
    { 
     MultiDex.install(getTargetContext()); 
     super.onCreate(); 
    } 

} 
+0

मैंने उस वर्ग को लागू किया है। लेकिन अभी भी काम नहीं कर रहा है।: '( – Izzuddiin

+0

इस तो कोशिश; एंड्रॉयड { buildTypes { रिहाई { proguardFiles getDefaultProguardFile (' ProGuard-android.txt '),' proguard-rules.pro ' सच minifyEnabled // इस लाइन shrinkResources सच जोड़ें// इस लाइन को जोड़ें } } } – oalpayli

+0

आपके उत्तर के लिए धन्यवाद, लेकिन यह अभी भी काम नहीं कर रहा है, महोदय। उसी त्रुटि संदेश का परिणाम – Izzuddiin

0

ऐसा लगता है अपने पुस्तकालय Multidex साथ संगत नहीं है। तो आप लाइब्रेरी को नवीनतम संस्करण में बेहतर अपडेट करते हैं (यदि कोई अपडेट उपलब्ध है)। या अपने आवेदन में केवल आवश्यक Google Play सेवा API का उपयोग करें और मल्टीडेक्स से छुटकारा पाएं। कुछ तो आप इस

compile 'com.google.android.gms:play-services-ads:8.1.0' (library only for ads) 

की तरह अपने एप्लिकेशन में उपयोग के साथ

compile 'com.google.android.gms:play-services:8.1.0' (the whole library) 
इस

बदलें और इस compile 'com.android.support:multidex:1.0.1'

आप सभी Google Play सेवाओं यहाँ एपीआई https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project

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