5

मैं एंड्रॉइड ऐप चलाने में एक समस्या को हल करने की कोशिश कर रहा हूं जिसमें 65k से अधिक विधियां हैं।
मैंने मल्टीडेक्स समर्थन के बारे में Google दस्तावेज़ों का पालन किया है, हालांकि मैं अभी भी इसे सफलतापूर्वक चलाने में असमर्थ हूं। ऐसा लगता है कि समस्या केवल 21 से कम एसडीके पर दिखाई देती है, क्योंकि जब मैं minSdkVersion 21 निर्दिष्ट करता हूं, तो यह अच्छी तरह से काम करता है, हालांकि एक बार जब मैं इसे minSdkVersion 15 पर सेट करता हूं, तो मुझे निम्नलिखित अपवाद मिल रहा है। AndroidManifest मेंएंड्रॉइड मल्टीडेक्स रनटाइम अपवाद

  • बनाया वर्ग कहा जाता MyApplication कि आवेदन प्रदान करता है और निर्दिष्ट यह:

    FATAL EXCEPTION: main 
        java.lang.RuntimeException: Unable to instantiate application custom.package.name.MyApplication: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]] 
         at android.app.LoadedApk.makeApplication(LoadedApk.java:578) 
         at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680) 
         at android.app.ActivityThread.-wrap1(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:148) 
         at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    
        Caused by: java.lang.ClassNotFoundException: Didn't find class "custom.package.name.MyApplication" on path: DexPathList[[zip file "/data/app/custom.package.name-2/base.apk"],nativeLibraryDirectories=[/data/app/custom.package.name-2/lib/arm, /vendor/lib, /system/lib]] 
         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
         at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
         at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
         at android.app.Instrumentation.newApplication(Instrumentation.java:981) 
         at android.app.LoadedApk.makeApplication(LoadedApk.java:573) 
         at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)  
         at android.app.ActivityThread.-wrap1(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
        Suppressed: java.io.IOException: Failed to open dex files from /data/app/custom.package.name-2/base.apk 
         at dalvik.system.DexFile.openDexFileNative(Native Method) 
         at dalvik.system.DexFile.openDexFile(DexFile.java:295) 
         at dalvik.system.DexFile.<init>(DexFile.java:80) 
         at dalvik.system.DexFile.<init>(DexFile.java:59) 
         at dalvik.system.DexPathList.loadDexFile(DexPathList.java:279) 
         at dalvik.system.DexPathList.makePathElements(DexPathList.java:248) 
         at dalvik.system.DexPathList.<init>(DexPathList.java:120) 
         at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48) 
         at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:65) 
         at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:58) 
         at android.app.LoadedApk.getClassLoader(LoadedApk.java:376) 
         at android.app.LoadedApk.makeApplication(LoadedApk.java:568) 
          ... 9 more 
        Suppressed: java.lang.ClassNotFoundException: custom.package.name.MyApplication 
         at java.lang.Class.classForName(Native Method) 
         at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
         at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
         at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
          ... 12 more 
        Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 
    

    से पहले Logcat घातक अपवाद

    W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/custom.package.name-2/base.apk --oat-file=/data/dalvik-cache/arm/[email protected]@[email protected]@classes.dex) because non-0 exit status 
    W/art: Failure to verify dex file '/data/app/ccustom.package.name-2-2/base.apk': Invalid method name: '[email protected]7#0' 
    W/System: ClassLoader referenced unknown path: /data/app/custom.package.name-2-2/lib/arm 
    

    यहाँ मैं अब तक क्या किया है है .xml फ़ाइल

  • build.gradle में फ़ाइल

    compile 'com.android.support:multidex:1.0.1'

  • सक्षम multidex build.gradle निर्भरता जोड़ा

    multiDexEnabled true

  • MyApplication कक्षा में multidex सक्षम @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }

किसी भी मदद के लिए अग्रिम धन्यवाद!

+1

आप MultiDexApplication फैली उपयोग करने की कोशिश की है, के बजाय आवेदन फैली ? –

+0

हां, मैंने कोशिश की है, लेकिन अभी भी एक ही समस्या – jpact

उत्तर

-2

फैली 3 दिनों के बाद लायक है इसकी निर्भरता जो यह कारण में से एक को हटाने के द्वारा हल किया।

संपादित: @Asprelis के रूप में बताया, lib जो समस्याओं के कारण किया गया था net.java.truelicense

+0

क्या आप हमें बता सकते हैं कि किस निर्भरता ने इसका कारण बनाया? – kientux

+0

मुझे सटीक नाम याद नहीं है, लेकिन यह स्ट्रिंग अक्षर – jpact

2

इस प्रयास करें, यह मेरे लिए काम कर रहा है, काफी एक मौजूदा परियोजना से नकल ....

build.gradle

android { 
compileSdkVersion 23 
buildToolsVersion "22.0.1" 
defaultConfig { 
    applicationId "my.package.name" 
    minSdkVersion 16 
    targetSdkVersion 23 
    multiDexEnabled = true 
    versionCode 3 
    versionName "0.1.2" 
    renderscriptTargetApi 14 
    renderscriptSupportModeEnabled true 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:multidex:1.0.1' 
} 

आवेदन कक्षा

public class MyApp extends MultiDexApplication { 

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

मैनिफेस्ट

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

... 

    <application 
    android:name=".MyApp" 
    android:allowBackup="true" 
    android:hardwareAccelerated="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

... 

यह ध्यान देने योग्य है कि मैं एक ऐसी ही मुद्दा था जब तक मैंने पढ़ा अनुमति जोड़ा गया है और MultiDexApplication

+0

प्रतिक्रिया के लिए धन्यवाद! ठीक है, मैंने पहले से ही मल्टीडेक्स एप्प्लिकेशंस का उपयोग करने की कोशिश की है, लेकिन एक ही समस्या है। नोट: मैं read_external_storage का उपयोग कर रहा हूं:/ – jpact

+0

@ क्रेक क्या आप WRITE_EXTERNAL अनुमति का भी उपयोग कर रहे हैं? यह हो सकता है कि न्यूनतम संस्करण संख्या –

+0

से मेल नहीं खाती है हां मैं करता हूं। लेकिन अपवाद से ऐसा लगता है कि इसमें बाहरी भंडारण के साथ कुछ भी नहीं है, क्योंकि एपीके/डेटा/ऐप/में संग्रहीत है ... – jpact

1

समस्या है इस अस्पष्टकर्ता की वजह से है:

<dependency> 
     <groupId>net.java.truelicense</groupId> 
     <artifactId>truelicense-obfuscate</artifactId> 
     <version>${truelicense.obfuscate.version}</version> 
    </dependency> 
+0

के obfuscation के लिए कुछ तृतीय पक्ष lib था, वास्तव में, यह lib है। धन्यवाद – jpact

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