Buduję nową wiązkę aplikacji Android zgodnie z instrukcjami w HTTPS: // Deweloper. android.com/guide/app-bundle/build, ale otrzymuję błąd podczas instalacji od sklepu odtwarzania.

2018-06-04 11:06:09.397 10595-10595/? E/AndroidRuntime: Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: io.org.app.ui.loading.LoadingFragment
    at androidx.navigation.fragment.b$a.a(FragmentNavigator.java:219)
    at androidx.navigation.fragment.b$a.a(FragmentNavigator.java:202)
    at androidx.navigation.k.a(NavInflater.java:140)
    at androidx.navigation.k.a(NavInflater.java:169)
    at androidx.navigation.k.a(NavInflater.java:120)
        ... 36 more
 Caused by: java.lang.ClassNotFoundException: io.org.app.ui.loading.LoadingFragment
    at java.lang.Class.classForName(Native Method)
    at java.lang.Class.forName(Class.java:453)
    at androidx.navigation.fragment.b$a.a(FragmentNavigator.java:215)
        ... 40 more
 Caused by: java.lang.ClassNotFoundException: Didn't find class "io.org.app.ui.loading.LoadingFragment" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/base.apk", zip file "/data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.arm64_v8a.apk", zip file "/data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.en.apk", zip file "/data/app/io.prg.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.iw.apk", zip file "/data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/lib/arm64, /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/base.apk!/lib/arm64-v8a, /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.en.apk!/lib/arm64-v8a, /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.iw.apk!/lib/arm64-v8a, /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.xxhdpi.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        ... 43 more
    Suppressed: java.io.IOException: No original dex files found for dex location /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.arm64_v8a.apk
    at dalvik.system.DexFile.openDexFileNative(Native Method)
    at dalvik.system.DexFile.openDexFile(DexFile.java:354)
    at dalvik.system.DexFile.<init>(DexFile.java:101)
    at dalvik.system.DexFile.<init>(DexFile.java:75)
    at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374)
    at dalvik.system.DexPathList.makeDexElements(DexPathList.java:337)
    at dalvik.system.DexPathList.<init>(DexPathList.java:157)
    at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
    at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
    at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
    at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
    at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:72)
    at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:38)
    at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:715)
    at android.app.LoadedApk.getClassLoader(LoadedApk.java:750)
    at android.app.LoadedApk.getResources(LoadedApk.java:972)
    at android.app.ContextImpl.createAppContext(ContextImpl.java:2329)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5743)
    at android.app.ActivityThread.access$1000(ActivityThread.java:198)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
            ... 6 more
    Suppressed: java.io.IOException: No original dex files found for dex location /data/app/io.org.app-2KUWPMF_QJ31_iG8kGu1rA==/split_config.en.apk
    at dalvik.system.DexFile.openDexFileNative(Native Method)
    at dalvik.system.DexFile.openDexFile(DexFile.java:354)
    at dalvik.system.DexFile.<init>(DexFile.java:101)
    at dalvik.system.DexFile.<init>(DexFile.java:75)
    at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374)

Obejmowałem następujące informacje w mojej budowie:

android {
    buildTypes {
        release {
            multiDexKeepProguard file ('multidex-keep.pro')
        }
    }
}

Multitex-eep.pro:

-keep class io.org.app.ui.main.** { *; }
-keep class io.org.app.ui.loading.** { *; }
1
TheHebrewHammer 4 czerwiec 2018, 18:28

4 odpowiedzi

Najlepsza odpowiedź

Wygląda na to, że klasa io.org.app.ui.loading.LoadingFragment jest załadowana przez refleksję, ale twój plik prokuard nie uniemożliwia, że klasa jest zaciemniona, więc została zmieniona, co wyjaśnia, dlaczego nie można go znaleźć.

Wyobrażam sobie, że powinieneś uzyskać ten sam błąd podczas wdrożenia wersji wydania swojej aplikacji lokalnie.

Spróbuj poprawić plik Proguard, aby zapobiec zmianom tej klasy.

2
Pierre 4 czerwiec 2018, 15:47

Mam ten sam problem. Sprawdź, czy dodajesz:

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

W plikach build.gradle .

2
Ivan Andreyshev 21 wrzesień 2018, 13:56

Poniżej wymieniam możliwe rozwiązania, spróbuj tego kroków po jednym:

  • 1 Usuń aplikację na urządzeniu i czysty projekt

  • 2 Wyłącz Ministerfabled w trybie debugowania

Idź do Build.gradle (Module: App) w bloku debugowania i wyłącz miniolizację:

buildTypes {

    debug {
        minifyEnabled false

     }
}
  • 3 Ustawianie danych do true w pliku gradle aplikacji

W moim przypadku byłem inny układ <include layout="@layout/attached_layout" /> do układu mojej aktywności i rozwiązało to.

    android {
    ...
    ...
    ...

    dataBinding {
        enabled = true
    }

    }
  • 4 Sprawdź względną ścieżkę swoich działań w manifest

Na przykład:

<activity android:name="com.myExactPackageName.MyActivity"
  • 5 Sprawdź nazwy pakietów w niestandardowych widokach

    <com.myExactPackageName.MyCustomView
        android:id="@+id/myview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp" />
    
  • 6 Spróbuj wyłączyć wstępnie zdefiniowanie w kompilacji aplikacji.gradle:

    dexOptions {
     preDexLibraries false
    }
    
  • 7 Wyłącz natychmiastowy bieg

    Przejdź do pliku - & gt; Ustawienia - & GT; Budować, wykonanie, wdrażanie - & gt; Natychmiastowy bieg - & GT; Usuń zaznaczenie pola wyboru, aby uzyskać natychmiastowy bieg

  • 8 Wypróbuj multitexApplication.

A to w Build.gradle (Module: App)

android { 

defaultConfig {
      ...
      multiDexEnabled true
}

dependencies {
     ... 
    implementation 'androidx.multidex:multidex:2.0.1'
}


}

Jeśli używasz klasy aplikacji, musisz przedłużyć go za pomocą MultiDexApplication zamiast Application i dodaj go do znacznika aplikacji w androidmanifest.xml

<application
    android:name="com.myPackageName.MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">

Inaczej Dodaj ścieżkę klasy {x0}} z biblioteki jako nazwy

<application
    android:name="androidx.multidex.MultiDexApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">
0
S.R 8 luty 2019, 21:51

Rozwiązałem to. Żaden z powyższych działa. Spowodować, że jest to błąd kompilatorów.

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
0
Narasimha 6 styczeń 2020, 09:34