개발도구/아이폰2014.11.26 13:50
  

Undefined symbols for architecture x86_64:

  "_OBJC_CLASS_$_GAI", referenced from:

      objc-class-ref in HackersAppDelegate.o

  "_OBJC_CLASS_$_GAITrackedViewController", referenced from:

      _OBJC_CLASS_$_CmUIViewController in CmUIViewController.o

  "_OBJC_CLASS_$_KalViewController", referenced from:

      objc-class-ref in LearnPlan.o

  "_OBJC_METACLASS_$_GAITrackedViewController", referenced from:

      _OBJC_METACLASS_$_CmUIViewController in CmUIViewController.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)


위의 경고 또는 메세지는 libGoogleAnalytics.a, missing required architecture x86_64

You're not doing anything wrong. I'm pretty sure google has not yet provided a arm64 version of their libGoogleAnalyticsServices.a, which is really annoying ...it has been weeks since the public the release of Xcode 5GM.


xcode  - architecture base

$(ARCHS_STANDARD) 

Standard architectures (armv7, arm64)

를 아래와 같이 설정해주면 되네요.


armv7, armv7s

Posted by 예배하는 프로그래머
개발도구/아이폰2014.11.14 17:55
  

아이폰6을 구매했습니다. 중고폰으로 구매를 하려 하다가 SKT 의 조건을 따져 보니 괜찮겠다 생각이 들었지요

중고로 사서 유심을 끼어 사용하려 했는데 찬한가족할인_4회선이란 좋은 조건이 있어 당장 가입하였습니다. 

착한 가족 할인 으로 인해 매달 5,500원을 할인 받게 되었습니다. <-- 11월 14일까지입니다. 

그래서 총 5만 7천원 정도이네요.

와이프님이 게임을 잘 안하셔서 아이폰 16기가 골드입니다. 

유심은 기존 아이폰4s 을 잘라 나노 유심으로 만들어 사용하였습니다. 두번 껏다키니까 잘되네요.

마이크로 유심을 나노 유심으로 바꾸도록


유심커팅가이드라인.pdf


 파일도 함께 첨부해 드립니다. 

프린트 하셔서 아래 그림처럼 테잎으로 붙여서 자르고 가위로도 잘라 보세요. ^^(7000원 아낌)

기존 아이폰4s의 설정 -  icloud 계정 로그인 - 백업을 눌러 저장합니다. 

아이폰6 실행시 아이폰4S의 계정 그대로 로그인 하면 내가 기존의 사용하였던 그 정보 그대로 (전화, 메세지, 앱 설치, 노트, 메모 심지어 카톡 리스트 까지) 받아 올 수 있습니다. 














Posted by 예배하는 프로그래머
개발도구/아이폰2014.11.13 13:45
  

아이폰 인앱 개발에 있어 아래와 같이 테스트폰 또는 시뮬레이터로 테스트 할때 나오는 메세지입니다. 

테스트를 할 수 있도록 하기 위해서는

1. A 계정(스토어 판매 계정) 을 아이튠즈에서 로그아웃한다. 

2. B 계정(아이듄즈 커넥터에서 테스트 계정)을 만듭니다. 

3. B 계정에는 신용카드 정보, 아이튠즈 스토어 로그아웃 유지합니다.

위의 3가지를 해결하면 결제 테스트를 할수 있습니다. 



참고 링크 : http://iphonedevsdk.com/forum/iphone-sdk-development/63008-app-purchase-test-account-verification-required-cant-get-passed.html

Posted by 예배하는 프로그래머
  

1단계 해당 파일 다운로드


2단계 (첨부파일 + unlock 만들기)
./fastboot oem unlock

ADB install 파일준비
Fastboot system-wide 파일 준비


3. Volume Down + Power button

fastboot 모드로 진입


4. Flashing the image

2단계 압축푼 해당 디렉토리에 가서

fastboot devices - 기기를 인식하는지 유무를 확인할 수 있다.

설치 방법은 아래와 같습니다.

Windows:
flash-all.bat

