2016-05-02 3 views
6

Я хотел бы использовать Proguard в моем проекте, однако при попытке сборки получаю ошибку java.exe.Почему мой проект Xamarin.Android не будет создан с помощью Proguard: «java.exe» вышел с кодом 1

"java.exe" exited with code 1. 

Я попытался увеличить размер кучи и создание proguard.cfg file as outlined here, для каких-либо успехов.

Я могу построить проект, когда выключаю Proguard, поэтому я уверен, что это проблема.

Любая помощь?

EDIT: добавление вывода, которое выглядит релевантным. Я вижу одно исключение и много предупреждений, но я не уверен, как я могу начать их решать.

5>Using "Proguard" task from assembly "C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Build.Tasks.dll". 
5>Task "Proguard" (TaskId:297) 
5> Task Parameter:ProguardJarPath=C:\Users\owner\AppData\Local\Android\android-sdk\tools\proguard\lib\proguard.jar (TaskId:297) 
5> Task Parameter:JavaToolPath=C:\Program Files (x86)\Java\jdk1.7.0_71\\bin (TaskId:297) 
5> Task Parameter:JavaPlatformJarPath=C:\Users\owner\AppData\Local\Android\android-sdk\platforms\android-23\android.jar (TaskId:297) 
5> Task Parameter:MonoPlatformJarPath=C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\mono.android.jar (TaskId:297) 
5> Task Parameter:ClassesOutputDirectory=obj\Release\android\bin\classes (TaskId:297) 
5> Task Parameter:ProguardCommonXamarinConfiguration=obj\Release\proguard\proguard_xamarin.cfg (TaskId:297) 
5> Task Parameter:ProguardGeneratedReferenceConfiguration=obj\Release\proguard\proguard_project_references.cfg (TaskId:297) 
5> Task Parameter:ProguardGeneratedApplicationConfiguration=obj\Release\proguard\proguard_project_primary.cfg (TaskId:297) 
5> Task Parameter:ProguardConfigurationFiles= 
5>   {sdk.dir}tools\proguard\proguard-android.txt; 
5>   {intermediate.common.xamarin}; 
5>   {intermediate.references}; 
5>   {intermediate.application}; 
5>   proguard.cfg; 
5>  (TaskId:297) 
5> Task Parameter: 
5>  LibraryProjectJars= 
5>   obj\Release\__library_projects__\AndroidTranscoder\library_project_imports\AndroidTranscode.jar 
5>   obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar 
5>   obj\Release\__library_projects__\OkHttp\library_project_imports\okhttp-2.3.0-jar-with-dependencies.jar (TaskId:297) 
5> Task Parameter: 
5>  AdditionalJavaLibraryReferences= 
5>   C:\Users\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\classes.jar 
5>   C:\Users\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\libs\internal_impl-21.0.3.jar (TaskId:297) 
5> Task Parameter:ProguardJarInput=obj\Release\proguard\__proguard_input__.jar (TaskId:297) 
5> Task Parameter:ProguardJarOutput=obj\Release\proguard\__proguard_output__.jar (TaskId:297) 
5> Task Parameter:DumpOutput=obj\Release\proguard\dump.txt (TaskId:297) 
5> Task Parameter:PrintSeedsOutput=obj\Release\proguard\seeds.txt (TaskId:297) 
5> Task Parameter:PrintUsageOutput=obj\Release\proguard\usage.txt (TaskId:297) 
5> Task Parameter:PrintMappingOutput=obj\Release\proguard\mapping.txt (TaskId:297) 
5> Proguard (TaskId:297) 
5> JavaPlatformJarPath: C:\Users\owner\AppData\Local\Android\android-sdk\platforms\android-23\android.jar (TaskId:297) 
5> MonoPlatformJarPath: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\mono.android.jar (TaskId:297) 
5> ClassesOutputDirectory: obj\Release\android\bin\classes (TaskId:297) 
5> ProguardGeneratedApplicationConfiguration: obj\Release\proguard\proguard_project_primary.cfg (TaskId:297) 
5> ProguardJarInput: obj\Release\proguard\__proguard_input__.jar (TaskId:297) 
5> ProguardJarOutput: obj\Release\proguard\__proguard_output__.jar (TaskId:297) 
5> ProguardConfigurationFiles: (TaskId:297) 
5>  
5>   {sdk.dir}tools\proguard\proguard-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>  obj\Release\__library_projects__\AndroidTranscoder\library_project_imports\AndroidTranscode.jar (TaskId:297) 
5>  obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar (TaskId:297) 
5>  obj\Release\__library_projects__\OkHttp\library_project_imports\okhttp-2.3.0-jar-with-dependencies.jar (TaskId:297) 
5> UseProguard: False (TaskId:297) 
5> EnableLogging: False (TaskId:297) 
5> DumpOutput: obj\Release\proguard\dump.txt (TaskId:297) 
5> PrintSeedsOutput: obj\Release\proguard\seeds.txt (TaskId:297) 
5> PrintMappingOutput: obj\Release\proguard\mapping.txt (TaskId:297) 
5> Environment Variables passed to tool: (TaskId:297) 
5> java_tool_options= -Dfile.encoding=UTF8 (TaskId:297) 
5> proguard_home=C:\Users\owner\AppData\Local\Android\android-sdk\tools\proguard (TaskId:297) 
5> C:\Program Files (x86)\Java\jdk1.7.0_71\\bin\java.exe -jar C:\Users\owner\AppData\Local\Android\android-sdk\tools\proguard\lib\proguard.jar -include C:\Users\owner\AppData\Local\Android\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 -include proguard.cfg "-injars 'obj\Release\proguard\__proguard_input__.jar';'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\mono.android.jar';'obj\Release\__library_projects__\AndroidTranscoder\library_project_imports\AndroidTranscode.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\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\classes.jar';'C:\Users\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\libs\internal_impl-21.0.3.jar'" "-libraryjars 'C:\Users\owner\AppData\Local\Android\android-sdk\platforms\android-23\android.jar'" -outjars "obj\Release\proguard\__proguard_output__.jar" (TaskId:297) 
5> ProGuard, version 4.7 (TaskId:297) 
5> Reading input... (TaskId:297) 
5> Reading program jar [C:\Workspace\Mobile\Blert\Source\Blert\Blert.Droid\obj\Release\proguard\__proguard_input__.jar] (TaskId:297) 
5> Reading program jar [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v6.0\mono.android.jar] (TaskId:297) 
5> Reading program jar [C:\Workspace\Mobile\Blert\Source\Blert\Blert.Droid\obj\Release\__library_projects__\AndroidTranscoder\library_project_imports\AndroidTranscode.jar] (TaskId:297) 
5> Reading program jar [C:\Workspace\Mobile\Blert\Source\Blert\Blert.Droid\obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar] (TaskId:297) 
5> Reading program jar [C:\Workspace\Mobile\Blert\Source\Blert\Blert.Droid\obj\Release\__library_projects__\OkHttp\library_project_imports\okhttp-2.3.0-jar-with-dependencies.jar] (TaskId:297) 
5> Reading program jar [C:\Users\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\classes.jar] (TaskId:297) 
5> Reading program jar [C:\Users\owner\AppData\Local\Xamarin\Android.Support.v4\21.0.3\embedded\libs\internal_impl-21.0.3.jar] (TaskId:297) 
5> Reading library jar [C:\Users\owner\AppData\Local\Android\android-sdk\platforms\android-23\android.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)\MSBuild\Xamarin\Android\Xamarin.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) 
+0

