Xamarin 공부를 하고 있는 중에 axml 파일이 디자이너로 보여지지 않고 아래와 같은 에러가 발생

Your Java Version(1.0.7) is too old, You must have at least 1.8 installed.
자바 버전이 문제라는 메세지이기 때문에
자바 버전을 최신으로 깔아도 여전히 문제 발생

구글링을 열심히 하고 있는 와중에 옵션쪽에 설정하는 부분이 있다는 말에 바로 찾아보니
아래와 같이 자바버전이 잘못 설정이 되어있었음  ㅜㅠ


최신 버전이 있는 곳으로 위치 변경.
C:\Program Files\Java\jdk1.8.0_121
다시 axml 디자이너를 여니 아래와 같이 제대로 디자이너가 동작함.

이 외 문제들은 SDK Manager 에서 필요한 항목을 설치 및 업데이트하면 된다.

 

참고

http://stackoverflow.com/questions/30090719/view-designer-not-showing-up

결과는 아래와 같다.

시간은 millisecond 단위.


millisecond CPU Memory Disk
Count Android Xamarin Android Xamarin Android Xamarin
평균 249.5 147.5 102.2 27 7708.1 12753.7
1 240 137 97 24 8321 13701
2 227 143 109 27 8048 13430
3 257 148 85 26 7737 13564
4 281 161 184 62 7792 13614
5 234 153 94 31 7713 13284
6 270 149 89 17 7524 11229
7 253 185 92 21 7471 12094
8 252 125 102 28 7889 12344
9 250 133 89 16 7318 12031
10 231 141 81 18 7268 12246



결론,

Cpu, Memory 속도는 Xamarin 이 빠르고

Disk 는 Android 가 빠르다


백만을 천만으로 했을때

Cpu 는 위 결과와 동일하게 Xamarin  이 두배 정도 빠르며

Memory 테스트는 Xamarin 으로 했을때는 결과가 나오는데 Android 로는 뻗어버린다.;

Disk 는 용량이 버티질 못할것 같아서 테스트 못했다.

 

테스트 apk 파일은 아래에...

AndroidTest1-debug-unaligned.apk

XamarinTest1.XamarinTest1-Signed.apk

비교파일.xlsx

 

https://msdn.microsoft.com/ko-kr/library/mt488768.aspx

 

https://www.xamarin.com/forms

Uri uri = Uri.parse("content://mms/");
String selection = "_id = " + mmsId;
Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
 
 
 
String selectionPart = "mid=" + mmsId;
Android.Net.Uri uri = Android.Net.Uri.parse("content://mms/part");
Android.Database.ICursor cursor = ContentResolver.Query(uri, null,
    selectionPart, null, null);
if (cursor.MoveToFirst())
{
    do
    {
        String partId = cursor.GetString(cursor.GetColumnIndex("_id"));
        String type = cursor.GetString(cursor.GetColumnIndex("ct"));
        if ("text/plain".Equals(type))
        {
            String data = cursor.GetString(cursor.GetColumnIndex("_data"));
            String body;
            if (data != null)
            {
                // implementation of this method below
                body = GetMmsText(partId);
            }
            else
            {
                body = cursor.GetString(cursor.GetColumnIndex("text"));
            }
        }
    } while (cursor.MoveToNext());
}

private string getMmsText(String id)
{
    Android.Net.Uri partURI = Android.Net.Uri.Parse("content://mms/part/" + id);
    Stream inputStream = null;
    Java.Lang.StringBuilder sb = new Java.Lang.StringBuilder();
    try
    {
        inputStream = ContentResolver.OpenInputStream(partURI);
        if (inputStream != null)
        {
            Java.IO.InputStreamReader isr = new Java.IO.InputStreamReader(inputStream, "UTF-8");
            Java.IO.BufferedReader reader = new Java.IO.BufferedReader(isr);
            string temp = reader.ReadLine();
            while (temp != null)
            {
                sb.Append(temp);
                temp = reader.ReadLine();
            }
        }
    }
    catch (IOException e) { }
    finally
    {
        if (inputStream != null)
        {
            try
            {
                inputStream.Close();
            }
            catch (IOException e) { }
        }
    }
    return sb.ToString();
}
 

 

