标签: android-multidex

Code shrinker R8 crashes my Xamarin.Android app on startup with Unable to get provider com.google.firebase.provider.FirebaseInitProvider

I have a Xamarin.Android app which I recently switched to use R8 code shrinker. Unfortunately, my app is crashing on startup with the following error:

java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn’t find class “com.google.firebase.provider.FirebaseInitProvider” on path: DexPathList[[zip file “/data/app/app-bundle-1/base.apk”],nativeLibraryDirectories=[/data/app/app-bundle-1/lib/arm64, /data/app/app-bundle-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
    at android.app.ActivityThread.installProvider(ActivityThread.java:6105)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5572)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5511)
    at android.app.ActivityThread.-wrap2(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1611)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:165)
    at android.app.ActivityThread.main(ActivityThread.java:6375)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
Run Code Online (Sandbox Code Playgroud)

I found this article, it's more related to MultiDex and native android …

android xamarin.android android-multidex android-d8 android-r8

7
推荐指数
0
解决办法
1192
查看次数

Android R8 更新依赖项后出错

我已经更新了所有项目依赖项,并且收到了不同的 R8 错误。

AGPBI: {"kind":"error","text":"java.lang.NullPointerException","sources":[{}],"tool":"D8"}
org.gradle.workers.WorkerExecutionException: There was a failure while executing work items
    at org.gradle.workers.internal.DefaultWorkerExecutor.workerExecutionException(DefaultWorkerExecutor.java:267)
    at org.gradle.workers.internal.DefaultWorkerExecutor.await(DefaultWorkerExecutor.java:249)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTaskDelegate.doProcess(DexArchiveBuilderTaskDelegate.kt:227)
    at com.android.build.gradle.internal.tasks.DexArchiveBuilderTask.doTaskAction(DexArchiveBuilderTask.kt:255)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:69)
    at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
    at com.android.build.gradle.internal.tasks.NewIncrementalTask.taskAction(NewIncrementalTask.kt:46)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
    at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
    at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
    at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)
    at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
    at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
    at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
    at …
Run Code Online (Sandbox Code Playgroud)

android gradle android-multidex android-d8 android-r8

7
推荐指数
1
解决办法
1万
查看次数

错误:找到任务collectDebugMultiDexComponents的配置问题

我将Android Studio更新为0.9,将工具更新为21.1.0并将gradle更新为0.14,因为我想使用新的multiDexEnabled true功能.目前我正在使用这种方法https://github.com/casidiablo/multidex管理multidex ,一切正常,但multiDexEnabled功能似乎更好.

但是使用gradle 0.14我得到了这个错误:uses-sdk元素不能有"tools:node"属性,我使用@Medo发布解决方案 "解决"了这个属性.

但是,如果我使用这种方法,multiDexEnabled将无法工作,我将收到此错误:

错误:找到任务':participantactclient:collectDebugMultiDexComponents'的配置问题.

为属性'manifest'指定的文件'/ Users/danielecampogiani /开发/ Android/Android Studio/Participact客户端/ participactclient/build/intermediates/manifests/full/debug/AndroidManifest.xml'不存在.

怎么解决这个?

android gradle android-studio android-gradle-plugin android-multidex

6
推荐指数
0
解决办法
924
查看次数

java.util.zip.ZipException:重复条目:android/support/v4/accessibilityservice/AccessibilityServiceInfoCompatJellyBeanMr2.class

我正在将我的项目集成到android studio中的另一个应用程序,但它显示以下错误,我在google搜索问题,但没有用.

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/accessibilityservice/AccessibilityServiceInfoCompatJellyBeanMr2.class
Run Code Online (Sandbox Code Playgroud)

下面是我的应用程序依赖项

configurations { all*.exclude group: 'com.android.support', module: 'support-annotations' }
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':waleteros')
        compile 'com.android.support:recyclerview-v7:+'
       compile 'com.squareup.picasso:picasso:2.4.0'
    compile 'com.jakewharton:butterknife:5.1.2'
    compile files('src/libs/android_sync_service_library.jar')
    compile "com.google.android.gms:play-services:3.1.+"
    compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') {
        transitive = true;
    }
Run Code Online (Sandbox Code Playgroud)

这是我的库依赖项