Посмотрите на вывод консоли для получения дополнительной информации об этой ошибке. Например, это может быть недостающий файл или неправильное имя файла. – Matt

+0

'java.io.IOException: сначала исправьте приведенные выше предупреждения. ... Вы должны исправить их, если хотите, чтобы ошибка исчезла. –

+0

Помогает ли менеджер SDK какие-либо обновления? У вас есть доступные версии jdk или непоследовательные версии? Просто предложения, так как я понятия не имею;) – Matt

ответ

0

Не могли бы вы попробовать увеличить размер кучи Java для 1G в свойствах проекта/опции

+1

Как это помогает «20 неразрешенных ссылок на классы или интерфейсы»? –

5

Ответ можно найти в этой теме.

Xamarin.Android Proguard - Unsupported class version number 52.0

Вам также необходимо скопировать следующие файлы из старого ProGuard в новую папку.

  • ProGuard-android.txt
  • ProGuard-андроида-optimize.txt
  • ProGuard-project.txt
+0

спасибо другу! работал на меня –

1

Попробуйте добавить следующую строку файла Proguard.cfg:

-dontwarn okio.** 

Если это не поможет, добавьте их также:

-dontwarn org.jcodec.codecs.h264.** 
-keep class org.jcodec.codecs.h264.** {*;} 
1

Все, что я должен был сделать обновление ProGuard до последней версии найти здесь: https://sourceforge.net/projects/proguard/files/

В MacOS расположение каталога Proguard при использовании Xamarin Studio/Visual Studio для Mac здесь:

/Users/your_username/Library/Developer/Xamarin/android-sdk-macosx/tools/proguard/bin 
1

это может помочь кому-то. моя проблема заключалась в кодировании proguard.cfg, как описано здесь: https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/proguard/#Troubleshooting

попробуйте открыть файл cfg в блокноте ++. если кодировка «Encode in UTF-8 BOM», вам необходимо сохранить файл с «Encode in UTF-8».