在 Android 支持库到 27.0.2 之后,Xamarin 应用程序仅在发布模式下不起作用

Posted

技术标签:

【中文标题】在 Android 支持库到 27.0.2 之后,Xamarin 应用程序仅在发布模式下不起作用【英文标题】:After Android support libraries to 27.0.2 Xamarin app doesn't work in release mode only 【发布时间】:2018-04-12 16:06:10 【问题描述】:

将我的 android 支持库更新到 27.0.2 并将目标更改为 API 8.1 后,

只有在发布模式下,当应用运行时,它会启动并立即崩溃......

我在设备日志中看到

java.lang.IllegalStateException:创建对象图时出错: java.lang.String 没有可注入的成员。你想添加一个可注入的构造函数吗? java.lang.String com.vungle.publisher.protocol.ProtocolHttpRequest$a.d 需要 在 dagger.internal.ThrowingErrorHandler.handleErrors(ThrowingErrorHandler.java:34) 在 dagger.internal.Linker.linkRequested(Linker.java:182) 在 dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:309) 在 dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:280) 在 com.vungle.publisher.VunglePubBase.a(vungle:171) 在 com.vungle.publisher.VunglePub.a(vungle:27) 在 com.vungle.publisher.VunglePubBase.init(vungle:88) 在 com.vungle.publisher.VunglePub.init(vungle:43) 在 com.movi​​le.android.maisapps.MaisAppsApplication.onCreate(MaisAppsApplication.java:127) 在 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:5007) 在 android.app.ActivityThread.access$1600(ActivityThread.java:172) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5832) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

当我重建时:

The "LinkAssemblies" task failed unexpectedly.
Mono.Linker.MarkException: Error processing method: 
'Android.Widget.AutoSizeTextType 
Android.Support.V4.Widget.IAutoSizeableTextView::get_AutoSizeTextType()' in 
assembly: 'Xamarin.Android.Support.Compat.dll' ---> 
Mono.Cecil.ResolutionException: Failed to resolve Android.Widget.AutoSizeTextType
at Mono.Linker.Steps.MarkStep.HandleUnresolvedType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
at Mono.Linker.Steps.MarkStep.ProcessQueue()
--- End of inner exception stack trace ---
at Mono.Linker.Steps.MarkStep.ProcessQueue()
at Mono.Linker.Steps.MarkStep.ProcessEntireQueue()
at Mono.Linker.Steps.MarkStep.Process()
 at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
at Mono.Linker.Pipeline.Process(LinkContext context)
at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
at Xamarin.Android.Tasks.LinkAssemblies.Execute()
 at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()    neoFly_Montana.Android          

有人可以帮忙吗? 它仅处于发布模式...

【问题讨论】:

似乎是 Dagger 的问题。用过匕首? 我不知道它是什么...我正在使用 xamarin.forms 在发布模式下,尝试在您的 Android 选项中将Linking 设置为无。 【参考方案1】:

我遇到了类似的问题,发现我的项目引用的 Mono.Android.dll 版本不正确。将此版本更改为与项目的目标框架版本匹配的正确版本为我解决了重建问题。 我的项目的正确版本位于我的机器上:- C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\Mono.Android.dll

【讨论】:

以上是关于在 Android 支持库到 27.0.2 之后,Xamarin 应用程序仅在发布模式下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio发布库到JitPack

Android Studio发布库到JitPack

Android 上传库到Binary的操作

Android 发布开源库到 JitPack (详细步骤)

Android 发布开源库到 JitPack (详细步骤)

如何移植boost库到Android