شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز
🎯 ثبت نام

ساخت برنامه های Xamarin Android و Visual Studio بدون خطا

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

ساخت برنامه های Xamarin Android و Visual Studio بدون خطا

من قبلاً با برنامه های پوشیدنی (Wearable)  در Xamarin.Android کار کرده ام. کار کردن با آنها فوق العاده است و می توانستم برنامه ها را هم بر روی یک شبیه ساز و هم بر روی خود دستگاه های پوشیدنی (wearable) اجرا کنم. اما مشکلات از آنجا شروع شد که Xamarin.Android.Support را بروز رسانی کردم و Xamarin.Android.Support.V4 را از طریق NuGet نصب کردم. البته موفق شدم کتابخانه را به صورت کامل نصب کنم، اما هنگام ساخت (built) برنامه در Visual Studio با خطای BUILD FAILED مواجه شدم! از آنجا که هیچ خطایی نشان داده نشد کمی نگران شدم که چطور می توانم این مشکل را بدون اینکه خطایی مشاهده کرده باشم حل کنم؟ اول فکر کردم ممکن است مشکل از firewall باشد یا شاید انتی ویروس نصب شده روی سیستم من این مشکل را بوجود آورده است. اما اشتباه فکر می کردم. تا اینکه با این موضوع مواجه شدم: Setting MSBuild Verbosity. با پیکر بندی و تنظیم MSBuild Verbosity ، می توانید Verbosity سطوح log گیر (logger) را بدست آورید. گزینه های مختلفی برای تنظیم کردن وجود دارد:

·         Quiet: فقط نتیجه build، خلاصه ای از فرآیند ساخت (Build) ، نشان می دهد.

·         Normal: خطاها، هشدارها، پیغام های با درجه اهمیت بالا، یکسری رخدادهای مربوط وضعیت (status events) و خلاصه ای از فرآیند ساخت. این گزینه تمام اهداف و مراحل اصلی اش را نشان می دهد.

·         Minimal: نمایش خطاها، هشدارها، پیغام های با درجه اهمیت بالا و خلاصه ای از فرآیند ساخت.

·         Details: خطاها، هشدارها، پیغام های با درجه اهمیت بالا یا معمولی، همه رخدادهای مربوط وضعیت (status events) و خلاصه ای از فرآیند ساخت.

·         Diagnostic: شامل تمام اطلاعات مورد نیاز MSBuild و ساخت پارامترها، پیش نیاز ها و غیره. پارامترهای ورودی target و task و همچنین مقادیر پارامترهای ورودی و خروجی، جزئیات فرآیند اجرای task و زمان اجرای هر task.

 

برای تنظیم MSBuild Verbosity در Visual Studio 2013 به مسیر  Tools > Options > Project و Solutions > Build بروید و بر روی Build and Run کلیک کنید.

آموزش Xamarin

سپس برای اینکه مطمئن شوید logger همه چیز را ثبت کرده است، باید verbosity را بر روی Diagnostic تنظیم کنید. سپس Visual Studio را از اول آغاز کنید و پروژه خود را باز کنید و مجدداً بر روی build کلیک کنید. حالا پس از ساخت برنامه یکسری log به شما نشان داده خواهد شد. در ادامه بخشی از log که توجه من را به خودش جلب کرده بود آورده شده است:

 “1 > COMPILETODALVIK: UNEXPECTED TOP - LEVEL error: 1 > java.lang.OutOfMemoryError: Java heap space(TaskId: 131)  

1 > at java.util.HashMap.resize(HashMap.java: 580)(TaskId: 131)  

1 > at java.util.HashMap.addEntry(HashMap.java: 879)(TaskId: 131)  

1 > at java.util.HashMap.put(HashMap.java: 505)(TaskId: 131)  

1 > at java.util.HashSet.add(HashSet.java: 217)(TaskId: 131)  

1 > at com.android.dx.ssa.Dominators.compress(Dominators.java: 132)(TaskId: 131)  

1 > at com.android.dx.ssa.Dominators.eval(Dominators.java: 160)(TaskId: 131)  

1 > at com.android.dx.ssa.Dominators.run(Dominators.java: 207)(TaskId: 131)  

1 > at com.android.dx.ssa.Dominators.make(Dominators.java: 90)(TaskId: 131)  

1 > at com.android.dx.ssa.DomFront.run(DomFront.java: 86)(TaskId: 131)  

1 > at com.android.dx.ssa.SsaConverter.placePhiFunctions(SsaConverter.java: 297)(TaskId: 131)  

1 > at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java: 51)(TaskId: 131)  

1 > at com.android.dx.ssa.Optimizer.optimize(Optimizer.java: 98)(TaskId: 131)  

1 > at com.android.dx.ssa.Optimizer.optimize(Optimizer.java: 72)(TaskId: 131)  

1 > at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java: 297)(TaskId: 131)  

1 > at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java: 137)(TaskId: 131)  

1 > at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java: 93)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.processClass(Main.java: 729)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.processFileBytes(Main.java: 673)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.access$300(Main.java: 82)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java: 602)(TaskId: 131)  

1 > at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java: 284)(TaskId: 131)  

1 > at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java: 166)(TaskId: 131)  

1 > at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java: 144)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.processOne(Main.java: 632)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.processAllFiles(Main.java: 510)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.runMonoDex(Main.java: 279)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.run(Main.java: 245)(TaskId: 131)  

1 > at com.android.dx.command.dexer.Main.main(Main.java: 214)(TaskId: 131)  

1 > at com.android.dx.command.Main.main(Main.java: 106)(TaskId: 131)  

1 > The command exited with code 3.(TaskId: 131)  

1 > Done executing task "CompileToDalvik"--FAILED.(TaskId: 131)” 

 

با مشاهده log براحتی می توانید مشکلات برنامه خود را تشخیص دهید. سپس در google به دنبال جواب سوال خودم گشتم:

برای حل این مشکل کد زیر را به فایل  .CSPROJ اضافه کردم:

<PropertyGroup>

  <JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

</PropertyGroup>

با این کار Java حافظه کافی برای تکمیل فرآیند ساخت به برنامه شما اختصاص می دهد.

 

 

1394/10/07 3616 1223
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...