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
我已经更新了所有项目依赖项,并且收到了不同的 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 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
我正在将我的项目集成到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) 库的示例应用程序有~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) 我正在尝试生成一个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)
我该如何解决?
我正在尝试解决运行具有超过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) 我有一个引用~100K方法的应用程序,最小Sdk = 16
这是2个组装选项:
现在我有一些常见的用例:
你有人对组装策略有一些建议吗?
3/Prod
2 /测试
1 /调试
这是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
我试图在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) 我正在开发一个我正在使用这个库的应用程序.
在编译项目时,此错误包含TransformException并RuntimeException弹出:
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
android ×10
android-multidex ×10
gradle ×3
android-d8 ×2
android-r8 ×2
java ×2
dagger ×1
duplicates ×1
proguard ×1