Mac:
./flash-all.sh

5. Re-locing the bootloader
./fastboot oem lock


Posted by 예배하는 프로그래머
  

펌) http://blog.naver.com/PostView.nhn?blogId=sungho0459&logNo=40147285896


외부 폰트를 적용 방법 3가지 

1.TextView 재정의.

2.attrs.xml 작성

3.main.xml 적용

 

1.TextView 재정의.

외부 폰트를 XML에서 사용하려면 기존 TextView를 새롭게 정의할 필요가 있습니다.

 

package com.example;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;

public class TextViewPlus extends TextView {
   
private static final String TAG = "TextView";

   
public TextViewPlus(Context context) {
       
super(context);
   
}

   
public TextViewPlus(Context context, AttributeSet attrs) {
       
super(context, attrs);
        setCustomFont
(context, attrs);
   
}

   
public TextViewPlus(Context context, AttributeSet attrs, int defStyle) {
       
super(context, attrs, defStyle);
        setCustomFont
(context, attrs);
   
}

   
private void setCustomFont(Context ctx, AttributeSet attrs) {
       
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus);
       
String customFont = a.getString(R.styleable.TextViewPlus_customFont);
        setCustomFont
(ctx, customFont);
        a
.recycle();
   
}

   
public boolean setCustomFont(Context ctx, String asset) {
       
Typeface tf = null;
       
try {
        tf
= Typeface.createFromAsset(ctx.getAssets(), asset);  
       
} catch (Exception e) {
           
Log.e(TAG, "Could not get typeface: "+e.getMessage());
           
return false;
       
}

        setTypeface
(tf);  
       
return true;
   
}

}

여기서 중요한것은 패키지 명과 재정의를 한 Class 네임과 재정의 메소드의 내부입니다.

setCoustomFont내부 소스에서 처음보는 TextViewPlus_customFont는 나중에 attrs.xml 파일의 내용입니다.

Class네임은 당연히 TextViewPlus.java가 되겠죠?

패키지명은 main.xml에서 쓰이게 됩니다.

 

2.attrs.xml

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<declare-styleable name="TextViewPlus">
       
<attr name="customFont" format="string"/>
   
</declare-styleable>
</resources>

TextViewPlus태그의 'customFont'속성 구조를 새로 정의하였습니다.

 

3.main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns
:android="http://schemas.android.com/apk/res/android"
    xmlns
:foo="http://schemas.android.com/apk/res/com.example"
    android
:orientation="vertical" android:layout_width="fill_parent"
    android
:layout_height="fill_parent">

   
<com.example.TextViewPlus
        android
:id="@+id/textViewPlus1"
        android
:layout_height="match_parent"
        android
:layout_width="match_parent"
        android
:text="@string/showingOffTheNewTypeface"
        foo
:customFont="saxmono.ttf">
   
</com.example.TextViewPlus>
</LinearLayout>

xmlns로 패키지 장소를 추가해서 우리가 만든 TextViewPlus의 customFont 속성을 추가할 수 있게 만들어줍니다.

기존 TextView가 아닌 우리가 정의한 TextViewPlus를 사용하기 위해서는 패키지 명까지 같이 적어주셔야 합니다. 'com.example.TextViewPlus'

그리고 attrs.xml에서 정의한 속성 customFont를 xmlns을 이용하여 연결해서 사용합니다.


Posted by 예배하는 프로그래머
  

현재 실 사용중인 네트워크 체크 소스입니다. 


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.intro);

       

Log.v("notice", "notice");

if (!KBONetworkInfo.IsWifiAvailable(this) && !KBONetworkInfo.Is3GAvailable(this))

{

    //Toast.makeText(this, "네크워크에 연결할 수 없습니다.", Toast.LENGTH_LONG).show();

msgShow("알림","본 서비스는 네트워크를 이용하는 서비스로 현재 네트워크에 연결되어 있지 않습니다.","닫기");

    return;

}

myHandler.postDelayed(myRunnable, 3000); // 딜레이 지정


}

public static class KBONetworkInfo {

 