configurations { all*.exclude group: 'com.android.support', module: 'support-v4' }
configurations { all*.exclude group: 'com.android.support', module: 'support-annotations' }
dependencies {
    compile project(':ingosdk')
    compile 'com.google.code.gson:gson:2.2.4'
    compile files('libs/A2iA.Mobility.jar')
    compile files('libs/acra-4.5.0.jar')
    compile files('libs/bugsense-3.5.jar')
    compile files('libs/deviceprint-lib-1.0.0.jar')
    compile files('libs/FlurryAnalytics-5.3.0.jar')
    compile …
Run Code Online (Sandbox Code Playgroud)

android duplicates android-studio android-multidex

6
推荐指数
1
解决办法
2万
查看次数

使用Dagger注入依赖项时,multidex应用程序中的VerifyError

库的示例应用程序有~67k方法.它具有multidex功能,可以克服65k方法限制.不幸的是,启用multidex后,应用程序在VerifyError尝试注入EndpointAdapter主要活动时崩溃.

当应用程序进行编程并且禁用multidex时,不会发生此问题,因此必须由multidex和Dagger 1问题引起.

我肯定EndpointAdapter是在主dex文件中,但Dagger生成的一些类位于multidex生成的第二个dex文件中.在API <21的设备上会出现此问题(例如,在使用KitKat 4.4.4的genymotion上).

知道它崩溃的原因VerifyError吗?

FATAL EXCEPTION: main
Process: pl.toro.libsample.debug, PID: 11775
java.lang.VerifyError: pl/toro/lib/network/EndpointAdapter
    at java.lang.Class.getDeclaredConstructors(Native Method)
    at java.lang.Class.getDeclaredConstructors(Class.java:574)
    at dagger.internal.loaders.ReflectiveAtInjectBinding.getConstructorsForType(ReflectiveAtInjectBinding.java:232)
    at dagger.internal.loaders.ReflectiveAtInjectBinding.create(ReflectiveAtInjectBinding.java:168)
    at dagger.internal.FailoverLoader.getAtInjectBinding(FailoverLoader.java:74)
    at dagger.internal.Linker.createBinding(Linker.java:224)
    at dagger.internal.Linker.linkRequested(Linker.java:141)
    at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:309)
    at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:279)
    at pl.toro.lib.app.BaseApplication.inject(BaseApplication.java:135)
    ...
Run Code Online (Sandbox Code Playgroud)

这是MultiDex标签的输出

VM with version 1.6.0 does not have multidex support
install
MultiDexExtractor.load(/data/app/pl.toro.libsample.debug-1.apk, false)
Detected that extraction must be performed.
Extraction is needed for file /data/data/pl.toro.libsample.debug/code_cache/secondary-dexes/pl.toro.libsample.debug-1.apk.classes2.zip
Extracting /data/data/pl.toro.libsample.debug/code_cache/secondary-dexes/pl.toro.libsample.debug-1.apk.classes-1477675005.zip
Renaming to /data/data/pl.toro.libsample.debug/code_cache/secondary-dexes/pl.toro.libsample.debug-1.apk.classes2.zip
Extraction success - length …
Run Code Online (Sandbox Code Playgroud)

android dagger android-multidex

6
推荐指数
1
解决办法
1408
查看次数

错误:任务执行失败':app:shrinkReleaseMultiDexComponents'

我正在尝试生成一个APK以便在Google商店中发布,但是我收到以下错误:

Error:Execution failed for task
':app:shrinkReleaseMultiDexComponents'. java.io.IOException: The output jar
[/home/nome/Projects/app-android/app/_app/build/intermediates/multi-dex/release/componentClasses.jar]
must be specified after an input jar, or it will be empty.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

java android android-gradle-plugin android-multidex

6
推荐指数
1
解决办法
2475
查看次数

Android Multidex RuntimeException

我正在尝试解决运行具有超过65k方法的Android应用程序的问题.
我已经关注了有关Multidex支持的Google文档,但是我仍然无法成功运行它.似乎问题仅出现在小于21的SDK上,因为当我指定时minSdkVersion 21,它运行良好,但是一旦我将其设置为minSdkVersion 15,我就会遇到异常.

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) …
Run Code Online (Sandbox Code Playgroud)

java android classnotfoundexception android-multidex

6
推荐指数
2
解决办法
6317
查看次数

处理Proguard,MultiDex,测试和产品口味时,有什么好的策略?

我有一个引用~100K方法的应用程序,最小Sdk = 16

这是2个组装选项:

  • Proguard将这一系列方法缩减为仅44K方法
  • 使用Multi Dex

