我想在我的项目中使用Proguard,但我在尝试构建时收到java.exe错误。
"java.exe" exited with code 1.
我尝试过增加堆大小并创建一个proguard.cfg文件,但没有成功。
当我关闭Proguard时,我可以构建项目,所以我相信这是问题所在。
有什么帮助吗?
编辑:添加看起来相关的输出。我看到了一个例外和许多警告,但我不确定如何开始解决这些问题。
5>Using "Proguard" task from assembly "C:Program Files (x86)MSBuildXamarinAndroidXamarin.Android.Build.Tasks.dll".
5>Task "Proguard" (TaskId:297)
5> Task Parameter:ProguardJarPath=C:UsersownerAppDataLocalAndroidandroid-sdktoolsproguardlibproguard.jar (TaskId:297)
5> Task Parameter:JavaToolPath=C:Program Files (x86)Javajdk1.7.0_71\bin (TaskId:297)
5> Task Parameter:JavaPlatformJarPath=C:UsersownerAppDataLocalAndroidandroid-sdkplatformsandroid-23android.jar (TaskId:297)
5> Task Parameter:MonoPlatformJarPath=C:Program Files (x86)Reference AssembliesMicrosoftFrameworkMonoAndroidv6.0mono.android.jar (TaskId:297)
5> Task Parameter:ClassesOutputDirectory=objReleaseandroidbinclasses (TaskId:297)
5> Task Parameter:ProguardCommonXamarinConfiguration=objReleaseproguardproguard_xamarin.cfg (TaskId:297)
5> Task Parameter:ProguardGeneratedReferenceConfiguration=objReleaseproguardproguard_project_references.cfg (TaskId:297)
5> Task Parameter:ProguardGeneratedApplicationConfiguration=objReleaseproguardproguard_project_primary.cfg (TaskId:297)
5> Task Parameter:ProguardConfigurationFiles=
5> {sdk.dir}toolsproguardproguard-android.txt;
5> {intermediate.common.xamarin};
5> {intermediate.references};
5> {intermediate.application};
5> proguard.cfg;
5> (TaskId:297)
5> Task Parameter:
5> LibraryProjectJars=
5> objRelease__library_projects__AndroidTranscoderlibrary_project_importsAndroidTranscode.jar
5> objRelease__library_projects__FormsViewGrouplibrary_project_importsformsviewgroup.jar
5> objRelease__library_projects__OkHttplibrary_project_importsokhttp-2.3.0-jar-with-dependencies.jar (TaskId:297)
5> Task Parameter:
5> AdditionalJavaLibraryReferences=
5> C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedclasses.jar
5> C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedlibsinternal_impl-21.0.3.jar (TaskId:297)
5> Task Parameter:ProguardJarInput=objReleaseproguard__proguard_input__.jar (TaskId:297)
5> Task Parameter:ProguardJarOutput=objReleaseproguard__proguard_output__.jar (TaskId:297)
5> Task Parameter:DumpOutput=objReleaseproguarddump.txt (TaskId:297)
5> Task Parameter:PrintSeedsOutput=objReleaseproguardseeds.txt (TaskId:297)
5> Task Parameter:PrintUsageOutput=objReleaseproguardusage.txt (TaskId:297)
5> Task Parameter:PrintMappingOutput=objReleaseproguardmapping.txt (TaskId:297)
5> Proguard (TaskId:297)
5> JavaPlatformJarPath: C:UsersownerAppDataLocalAndroidandroid-sdkplatformsandroid-23android.jar (TaskId:297)
5> MonoPlatformJarPath: C:Program Files (x86)Reference AssembliesMicrosoftFrameworkMonoAndroidv6.0mono.android.jar (TaskId:297)
5> ClassesOutputDirectory: objReleaseandroidbinclasses (TaskId:297)
5> ProguardGeneratedApplicationConfiguration: objReleaseproguardproguard_project_primary.cfg (TaskId:297)
5> ProguardJarInput: objReleaseproguard__proguard_input__.jar (TaskId:297)
5> ProguardJarOutput: objReleaseproguard__proguard_output__.jar (TaskId:297)
5> ProguardConfigurationFiles: (TaskId:297)
5>
5> {sdk.dir}toolsproguardproguard-android.txt;
5> {intermediate.common.xamarin};
5> {intermediate.references};
5> {intermediate.application};
5> proguard.cfg;
5> (TaskId:297)
5> JavaSourceFiles: (TaskId:297)
5> JavaLibraries: (TaskId:297)
5> ExternalJavaLibraries: (TaskId:297)
5> DoNotPackageJavaLibraries: (TaskId:297)
5> LibraryProjectJars: (TaskId:297)
5> objRelease__library_projects__AndroidTranscoderlibrary_project_importsAndroidTranscode.jar (TaskId:297)
5> objRelease__library_projects__FormsViewGrouplibrary_project_importsformsviewgroup.jar (TaskId:297)
5> objRelease__library_projects__OkHttplibrary_project_importsokhttp-2.3.0-jar-with-dependencies.jar (TaskId:297)
5> UseProguard: False (TaskId:297)
5> EnableLogging: False (TaskId:297)
5> DumpOutput: objReleaseproguarddump.txt (TaskId:297)
5> PrintSeedsOutput: objReleaseproguardseeds.txt (TaskId:297)
5> PrintMappingOutput: objReleaseproguardmapping.txt (TaskId:297)
5> Environment Variables passed to tool: (TaskId:297)
5> java_tool_options= -Dfile.encoding=UTF8 (TaskId:297)
5> proguard_home=C:UsersownerAppDataLocalAndroidandroid-sdktoolsproguard (TaskId:297)
5> C:Program Files (x86)Javajdk1.7.0_71\binjava.exe -jar C:UsersownerAppDataLocalAndroidandroid-sdktoolsproguardlibproguard.jar -include C:UsersownerAppDataLocalAndroidandroid-sdktoolsproguardproguard-android.txt -include objReleaseproguardproguard_xamarin.cfg -include objReleaseproguardproguard_project_references.cfg -include objReleaseproguardproguard_project_primary.cfg -include proguard.cfg "-injars 'objReleaseproguard__proguard_input__.jar';'C:Program Files (x86)Reference AssembliesMicrosoftFrameworkMonoAndroidv6.0mono.android.jar';'objRelease__library_projects__AndroidTranscoderlibrary_project_importsAndroidTranscode.jar';'objRelease__library_projects__FormsViewGrouplibrary_project_importsformsviewgroup.jar';'objRelease__library_projects__OkHttplibrary_project_importsokhttp-2.3.0-jar-with-dependencies.jar';'C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedclasses.jar';'C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedlibsinternal_impl-21.0.3.jar'" "-libraryjars 'C:UsersownerAppDataLocalAndroidandroid-sdkplatformsandroid-23android.jar'" -outjars "objReleaseproguard__proguard_output__.jar" (TaskId:297)
5> ProGuard, version 4.7 (TaskId:297)
5> Reading input... (TaskId:297)
5> Reading program jar [C:WorkspaceMobileBlertSourceBlertBlert.DroidobjReleaseproguard__proguard_input__.jar] (TaskId:297)
5> Reading program jar [C:Program Files (x86)Reference AssembliesMicrosoftFrameworkMonoAndroidv6.0mono.android.jar] (TaskId:297)
5> Reading program jar [C:WorkspaceMobileBlertSourceBlertBlert.DroidobjRelease__library_projects__AndroidTranscoderlibrary_project_importsAndroidTranscode.jar] (TaskId:297)
5> Reading program jar [C:WorkspaceMobileBlertSourceBlertBlert.DroidobjRelease__library_projects__FormsViewGrouplibrary_project_importsformsviewgroup.jar] (TaskId:297)
5> Reading program jar [C:WorkspaceMobileBlertSourceBlertBlert.DroidobjRelease__library_projects__OkHttplibrary_project_importsokhttp-2.3.0-jar-with-dependencies.jar] (TaskId:297)
5> Reading program jar [C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedclasses.jar] (TaskId:297)
5> Reading program jar [C:UsersownerAppDataLocalXamarinAndroid.Support.v421.0.3embeddedlibsinternal_impl-21.0.3.jar] (TaskId:297)
5> Reading library jar [C:UsersownerAppDataLocalAndroidandroid-sdkplatformsandroid-23android.jar] (TaskId:297)
5> Initializing... (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPager$OnPageChangeListener' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.view.ViewPager_OnPageChangeListenerImplementor' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPager$PageTransformer' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.DrawerLayout$DrawerListener' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.widget.DrawerLayout_DrawerListenerImplementor' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.DrawerLayoutImpl' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener' (TaskId:297)
5> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.widget.SwipeRefreshLayout_OnRefreshListenerImplementor' (TaskId:297)
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.H264Utils
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.io.model.SeqParameterSet
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.io.model.SeqParameterSet
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.H264Utils
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.io.model.SeqParameterSet
5>PROGUARD : warning : net.ypresto.androidtranscoder.engine.MediaFormatValidator: can't find referenced class org.jcodec.codecs.h264.io.model.SeqParameterSet
5>PROGUARD : warning : okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Files
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.OpenOption
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.OpenOption
5>PROGUARD : warning : okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.OpenOption
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.Path
5>PROGUARD : warning : okio.Okio: can't find referenced class java.nio.file.OpenOption
5>PROGUARD : warning : okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
5> Note: android.support.v4.text.ICUCompatIcs: can't find dynamically referenced class libcore.icu.ICU (TaskId:297)
5> Note: com.squareup.okhttp.internal.Platform: can't find dynamically referenced class com.android.org.conscrypt.OpenSSLSocketImpl (TaskId:297)
5> Note: com.squareup.okhttp.internal.Platform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl (TaskId:297)
5> Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'icon' dynamically (TaskId:297)
5> Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { int icon; }' (TaskId:297)
5> Maybe this is program field 'blert.droid.R$drawable { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.R$attr { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.R$id { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.app.LauncherActivity$ListItem { android.graphics.drawable.Drawable icon; }' (TaskId:297)
5> Maybe this is library field 'android.app.Notification { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.app.Notification$Action { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.appwidget.AppWidgetProviderInfo { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.content.pm.PackageItemInfo { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.content.pm.ResolveInfo { int icon; }' (TaskId:297)
5> Maybe this is library field 'android.inputmethodservice.Keyboard$Key { android.graphics.drawable.Drawable icon; }' (TaskId:297)
5> Maybe this is library field 'android.speech.tts.TextToSpeech$EngineInfo { int icon; }' (TaskId:297)
5> Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'title' dynamically (TaskId:297)
5> Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { java.lang.CharSequence title; }' (TaskId:297)
5> Maybe this is program field 'blert.droid.R$id { int title; }' (TaskId:297)
5> Maybe this is library field 'android.R$attr { int title; }' (TaskId:297)
5> Maybe this is library field 'android.R$id { int title; }' (TaskId:297)
5> Maybe this is library field 'android.app.Notification$Action { java.lang.CharSequence title; }' (TaskId:297)
5> Maybe this is library field 'android.preference.PreferenceActivity$Header { java.lang.CharSequence title; }' (TaskId:297)
5> Note: android.support.v4.app.NotificationCompatJellybean accesses a declared field 'actionIntent' dynamically (TaskId:297)
5> Maybe this is program field 'android.support.v4.app.NotificationCompat$Action { android.app.PendingIntent actionIntent; }' (TaskId:297)
5> Maybe this is library field 'android.app.Notification$Action { android.app.PendingIntent actionIntent; }' (TaskId:297)
5> Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService' (TaskId:297)
5> Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService' (TaskId:297)
5> Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void setOnAdapterChangeListener(android.support.v4.view.ViewPager$OnAdapterChangeListener); }', but not the descriptor class 'android.support.v4.view.ViewPager$OnAdapterChangeListener' (TaskId:297)
5> Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void calculatePageOffsets(android.support.v4.view.ViewPager$ItemInfo,int,android.support.v4.view.ViewPager$ItemInfo); }', but not the descriptor class 'android.support.v4.view.ViewPager$ItemInfo' (TaskId:297)
5> Note: the configuration keeps the entry point 'android.support.v4.view.ViewPager { void calculatePageOffsets(android.support.v4.view.ViewPager$ItemInfo,int,android.support.v4.view.ViewPager$ItemInfo); }', but not the descriptor class 'android.support.v4.view.ViewPager$ItemInfo' (TaskId:297)
5> You should check if you need to specify additional program jars. (TaskId:297)
5>PROGUARD : warning : there were 20 unresolved references to classes or interfaces.
5> You may need to specify additional library jars (using '-libraryjars'). (TaskId:297)
5> Note: there were 2 references to unknown classes. (TaskId:297)
5> You should check your configuration for typos. (TaskId:297)
5> Note: there were 3 unkept descriptor classes in kept class members. (TaskId:297)
5> You should consider explicitly keeping the mentioned classes (TaskId:297)
5> (using '-keep'). (TaskId:297)
5> Note: there were 3 unresolved dynamic references to classes or interfaces. (TaskId:297)
5> Note: there were 3 accesses to class members by means of introspection. (TaskId:297)
5> You should consider explicitly keeping the mentioned class members (TaskId:297)
5> (using '-keep' or '-keepclassmembers'). (TaskId:297)
5> java.io.IOException: Please correct the above warnings first. (TaskId:297)
5> at proguard.Initializer.execute(Initializer.java:321) (TaskId:297)
5> at proguard.ProGuard.initialize(ProGuard.java:211) (TaskId:297)
5> at proguard.ProGuard.execute(ProGuard.java:86) (TaskId:297)
5> at proguard.ProGuard.main(ProGuard.java:492) (TaskId:297)
5> Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 (TaskId:297)
5>C:Program Files (x86)MSBuildXamarinAndroidXamarin.Android.Common.targets(1815,3): error MSB6006: "java.exe" exited with code 1.
5>Done executing task "Proguard" -- FAILED. (TaskId:297)
5>Done building target "_CompileToDalvik" in project "Blert.Droid.csproj" -- FAILED.: (TargetId:241)
答案可以在这个线程中找到。
Xamarin.Android Proguard-不支持的类版本号52.0
您还需要将以下文件从旧proguard复制到新文件夹中。
- proguard-android.txt
- proguard-android-optimize.txt
- proguard-project.txt
尝试在Proguard.cfg文件中添加以下行:
-dontwarn okio.**
如果这没有帮助,还可以添加以下内容:
-dontwarn org.jcodec.codecs.h264.**
-keep class org.jcodec.codecs.h264.** {*;}
我所要做的就是将proguard升级到这里的最新版本:https://sourceforge.net/projects/proguard/files/
在macOS上,如果使用Xamarin Studio/View Studio for Mac,Proguard目录的位置在这里:
/Users/your_username/Library/Developer/Xamarin/android-sdk-macosx/tools/proguard/bin
这可能会对某人有所帮助。我的问题是proguard.cfg编码,如下所述:https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/proguard/#故障排除
尝试在notepad++中打开cfg文件。如果编码为"以UTF-8 BOM编码",则需要使用"以UTF-8编码"保存文件
您能在项目属性/选项中将Java堆大小增加到1G
吗