"obj\Debug\android\bin\packaged_resources" 파일이 없습니다
라는 오류는 빌드가 오류 났을때 발생되는 에러이다
출력창의 에러 내용을 모두 해결하면 된다.

오류를 다잡았는데도 오류가 발생되면

* SDK Manager 에서 아래 항목을 모두 설치한다.

Tools/
Tools/Android SDK Tools 25.1.1
Tools/Android SDK Plataform-tools 23.1
Tools/Android SDK Build-tools 23.0.1

Android 6.0/
Android 6.0/SDK
Android 6.0/ARM EABI v7a System Image

Android 5.1.1/
Android 5.1.1/SDK
Android 5.1.1/ARM EABI v7a System Image

Android 4.2.2/
Android 4.4.2/SDK
Android 4.4.2/ARM EABI v7a System Image

Android 4.0.3/
Android 4.0.3/SDK
Android 4.0.3/ARM EABI v7a System Image

Extras/
Extras/Android Support Library
Extras/Google USB Driver

 




참고
https://forums.xamarin.com/discussion/63356/the-file-obj-debug-android-bin-packaged-resources-does-not-exist

 

위 방법을 이용하니 디자이너도 잘 보인다.

// OK,Dialog팝업
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetTitle("확인");
alert.SetMessage("저장하시겠습니까?");
alert.SetPositiveButton("확인", SaveEvent);
alert.SetNegativeButton("취소", (senderAlert, args) => {});
Dialog dialog = alert.Create();
dialog.Show();

 private void SaveEvent(object sender, DialogClickEventArgs args)
{

 

// 단순 Dialog
public static void OpenDialogAction(Context context, string title, string content)
{
    Dialog dlg = new Dialog(context);
    TextView text = new TextView(context);
    text.Text = content;
    dlg.SetContentView(text);
    dlg.SetTitle(title);
    dlg.Show();
}

[Activity(Label = "TestActivity", MainLauncher = false, Icon = "@drawable/icon", WindowSoftInputMode = SoftInput.AdjustPan)]
public class TestActivity : Activity
{
}


WindowSoftInputMode = SoftInput.AdjustPan 을 넣으면 클릭이나 터치를 해야 입력 키보드가 나타난다.

1. Xamarin 이란
- 크로스플랫폼 (Mac, ios, android, windows 등 다양한 OS를 하나의 소프트웨어가 지원하도록 하는 기술) 시장에서 닷넷 개발자를 편하게 해주는 개발 도구
- 30일 동안은 기능 제한 없이 무료로 사용이 가능
- 그 이후로는 starter 버전(무료)으로 기능제한이 있음
- DLL
Size 제한 : 개발자가 제작한 DLL의 사이즈가 32KB를 넘지 않아야 한다.

*자마린 최신 가격표 링크 : http://store.xamarin.com/ -> 현재 무료
*자마린에 대한 Microsoft의 발표자료 : http://www.slideshare.net/ActiveNick/the-great-mobile-debate-native-vs-hybrid-app-development#

2. Xamarin 설치
- Visual Studio 2015 는 설치 시 Android 영역에 Xamarin 을 선택을 하여 진행.
- 이미 VS 가설치가 된 이후라면 https://xamarin.com/visual-studio 에서 다운 받아 Setup 진행.
- Setup 은 특별한 것 없이 모두 다음.. 으로 진행.
- 계정이 필요하므로 가입이 필수다.

3. Genymotion 설치
- 속도 높은 시뮬레이션을 띄우기 위해 필요

설치사이트
설치진행중
구동모습

4. Sample app 만들기
- 아래 처럼 android 영역의 blank app 를 선택하고 바로 빌드

Blank App 선택
실행하면 지니모션으로 위와같은 화면이 뜬다

+ Recent posts