2017년 3월 17일 금요일

xamarin android Java Max Heap Size



android build 시에 다음과 같은 에러가 나면
1>COMPILETODALVIK : UNEXPECTED TOP-LEVEL error :
1>  java.lang.OutOfMemoryError: Java heap space
1>   at java.util.Arrays.copyOf(Arrays.java:3332)
1>   at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
1>   at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
1>   at java.lang.StringBuilder.append(StringBuilder.java:136)
1>   at com.android.dx.rop.type.Prototype.withFirstParameter(Prototype.java:370)
1>   at com.android.dx.rop.type.Prototype.intern(Prototype.java:180)
1>   at com.android.dx.cf.iface.StdMethod.<init>(StdMethod.java:45)
1>   at com.android.dx.cf.direct.MethodListParser.set(MethodListParser.java:80)
1>   at com.android.dx.cf.direct.MemberListParser.parse(MemberListParser.java:217)
1>   at com.android.dx.cf.direct.MemberListParser.parseIfNecessary(MemberListParser.java:108)
1>   at com.android.dx.cf.direct.MethodListParser.getList(MethodListParser.java:54)
1>   at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:542)
1>   at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
1>   at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
1>   at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
1>   at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
1>   at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
1>   at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
1>   at com.android.dx.command.dexer.Main.processClass(Main.java:749)
1>   at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
....



Java Max Heap Size를 조정하면 해결 된다.

Error when building Hello Xamarin.Forms Multiscreen

https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms-multiscreen/quickstart/

위 예제의 CallHistoryPage.xaml 파일은 다음과 같다.


<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Phoneword.CallHistoryPage">
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness"
                    iOS="20, 40, 20, 20"
                    Android="20, 20, 20, 20"
                    WinPhone="20, 20, 20, 20" />
    </ContentPage.Padding>
    <ContentPage.Content>
        <StackLayout VerticalOptions="FillAndExpand"
                     HorizontalOptions="FillAndExpand"
                     Orientation="Vertical"
                     Spacing="15">
            <ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>


하지만 컴파일시 다음 에러를 발생 시킨다.

Error Failed to resolve assembly: 'Phoneword, Culture=neutral, PublicKeyToken=null' Phoneword.Android

 xmlns:local="clr-namespace:Phoneword;assembly=Phoneword" 를 다음으로 변경
 xmlns:local="clr-namespace:Phoneword;

자세한건 다음을 참고
http://stackoverflow.com/questions/6253505/xaml-xmlnslocal-c-sharp

2017년 3월 16일 목요일

xamarin firebase build action




















xamarin firebase 연동시
Google-services.json 파일 기반으로 resources 빌드해야 한다. 안하면 리소스 찾음

따라서 해당 파일의 속성에서 Build Action GoogleServicesJson으로 걸어줘야 resources 파일 re-gen !