    public static boolean IsWifiAvailable(Context context)

    {

        ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        boolean bConnect = false;

        try

        {

            if( m_NetConnectMgr == null ) return false;

 

            NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            bConnect = (info.isAvailable() && info.isConnected());

 

        }

        catch(Exception e)

        {

            return false;

        }

 

        return bConnect;

    }

 

    public static boolean Is3GAvailable(Context context)

    {  

        ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        boolean bConnect = false;

        try

        {

            if( m_NetConnectMgr == null ) return false;

            NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

            bConnect = (info.isAvailable() && info.isConnected());

        }

        catch(Exception e)

        {

            return false;

        }

 

        return bConnect;

    }

}

public void msgShow(String title,String msg,String closeMsg){

AlertDialog alert = new  AlertDialog.Builder( this ).create();

alert.setTitle(title);

    alert.setMessage( msg );

   

    alert.setButton( closeMsg, new DialogInterface.OnClickListener()

    {

        @Override

        public void onClick(DialogInterface dialog, int which)

        {

            dialog.dismiss();

            finish();

        }

    });

   

   

    alert.show();

}


public boolean onKeyDown(int keyCode, KeyEvent e) {

Log.v(null, "" + keyCode);

if (keyCode == KeyEvent.KEYCODE_BACK) {

}

return false;

} 

public boolean onKeyDown1(int keyCode, KeyEvent e) {

Log.v(null, "" + keyCode);

if (keyCode == KeyEvent.KEYCODE_HOME) {

myHandler.removeCallbacks(myRunnable);

}

return false;

}

Posted by 예배하는 프로그래머
  

실제 업무에 사용중인 소스

키보드를 인텐트 시작과 동시에 무조건 보이기 위한 코드입니다. 

editText1 = (EditText)findViewById(R.id.editText1);

editText1.setSelection(0);      
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

LayoutParams 는 import android.view.WindowManager.LayoutParams;  -import 시켜줘야 한다. 

Posted by 예배하는 프로그래머
2013.05.10 17:52

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

  

http://www.wglxy.com/android-tutorials/drag-drop-for-android-gridview-v4

Drag-Drop for Android GridView (V4)


This demo application is a simple example that shows how to support dragging and dropping on a GridView. For more information about this, read the blog article at blahti.wordpress.com

Source code for this demo app is attached below. Be sure to do a clean build in Eclipse after you import the project. The project was built with Android 4.2 (API  level 17). It runs on API levels 11 and up.


DragDropGrid-130302.zip


Posted by 예배하는 프로그래머
  

진저브리드 부터 스레드를 이용한 이미지 출력이 아니면, 화면에 출력되지 않는다. 기계가 2.3 에서 잘되는데 4.0이상부터는 안되는 이유는 API변경!!! 
[안드로이드] ImageView API 진저브리드 변경 - StrictMode
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class MainActivity extends Activity {

    ImageView mImgView1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

        mImgView1 = (ImageView) findViewById(R.id.mImgView1);
        String url = "https://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Trial_Sizes_4e4ac3b0d3491_175x175.jpg";
        BitmapFactory.Options bmOptions;
        bmOptions = new BitmapFactory.Options();
        bmOptions.inSampleSize = 1;
        Bitmap bm = loadBitmap(url, bmOptions);
        mImgView1.setImageBitmap(bm);
    }

    public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
        Bitmap bitmap = null;
        InputStream in = null;
        try {
            in = OpenHttpConnection(URL);
            bitmap = BitmapFactory.decodeStream(in, null, options);
            in.close();
        } catch (IOException e1) {
        }
        return bitmap;
    }

    private static InputStream OpenHttpConnection(String strURL)
            throws IOException {
        InputStream inputStream = null;
        URL url = new URL(strURL);
        URLConnection conn = url.openConnection();

        try {
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setRequestMethod("GET");
            httpConn.connect();

            if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                inputStream = httpConn.getInputStream();
            }
        } catch (Exception ex) {
        }
        return inputStream;
    }
}

Posted by 예배하는 프로그래머