Android 상위버전(허니컴 이상) API를 구버전 하위 API에서 사용해보자
이번 포스팅은 GREE SDK를 붙이다가 나온 에러때문에 정리를 하게되네요. 본론에 들어가기에 앞서 관련 에러 로그부터 확인해보면 아래와 같습니다.
총 212개나 되는 에러를 GREE SDK 내부에서 뿜더군요. Fragment cannot be resolved to a type 관련 에러가 많았고 밑에는 다른 것도 있었는데요, 공식 Android GREE SDK 개발자 가이드에서 조차 관련 사항을 확인할 수 없었습니다. Project Build Target 버전이 다른가 하고 API 버전을 바꿔가면서 빌드를 해봤지만 에러 갯수만 차이가 늘거나 줄어들 뿐 해결은 안되었습니다. 구글링 들어갔죠.
이런 종류의 에러는 Android에 Support Library를 사용해줘야 해결이 된다는군요. Android SDK에서 기본으로 제공해주는 클래스가 아니기 때문이라네요. 구버젼만 그런건지...
java2s라는 Java관련 튜토리얼 홈페이지인듯한데 이곳에서 android-support-v4.jar를 다운로드 할 수 있습니다. 버전이 높은 v13등 다른 파일도 보이기는 하는데 일단 v4를 다운받아 원하는 위치에 압축해제합니다.
또는 Android SDK Manager에서 Extras에 보면 Android Support Library를 Install해주시면 됩니다.
그러면 android-sdk\extras\android\support에 v4, v7, v13이 설치가 됩니다.
이제 GREE SDK에 마우스 우클릭해서 Properties -> Java Build Path의 Libraries탭에서 Add External JARs를 눌러 android-support-v4.jar를 추가 후 체크하고 저장합니다. 이제 빌드하면 에러없이 빌드가 완료되어 greesdk.jar 파일이 생성됩니다.
밑에는 java2s에 있는 android-support-v4.jar안의 META-INF/MANIFEST.MF파일 내용인데 여러개의 class들이 있네요. Fragment 가 아니더라도 아래 것들이 문제가 된다면 android-support-v4.jar 파일을 추가하시면 될 듯합니다.
Files contained in android-support-v4.jar:
META-INF/MANIFEST.MF
android.support.v4.util.LogWriter.class
android.support.v4.util.LruCache.class
android.support.v4.util.DebugUtils.class
android.support.v4.util.TimeUtils.class
android.support.v4.app.FragmentManagerImpl.class
android.support.v4.app.FragmentManagerState.class
android.support.v4.app.FragmentState.class
android.support.v4.app.LoaderManager.class
android.support.v4.app.FragmentActivity.class
android.support.v4.app.ListFragment.class
android.support.v4.app.NoSaveStateFrameLayout.class
android.support.v4.app.HCSparseArray.class
android.support.v4.app.SuperNotCalledException.class
android.support.v4.app.ActivityCompatHoneycomb.class
android.support.v4.app.BackStackState.class
android.support.v4.app.DialogFragment.class
android.support.v4.app.FragmentTransaction.class
android.support.v4.app.LoaderManagerImpl.class
android.support.v4.app.Fragment.class
android.support.v4.app.FragmentPagerAdapter.class
android.support.v4.app.FragmentStatePagerAdapter.class
android.support.v4.app.FragmentManager.class
android.support.v4.app.BackStackRecord.class
android.support.v4.view.MotionEventCompat.class
android.support.v4.view.ViewConfigurationCompat.class
android.support.v4.view.ViewPager.class
android.support.v4.view.VelocityTrackerCompatHoneycomb.class
android.support.v4.view.ViewConfigurationCompatFroyo.class
android.support.v4.view.MotionEventCompatEclair.class
android.support.v4.view.PagerAdapter.class
android.support.v4.view.MenuCompatHoneycomb.class
android.support.v4.view.VelocityTrackerCompat.class
android.support.v4.view.MenuCompat.class
android.support.v4.os.ParcelableCompatCreatorHoneycombMR2.class
android.support.v4.os.ParcelableCompatCreatorCallbacks.class
android.support.v4.os.ParcelableCompat.class
android.support.v4.os.ParcelableCompatCreatorHoneycombMR2Stub.class
android.support.v4.widget.SimpleCursorAdapter.class
android.support.v4.widget.CursorFilter.class
android.support.v4.widget.CursorAdapter.class
android.support.v4.widget.ResourceCursorAdapter.class
android.support.v4.content.AsyncTaskLoader.class
android.support.v4.content.Loader.class
android.support.v4.content.CursorLoader.class
구글 공식 개발 가이드 Support Library
구글 공식 개발 가이드 Using the Support Library
- Cannot cast from Activity to SetupActivity SetupActivityHelperFrag.java /GreeSdk/src/net/gree/asdk/core/auth line 385 Java Problem
- Fragment cannot be resolved to a type DashboardContentFragment.java /GreeSdk/src/net/gree/asdk/core/dashboard line 54 Java Problem
- FragmentActivity cannot be resolved to a type DashboardActivity.java /GreeSdk/src/net/gree/asdk/core/dashboard line 77 Java Problem
- FragmentManager cannot be resolved to a type DashboardActivity.java /GreeSdk/src/net/gree/asdk/core/dashboard line 190 Java Problem
- FragmentTransaction cannot be resolved to a type DashboardActivity.java /GreeSdk/src/net/gree/asdk/core/dashboard line 191 Java Problem
- Incompatible conditional operand types Activity and FragmentActivity ImageUploader.java /GreeSdk/src/net/gree/asdk/core/dashboard line 338 Java Problem
- RESULT_OK cannot be resolved to a variable DashboardActivity.java /GreeSdk/src/net/gree/asdk/core/dashboard line 322 Java Problem
- TELEPHONY_SERVICE cannot be resolved to a variable SetupActivity.java /GreeSdk/src/net/gree/asdk/core/auth line 782 Java Problem
- The constructor AgreementDialog(SetupActivity, String) is undefined SetupActivity.java /GreeSdk/src/net/gree/asdk/core/auth line 386 Java Problem
- The import android.support cannot be resolved DashboardActivity.java /GreeSdk/src/net/gree/asdk/core/dashboard line 52 Java Problem
- The method cast(Object) from the type Class<FragmentActivity> refers to the missing type FragmentActivity ImageUploader.java /GreeSdk/src/net/gree/asdk/core/dashboard line 339 Java Problem
총 212개나 되는 에러를 GREE SDK 내부에서 뿜더군요. Fragment cannot be resolved to a type 관련 에러가 많았고 밑에는 다른 것도 있었는데요, 공식 Android GREE SDK 개발자 가이드에서 조차 관련 사항을 확인할 수 없었습니다. Project Build Target 버전이 다른가 하고 API 버전을 바꿔가면서 빌드를 해봤지만 에러 갯수만 차이가 늘거나 줄어들 뿐 해결은 안되었습니다. 구글링 들어갔죠.
이런 종류의 에러는 Android에 Support Library를 사용해줘야 해결이 된다는군요. Android SDK에서 기본으로 제공해주는 클래스가 아니기 때문이라네요. 구버젼만 그런건지...
java2s라는 Java관련 튜토리얼 홈페이지인듯한데 이곳에서 android-support-v4.jar를 다운로드 할 수 있습니다. 버전이 높은 v13등 다른 파일도 보이기는 하는데 일단 v4를 다운받아 원하는 위치에 압축해제합니다.
또는 Android SDK Manager에서 Extras에 보면 Android Support Library를 Install해주시면 됩니다.
그러면 android-sdk\extras\android\support에 v4, v7, v13이 설치가 됩니다.
이제 GREE SDK에 마우스 우클릭해서 Properties -> Java Build Path의 Libraries탭에서 Add External JARs를 눌러 android-support-v4.jar를 추가 후 체크하고 저장합니다. 이제 빌드하면 에러없이 빌드가 완료되어 greesdk.jar 파일이 생성됩니다.
밑에는 java2s에 있는 android-support-v4.jar안의 META-INF/MANIFEST.MF파일 내용인데 여러개의 class들이 있네요. Fragment 가 아니더라도 아래 것들이 문제가 된다면 android-support-v4.jar 파일을 추가하시면 될 듯합니다.
Files contained in android-support-v4.jar:
META-INF/MANIFEST.MF
android.support.v4.util.LogWriter.class
android.support.v4.util.LruCache.class
android.support.v4.util.DebugUtils.class
android.support.v4.util.TimeUtils.class
android.support.v4.app.FragmentManagerImpl.class
android.support.v4.app.FragmentManagerState.class
android.support.v4.app.FragmentState.class
android.support.v4.app.LoaderManager.class
android.support.v4.app.FragmentActivity.class
android.support.v4.app.ListFragment.class
android.support.v4.app.NoSaveStateFrameLayout.class
android.support.v4.app.HCSparseArray.class
android.support.v4.app.SuperNotCalledException.class
android.support.v4.app.ActivityCompatHoneycomb.class
android.support.v4.app.BackStackState.class
android.support.v4.app.DialogFragment.class
android.support.v4.app.FragmentTransaction.class
android.support.v4.app.LoaderManagerImpl.class
android.support.v4.app.Fragment.class
android.support.v4.app.FragmentPagerAdapter.class
android.support.v4.app.FragmentStatePagerAdapter.class
android.support.v4.app.FragmentManager.class
android.support.v4.app.BackStackRecord.class
android.support.v4.view.MotionEventCompat.class
android.support.v4.view.ViewConfigurationCompat.class
android.support.v4.view.ViewPager.class
android.support.v4.view.VelocityTrackerCompatHoneycomb.class
android.support.v4.view.ViewConfigurationCompatFroyo.class
android.support.v4.view.MotionEventCompatEclair.class
android.support.v4.view.PagerAdapter.class
android.support.v4.view.MenuCompatHoneycomb.class
android.support.v4.view.VelocityTrackerCompat.class
android.support.v4.view.MenuCompat.class
android.support.v4.os.ParcelableCompatCreatorHoneycombMR2.class
android.support.v4.os.ParcelableCompatCreatorCallbacks.class
android.support.v4.os.ParcelableCompat.class
android.support.v4.os.ParcelableCompatCreatorHoneycombMR2Stub.class
android.support.v4.widget.SimpleCursorAdapter.class
android.support.v4.widget.CursorFilter.class
android.support.v4.widget.CursorAdapter.class
android.support.v4.widget.ResourceCursorAdapter.class
android.support.v4.content.AsyncTaskLoader.class
android.support.v4.content.Loader.class
android.support.v4.content.CursorLoader.class
구글 공식 개발 가이드 Support Library
구글 공식 개발 가이드 Using the Support Library
도움 받고 갑니다.
답글삭제이것들은 왜케 업데이트 할때마다
에러를 내는지 모르겠네요.
업데이트가 고역입니다. -_-
프로그래밍이 다 그렇죠^^ 도움이 되었다니 기분좋네요~ 열코딩 하세요~
삭제