现在我有一些常见的用例:

  1. 在模拟器和设备上运行和调试
    • 它需要尽可能快
  2. 做测试(集成和UI)
    • 它需要运行(我有一些问题运行Espresso与MultiDex)
  3. 制作Prod APK
    • 它需要尽可能可靠和缩小

你有人对组装策略有一些建议吗?

3/Prod

  • 使用Proguard减少APK大小
  • 使用Proguard进行混淆
  • 尽量不要使用Multidex(可能会失败)

2 /测试

  • 使用minSdkVersion 21(我读到从21开始启用pre-dexing,节省时间)
  • ???

1 /调试

  • 使用minSdkVersion 21(我读到从21开始启用pre-dexing,节省时间)
  • ???

这是Gradle文件:

    productFlavors {
        dev {
            minSdkVersion 21
            multiDexEnabled ???
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
            multiDexEnabled false
        }
    }
    defaultConfig {
        applicationId "xxxx"
        targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION
        minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
        versionCode ANDROID_BUILD_VERSION_CODE
        versionName ANDROID_BUILD_APP_VERSION_NAME
    }

    buildTypes {
        release {
            debuggable false
            ext.enableCrashlytics = true
            renderscriptOptimLevel …
Run Code Online (Sandbox Code Playgroud)

android proguard gradle android-productflavors android-multidex

6
推荐指数
1
解决办法
1066
查看次数

将字节码转换为dex时出错:原因:未使用--min-sdk-version> = 24时使用的默认或静态接口方法

我试图在AS 3.0金丝雀5中构建一个项目时遇到以下错误.任何想法是什么原因造成的?

的build.gradle:

dependencies {
    compile 'com.google.dagger:dagger:2.11'
    compile 'com.google.dagger:dagger-android:2.11'
    compile 'com.google.dagger:dagger-android-support:2.11'
    compile 'android.arch.lifecycle:runtime:1.0.0-alpha3'
    compile 'android.arch.lifecycle:extensions:1.0.0-alpha3'
    compile 'android.arch.persistence.room:runtime:1.0.0-alpha3'
    compile 'biz.laenger.android:vpbs:0.0.4'
    compile 'commons-io:commons-io:2.5'
    compile 'com.andreabaccega:android-form-edittext:1.2.1@aar'
    compile 'com.android.support:appcompat-v7:25.4.0'
    compile 'com.android.support:cardview-v7:25.4.0'
    compile 'com.android.support:design:25.4.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:percent:25.4.0'
    compile 'com.android.support:recyclerview-v7:25.4.0'
    compile 'com.android.support:support-media-compat:25.4.0'
    compile 'com.android.support:support-v4:25.4.0'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.github.piasy:GlideImageLoader:1.2.3'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.google.android.gms:play-services-location:11.0.2'
    compile 'com.google.android.gms:play-services-maps:11.0.2'
    compile 'com.google.code.gson:gson:2.8.1'
    compile 'com.google.firebase:firebase-analytics:11.0.2'
    compile 'com.google.firebase:firebase-crash:11.0.2'
    compile 'com.google.firebase:firebase-messaging:11.0.2'
    compile 'com.google.guava:guava:22.0'
    compile 'com.romandanylyk:pageindicatorview:0.0.6'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'de.hdodenhof:circleimageview:2.1.0'
    compile 'joda-time:joda-time:2.9.6'
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
    annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-alpha3'
    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0-alpha3'
}

android { …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-multidex

6
推荐指数
1
解决办法
1625
查看次数

在build.gradle中编译具有useLibrary'org.apache.http.legacy'的项目时出现'app:transformClassesWithDexForDebug'错误

我正在开发一个我正在使用这个的应用程序.

在编译项目时,此错误包含TransformExceptionRuntimeException弹出:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: Unable to pre-dex 'C:\Users\hp\.gradle\caches\modules-2\files-2.1\org.brunocvcunha.instagram4j\instagram4j\1.4\e86d0ec82fb3eb4225b983e6dc14db048005bc9b\instagram4j-1.4.jar' to 'C:\Users\hp\Downloads\Hamy\app\build\intermediates\transforms\dex\debug\folders\1000\10\instagram4j-1.4_ea292e8a2c317dbd8ab0226ff9507ee97ac0794b'
Run Code Online (Sandbox Code Playgroud)

这是build.gradle (Module: app):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.xxx.abc"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        preDexLibraries = false
        javaMaxHeapSize "4g"
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude …
Run Code Online (Sandbox Code Playgroud)

android compiler-errors android-studio android-multidex processexception

6
推荐指数
1
解决办法
850
查看次数