【发布时间】:2017-09-09 16:11:52
【问题描述】:
在Xamarin.Forms 项目中,我添加了ModernHTTPClient 库,现在ProGuard 步骤因错误而中断:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2025,3): error MSB6006: "java.exe" exited with code 1.
(以前,我在使用 ProGuard 时遇到了一些问题,但通过将 ProGuard 升级到最新版本,我能够在针对 Android 7.1 的情况下使其正常工作。)
日志文件中的一些详细信息如下。
2> Proguard (TaskId:363)
2> AndroidSdkDirectory: C:\android-sdk\ (TaskId:363)
2> JavaPlatformJarPath: C:\android-sdk\platforms\android-25\android.jar (TaskId:363)
2> ClassesOutputDirectory: obj\Release\android\bin\classes (TaskId:363)
2> AcwMapFile: obj\Release\acw-map.txt (TaskId:363)
2> ProguardGeneratedApplicationConfiguration: obj\Release\proguard\proguard_project_primary.cfg (TaskId:363)
2> ProguardJarInput: obj\Release\proguard\__proguard_input__.jar (TaskId:363)
2> ProguardJarOutput: obj\Release\proguard\__proguard_output__.jar (TaskId:363)
2> ProguardGeneratedReferenceConfiguration: (TaskId:363)
2> obj\Release\proguard\proguard_project_references.cfg (TaskId:363)
2> ProguardGeneratedApplicationConfiguration: (TaskId:363)
2> obj\Release\proguard\proguard_project_primary.cfg (TaskId:363)
2> ProguardCommonXamarinConfiguration: (TaskId:363)
2> obj\Release\proguard\proguard_xamarin.cfg (TaskId:363)
2> ProguardConfigurationFiles: (TaskId:363)
2>
2> {sdk.dir}tools\proguard\proguard-android.txt;
2> {intermediate.common.xamarin};
2> {intermediate.references};
2> {intermediate.application};
2> ;
2> (TaskId:363)
2> ExternalJavaLibraries: (TaskId:363)
2> DoNotPackageJavaLibraries: (TaskId:363)
2> UseProguard: False (TaskId:363)
2> EnableLogging: False (TaskId:363)
2> DumpOutput: obj\Release\proguard\dump.txt (TaskId:363)
2> PrintSeedsOutput: obj\Release\proguard\seeds.txt (TaskId:363)
2> PrintMappingOutput: obj\Release\proguard\mapping.txt (TaskId:363)
2> Environment Variables passed to tool: (TaskId:363)
2> JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 (TaskId:363)
2> C:\Program Files\Java\jdk1.8.0_121\\bin\java.exe -jar C:\android-sdk\tools\proguard\lib\proguard.jar -include C:\android-sdk\\tools\proguard\proguard-android.txt -include obj\Release\proguard\proguard_xamarin.cfg -include obj\Release\proguard\proguard_project_references.cfg -include obj\Release\proguard\proguard_project_primary.cfg "-injars 'obj\Release\proguard\__proguard_input__.jar';'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v7.1\mono.android.jar';'obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar';'obj\Release\__library_projects__\OkHttp\library_project_imports\okhttp-2.3.0-jar-with-dependencies.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Animated.Vector.Drawable\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v4\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v4\23.3.0.0\embedded\libs\internal_impl-23.3.0.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.CardView\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.MediaRouter\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.MediaRouter\23.3.0.0\embedded\libs\internal_impl-23.3.0.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.RecyclerView\23.3.0.0\embedded\classes.jar';'C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Vector.Drawable\23.3.0.0\embedded\classes.jar'" "-libraryjars 'C:\android-sdk\platforms\android-25\android.jar'" -outjars "obj\Release\proguard\__proguard_output__.jar" -optimizations !code/allocation/variable (TaskId:363)
2> ProGuard, version 5.3.3 (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.Snackbar$Callback$DismissEvent' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.Snackbar$Callback' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.Snackbar$Duration' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.CoordinatorLayout$Behavior' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.CoordinatorLayout$DefaultBehavior' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.internal.NavigationMenuPresenter$NavigationMenuHeaderItem' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.internal.NavigationMenuPresenter$NavigationMenuItem' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.internal.NavigationMenuPresenter$NavigationMenuTextItem' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.internal.NavigationMenuPresenter$ViewHolder' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.AppBarLayout$LayoutParams$ScrollFlags' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.AppBarLayout$OnOffsetChangedListener' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.design.widget.AppBarLayout_OnOffsetChangedListenerImplementor' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.BottomSheetBehavior$State' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.FloatingActionButton$OnVisibilityChangedListener' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.HeaderBehavior' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.HeaderScrollingViewBehavior' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.NavigationView$OnNavigationItemSelectedListener' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.design.widget.NavigationView_OnNavigationItemSelectedListenerImplementor' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.SwipeDismissBehavior$OnDismissListener' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.design.widget.SwipeDismissBehavior_OnDismissListenerImplementor' (TaskId:363)
...
2> Note: the configuration doesn't specify which class members to keep for class 'com.squareup.okhttp.Authenticator' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'com.squareup.okhttp.Callback' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'com.squareup.okhttp.Interceptor$Chain' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'com.squareup.okhttp.Interceptor' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'okio.ForwardingSink' (TaskId:363)
2> Note: the configuration doesn't specify which class members to keep for class 'okio.ForwardingSource' (TaskId:363)
...
2> Reading program jar [C:\Users\user\Desktop\MyProjectXXX\MyProjectXXX.Mobile\MyProjectXXX.Mobile.Android\obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\Desktop\MyProjectXXX\MyProjectXXX.Mobile\MyProjectXXX.Mobile.Android\obj\Release\__library_projects__\OkHttp\library_project_imports\okhttp-2.3.0-jar-with-dependencies.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Animated.Vector.Drawable\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v4\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v4\23.3.0.0\embedded\libs\internal_impl-23.3.0.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.CardView\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.MediaRouter\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.MediaRouter\23.3.0.0\embedded\libs\internal_impl-23.3.0.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.v7.RecyclerView\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading program jar [C:\Users\user\AppData\Local\Xamarin\Xamarin.Android.Support.Vector.Drawable\23.3.0.0\embedded\classes.jar] (TaskId:363)
2> Reading library jar [C:\android-sdk\platforms\android-25\android.jar] (TaskId:363)
2> Initializing... (TaskId:363)
2> Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService' (TaskId:363)
2> Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService' (TaskId:363)
2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:363)
2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:363)
2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:363)
2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:363)
2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:363)
2> Note: android.support.v4.app.NotificationCompatJellybean calls 'Field.getType' (TaskId:363)
2>PROGUARD : warning : okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.OpenOption
2>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
...
2> Note: there were 7 references to unknown classes. (TaskId:363)
2> You should check your configuration for typos. (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass) (TaskId:363)
2> Note: there were 1 classes trying to access generic signatures using reflection. (TaskId:363)
2> You should consider keeping the signature attributes (TaskId:363)
2> (using '-keepattributes Signature'). (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes) (TaskId:363)
2> Note: there were 15 unkept descriptor classes in kept class members. (TaskId:363)
2> You should consider explicitly keeping the mentioned classes (TaskId:363)
2> (using '-keep'). (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass) (TaskId:363)
2> Note: there were 9 unresolved dynamic references to classes or interfaces. (TaskId:363)
2> You should check if you need to specify additional program jars. (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass) (TaskId:363)
2> Note: there were 3 accesses to class members by means of introspection. (TaskId:363)
2> You should consider explicitly keeping the mentioned class members (TaskId:363)
2> (using '-keep' or '-keepclassmembers'). (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember) (TaskId:363)
2>PROGUARD : warning : there were 14 unresolved references to classes or interfaces.
2> You may need to add missing library jars or update their versions. (TaskId:363)
2> If your code works fine without the missing classes, you can suppress (TaskId:363)
2> the warnings with '-dontwarn' options. (TaskId:363)
2> (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) (TaskId:363)
2> java.io.IOException: Please correct the above warnings first. (TaskId:363)
2> at proguard.Initializer.execute(Initializer.java:473) (TaskId:363)
2> at proguard.ProGuard.initialize(ProGuard.java:233) (TaskId:363)
2> at proguard.ProGuard.execute(ProGuard.java:98) (TaskId:363)
2> at proguard.ProGuard.main(ProGuard.java:538) (TaskId:363)
2> Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 (TaskId:363)
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2025,3): error MSB6006: "java.exe" exited with code 1.
2>Done executing task "Proguard" -- FAILED. (TaskId:363)
2>Done building target "_CompileToDalvikWithDx" in project "MyProjectXXX.Mobile.Android.csproj" -- FAILED.: (TargetId:310)
2>
我尝试将 Java 堆大小增加到 1G,但没有效果。
如果您对如何解决此问题有任何想法,请告诉我。谢谢。
【问题讨论】:
-
不确定该错误,但我建议不要再使用现代 HTTP 客户端。我曾经专门使用它,但现在 Xamarin 允许您在没有库的情况下获得使用本机消息处理程序的相同功能。我也停止使用它,因为当网络连接丢失时,Android 上来自库的无法捕获的异常等等。这些问题已在 GitHub 页面上提出,但实际上都没有得到修复。
-
我想这说明了一切;
warning : there were 14 unresolved references to classes or interface. You may need to add missing library jars or update their versions. If your code works fine without the missing classes, you can suppress the warnings with '-dontwarn' options. -
杰拉德在做某事。但是实际错误是
2> java.io.IOException: Please correct the above warnings first.,这意味着您需要修复上面的警告或禁止它们。
标签: xamarin xamarin.forms proguard visual-studio-2017 android-proguard