iOS2019. 5. 10. 16:47

이게 개념이 잡히지 않으면 개발환경 설정 시 마다 고생하기 마련이다.

이참에 정리를 좀 하자.

 

일단 기본적으로 애플은 앱실행권한을 관리를 하고 있다. 이 권한이 획득되지 못하면 앱이 실행이 될수 없다.

그러기 위해서는 애플로부터 인증서를 발급받아야 한다. 그리고 단말에서 실행을 하려면 프로비저닝이 단말에 설치가 되어야 한다.

프로비저닝은 단말과 애플인증서의 연결해주는 역할을 하며 권한을 획득하여 얻어지면 앱이 실행이 된다.

 

이 과정은

1. 애플인증서 생성

2. 프로비저닝 생성

3. 빌드 및 실행

이 되는데 하나하나씩 정리해 보자

 

1. 애플인증서 생성

개발자 PC에 키체인앱은 개인키와 공개키를 가지고 있다 이를 기반으로 먼저 CSR(Certificate Signing Request)을 먼저 만들어야 한다.

(1) 키체인 앱 실행

(2) 키체인접근 > 인증서 지원 > 인증기관에서 인증서 요청 선택

(3) 개발자의 이메일주소와 이름을 입력

(4) 요청항목의 "디스크에 저장됨" 선택

(5) 계속을 누르면 CertificateSigningRequest.certSigningRequest 파일이 저장된다.

 

저장된 CSR파일을 애플개발자 콘솔에 인증서 추가 화면에서 등록한다.

(1) https://developer.apple.com/ 접속 및 로그인

(2) Certificates, Identifiers and Profile > Certificates > Development 이동

(3) 추가버튼 누르고 iOS App Development선택하고 화면 안내에 따라 CSR파일 등록 

(4) 등록 완료되면 인증서 파일 다운로드

 

동일한 방법으로 Production의 AppStore and Ad Hoc선택하여 배포용도 등록

 

2. 프로비저닝 생성

프로비저닝은 앱아이디별로 생성이 가능하며 앱아이디를 먼저 등록해주어야 한다.

등록된 앱아이디로 Provision Profiles 화면에서 안내에 따라 개발과 배포용을 등록한 후 프로비저닝 파일을 다운로드 한다.

이 때 개발용의 경우 설치를 허용할 단말을 선택할 수 있는데 이 화면에서 선택한 단말들만 해당 프로비저닝으로 설치및 실행이 가능하다.

 

위 과정을 거치면 

1. 개발자의 공개키와 개인키

2. 애플이 인증한 인증서

3. 디바이스에 설치 가능한 프로비저닝

 

위 3가지로 빌드를 하면 .app파일이 생성되며 2가지로 구성된다.

1. 실제로 사용될 프로비저닝 프로파일 : 빌드시 사용된 프로비저닝이다.

2. _CodeSignature 폴더 : CodeResources 파일을 담고 있고 모든 파일의 암호화 해시정보를 갖고 있다.

 

AdHoc버전의 앱은 디바이스에 설치되어 실행될때 

 

1. .app에 포함된 프로비저닝 프로파일이 애플인증서로 서명되었는지 확인

2. CodeResources참조하여 모든 파일의 해시를 확인하여 무결성 체크

3. 디바이스에 프로비저닝 프로파일이 있는지 확인

 

위 과정을 거쳐서 실행된다.

 

엔터프라이즈배포의 경우는 애플은 그 회사를 신뢰하고 별도의 확인과정을 거치지 않고 바로 실행되게 해준다.

 

앱스토어배포의 경우는 그 어떤 디바이스에서도 실행될수 없다. 오로지 애플에 제출용으로만 사용이 가능하며 애플이 리뷰후 다시 사인하여 배포한다.

 

팁!)

새로운 팀원이나 다른 PC에 개발환경을 설정할 때 매번 애플인증서를 만들 수는 없다.

이 때는 이미 등록된 인증서와 해당 인증서를 등록한 개발자의 키파일을 전달 받아서 설치해주어야 한다. 그러지 않으면 인증서의 인증서의 개인키유효성관련 오류가 나면서 빌드가 안된다. 

따라서 키파일(p12)을 익스포트해서 전달해주어야 한다.

간혹 관리가 안되어 revoke하여 완전히 새로운 인증서로 새로 시작해야 하는 경우가 있는데 동일한 인증서로 다른 앱을 배포하고 있는 중이라면 다른 앱들도 새로 배포해야 할것이다.

머리가 아프니 관리를 잘 하자~

Posted by 삼스
iOS2013. 6. 14. 12:22

Variable                                  Example
PATH                                      "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
LANG                                      en_US.US-ASCII
IPHONEOS_DEPLOYMENT_TARGET                4.1
ACTION                                    build
AD_HOC_CODE_SIGNING_ALLOWED               NO
ALTERNATE_GROUP                           staff
ALTERNATE_MODE                            u+w,go-w,a+rX
ALTERNATE_OWNER                           username
ALWAYS_SEARCH_USER_PATHS                  YES
APPLE_INTERNAL_DEVELOPER_DIR              /AppleInternal/Developer
APPLE_INTERNAL_DIR                        /AppleInternal
APPLE_INTERNAL_DOCUMENTATION_DIR          /AppleInternal/Documentation
APPLE_INTERNAL_LIBRARY_DIR                /AppleInternal/Library
APPLE_INTERNAL_TOOLS                      /AppleInternal/Developer/Tools
APPLY_RULES_IN_COPY_FILES                 NO
ARCHS                                     "armv6 armv7"
ARCHS_STANDARD_32_64_BIT                  "armv6 armv7"
ARCHS_STANDARD_32_BIT                     "armv6 armv7"
ARCHS_UNIVERSAL_IPHONE_OS                 armv7
AVAILABLE_PLATFORMS                       "iphonesimulator macosx iphoneos"
BUILD_COMPONENTS                          "headers build"
BUILD_DIR                                 "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"
BUILD_ROOT                                "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"
BUILD_STYLE                    
BUILD_VARIANTS                             normal
BUILT_PRODUCTS_DIR                         "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos"
CACHE_ROOT                                 /var/folders/2x/rvb2r9s16mq6r318zxvn0lk80000gn/C/com.apple.Xcode.501
CCHROOT                                    /var/folders/2x/rvb2r9s16mq6r318zxvn0lk80000gn/C/com.apple.Xcode.501
CHMOD                                      /bin/chmod
CHOWN                                      /usr/sbin/chown
CLASS_FILE_DIR                             "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/JavaClasses"
CLEAN_PRECOMPS                             YES
CLONE_HEADERS                              NO
CODESIGNING_FOLDER_PATH                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/InstallationBuildProductsLocation/Applications/project.app"
CODE_SIGNING_ALLOWED                       YES
CODE_SIGNING_REQUIRED                      YES
CODE_SIGN_CONTEXT_CLASS                    XCiPhoneOSCodeSignContext
CODE_SIGN_IDENTITY                         "iPhone Distribution"
COMBINE_HIDPI_IMAGES                       NO
COMPOSITE_SDK_DIRS                         /var/folders/2x/rvb2r9s16mq6r318zxvn0lk80000gn/C/com.apple.Xcode.501/CompositeSDKs
COMPRESS_PNG_FILES                         YES
CONFIGURATION                              Distribution
CONFIGURATION_BUILD_DIR                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos"
CONFIGURATION_TEMP_DIR                     "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos"
CONTENTS_FOLDER_PATH                       project.app/Contents
COPYING_PRESERVES_HFS_DATA                 NO
COPY_PHASE_STRIP                           YES
COPY_RESOURCES_FROM_STATIC_FRAMEWORKS      YES
CP                                         /bin/cp
CURRENT_ARCH                               armv7
CURRENT_VARIANT                            normal
DEAD_CODE_STRIPPING                        YES
DEBUGGING_SYMBOLS                          YES
DEBUG_INFORMATION_FORMAT                   dwarf-with-dsym
DEPLOYMENT_LOCATION                        YES
DEPLOYMENT_POSTPROCESSING                  YES
DERIVED_FILES_DIR                          "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/DerivedSources"
DERIVED_FILE_DIR                           "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/DerivedSources"
DERIVED_SOURCES_DIR                        "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/DerivedSources"
DEVELOPER_APPLICATIONS_DIR                 /Developer/Applications
DEVELOPER_BIN_DIR                          /Developer/usr/bin
DEVELOPER_DIR                              /Developer
DEVELOPER_FRAMEWORKS_DIR                   /Developer/Library/Frameworks
DEVELOPER_FRAMEWORKS_DIR_QUOTED            "\"/Developer/Library/Frameworks\""
DEVELOPER_LIBRARY_DIR                      /Developer/Library
DEVELOPER_SDK_DIR                          /Developer/SDKs
DEVELOPER_TOOLS_DIR                        /Developer/Tools
DEVELOPER_USR_DIR                          /Developer/usr
DEVELOPMENT_LANGUAGE                       English
DOCUMENTATION_FOLDER_PATH                  project.app/English.lproj/Documentation
DO_HEADER_SCANNING_IN_JAM                  NO
DSTROOT                                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/InstallationBuildProductsLocation"
DWARF_DSYM_FILE_NAME                       project.app.dSYM
DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT   NO
DWARF_DSYM_FOLDER_PATH                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos"
EFFECTIVE_PLATFORM_NAME                    -iphoneos
EMBEDDED_PROFILE_NAME                      embedded.mobileprovision
ENABLE_HEADER_DEPENDENCIES                 YES
ENABLE_OPENMP_SUPPORT                      NO
ENTITLEMENTS_ALLOWED                       YES
ENTITLEMENTS_REQUIRED                      YES
EXCLUDED_INSTALLSRC_SUBDIRECTORY_PATTERNS  ".svn CVS"
EXECUTABLES_FOLDER_PATH                    project.app/Executables
EXECUTABLE_FOLDER_PATH                     project.app
EXECUTABLE_NAME                            project
EXECUTABLE_PATH                            project.app/project
FILE_LIST                                  "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/Objects/LinkFileList"
FIXED_FILES_DIR                            "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/FixedFiles"
FRAMEWORKS_FOLDER_PATH                     project.app/Frameworks
FRAMEWORK_FLAG_PREFIX                      -framework
FRAMEWORK_SEARCH_PATHS                     "\"/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos\" "
FRAMEWORK_VERSION                          A
FULL_PRODUCT_NAME                          project.app
GCC3_VERSION                               3.3
GCC_C_LANGUAGE_STANDARD                    gnu99
GCC_INLINES_ARE_PRIVATE_EXTERN             YES
GCC_PFE_FILE_C_DIALECTS                    "c objective-c c++ objective-c++"
GCC_PRECOMPILE_PREFIX_HEADER               YES
GCC_PREFIX_HEADER                          project/Prefix.pch
GCC_PREPROCESSOR_DEFINITIONS               "NDEBUG DISTRIBUTION_BUILD=1 KK_TARGET=0x000F0"
GCC_SYMBOLS_PRIVATE_EXTERN                 YES
GCC_THUMB_SUPPORT                          YES
GCC_TREAT_WARNINGS_AS_ERRORS               NO
GCC_VERSION                                com.apple.compilers.llvm.clang.1_0
GCC_VERSION_IDENTIFIER                     com_apple_compilers_llvm_clang_1_0
GCC_WARN_ABOUT_RETURN_TYPE                 YES
GCC_WARN_UNUSED_FUNCTION                   YES
GCC_WARN_UNUSED_VARIABLE                   YES
GENERATE_MASTER_OBJECT_FILE                NO
GENERATE_PKGINFO_FILE                      YES
GENERATE_PROFILING_CODE                    NO
GID                                        20
GROUP                                      staff
INPUT_FILE_BASE             Default
INPUT_FILE_DIR              "/Volumes/Development/Project Game/Project-v1/images"
INPUT_FILE_NAME             Default.png
INPUT_FILE_PATH             "/Volumes/Development/Project Game/Project-v1/images/Default.png"
SCRIPT_INPUT_FILE           "/Volumes/Development/Project Game/Project-v1/images/Default.png"
SCRIPT_OUTPUT_FILE_0        "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/DerivedSources/Default.png"

EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES              "*.nib *.lproj *.framework *.gch (*) CVS .svn .git *.xcodeproj *.xcode *.pbproj *.pbxproj"
HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT     YES
HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES YES
HEADERMAP_INCLUDES_NONPUBLIC_NONPRIVATE_HEADERS            YES
HEADERMAP_INCLUDES_PROJECT_HEADERS                         YES
HEADER_SEARCH_PATHS                  "\"/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos/include\" "
ICONV                                /usr/bin/iconv
INFOPLIST_EXPAND_BUILD_SETTINGS      YES
INFOPLIST_FILE                       project/Resources/Info.plist
INFOPLIST_OUTPUT_FORMAT              binary
INFOPLIST_PATH                       project.app/Info.plist
INFOPLIST_PREPROCESS                 NO
INFOSTRINGS_PATH                     project.app/English.lproj/InfoPlist.strings
INPUT_FILE_REGION_PATH_COMPONENT                    
INPUT_FILE_SUFFIX                    .png
INSTALL_DIR                          "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/InstallationBuildProductsLocation/Applications"
INSTALL_GROUP                        staff
INSTALL_MODE_FLAG                    u+w,go-w,a+rX
INSTALL_OWNER                        username
INSTALL_PATH                         /Applications
INSTALL_ROOT                         "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/InstallationBuildProductsLocation"
JAVAC_DEFAULT_FLAGS                  "-J-Xms64m -J-XX:NewSize=4M -J-Dfile.encoding=UTF8"
JAVA_APP_STUB                        /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub
JAVA_ARCHIVE_CLASSES                 YES
JAVA_ARCHIVE_TYPE                    JAR
JAVA_COMPILER                        /usr/bin/javac
JAVA_FOLDER_PATH                     project.app/Java
JAVA_FRAMEWORK_RESOURCES_DIRS        Resources
JAVA_JAR_FLAGS                       cv
JAVA_SOURCE_SUBDIR                   .
JAVA_USE_DEPENDENCIES                YES
JAVA_ZIP_FLAGS                       -urg
JIKES_DEFAULT_FLAGS                  "+E +OLDCSO"
KEEP_PRIVATE_EXTERNS                 NO
LD_GENERATE_MAP_FILE                 NO
LD_MAP_FILE_PATH                     "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/project-LinkMap-normal-armv7.txt"
LD_NO_PIE                            NO
LD_OPENMP_FLAGS                      -fopenmp
LEGACY_DEVELOPER_DIR                 /Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer
LEX                                  /Developer/usr/bin/lex
LIBRARY_FLAG_NOSPACE                 YES
LIBRARY_FLAG_PREFIX                  -l
LIBRARY_SEARCH_PATHS                 "\"/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos\"  \"/Volumes/Development/Project Game/Project-v1/FlurryLib\""
LINKER_DISPLAYS_MANGLED_NAMES        NO
LINK_FILE_LIST_normal_armv6          "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/Objects-normal/armv6/project.LinkFileList"
LINK_FILE_LIST_normal_armv7          "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/Objects-normal/armv7/project.LinkFileList"
LINK_WITH_STANDARD_LIBRARIES         YES
LOCALIZED_RESOURCES_FOLDER_PATH      project.app/English.lproj
LOCAL_ADMIN_APPS_DIR                 /Applications/Utilities
LOCAL_APPS_DIR                       /Applications
LOCAL_DEVELOPER_DIR                  /Library/Developer
LOCAL_LIBRARY_DIR                    /Library
MACH_O_TYPE                          mh_execute
MAC_OS_X_PRODUCT_BUILD_VERSION       11A511
MAC_OS_X_VERSION_ACTUAL              1070
MAC_OS_X_VERSION_MAJOR               1070
MAC_OS_X_VERSION_MINOR               0700
NATIVE_ARCH                          armv6
NATIVE_ARCH_32_BIT                   i386
NATIVE_ARCH_64_BIT                   x86_64
NATIVE_ARCH_ACTUAL                   x86_64
NO_COMMON                            YES
OBJECT_FILE_DIR                      "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/Objects"
OBJECT_FILE_DIR_normal               "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/Objects-normal"
OBJROOT                              "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath"
ONLY_ACTIVE_ARCH                     NO
OPTIMIZATION_LEVEL                   0
OS                                   MACOS
OSAC                                 /usr/bin/osacompile
OTHER_CFLAGS                         -DNS_BLOCK_ASSERTIONS=1
OTHER_CPLUSPLUSFLAGS                 -DNS_BLOCK_ASSERTIONS=1
OTHER_INPUT_FILE_FLAGS                    
OTHER_LDFLAGS                        -lz
PACKAGE_TYPE                         com.apple.package-type.wrapper.application
PASCAL_STRINGS                       YES
PATH_PREFIXES_EXCLUDED_FROM_HEADER_DEPENDENCIES  "/usr/include /usr/local/include /System/Library/Frameworks /System/Library/PrivateFrameworks /Developer/Headers /Developer/SDKs /Developer/Platforms"
PBDEVELOPMENTPLIST_PATH              project.app/pbdevelopment.plist
PFE_FILE_C_DIALECTS                  "c objective-c c++ objective-c++"
PKGINFO_FILE_PATH                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/PkgInfo"
PKGINFO_PATH                         project.app/PkgInfo
PLATFORM_DEVELOPER_APPLICATIONS_DIR  /Developer/Platforms/iPhoneOS.platform/Developer/Applications
PLATFORM_DEVELOPER_BIN_DIR           /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
PLATFORM_DEVELOPER_LIBRARY_DIR       /Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library
PLATFORM_DEVELOPER_SDK_DIR           /Developer/Platforms/iPhoneOS.platform/Developer/SDKs
PLATFORM_DEVELOPER_TOOLS_DIR         /Developer/Platforms/iPhoneOS.platform/Developer/Tools
PLATFORM_DEVELOPER_USR_DIR           /Developer/Platforms/iPhoneOS.platform/Developer/usr
PLATFORM_DIR                         /Developer/Platforms/iPhoneOS.platform
PLATFORM_NAME                        iphoneos
PLATFORM_PREFERRED_ARCH              i386
PLATFORM_PRODUCT_BUILD_VERSION       8H7
PLIST_FILE_OUTPUT_FORMAT             binary
PLUGINS_FOLDER_PATH                  project.app/PlugIns
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR                    YES
PRECOMP_DESTINATION_DIR              "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/PrefixHeaders"
PRESERVE_DEAD_CODE_INITS_AND_TERMS   NO
PRIVATE_HEADERS_FOLDER_PATH          project.app/PrivateHeaders
PRODUCT_NAME                         project
PRODUCT_SETTINGS_PATH                "/Volumes/Development/Project Game/Project-v1/project/Resources/Info.plist"
PRODUCT_TYPE                         com.apple.product-type.application
PROFILING_CODE                       NO
PROJECT                              project
PROJECT_DERIVED_FILE_DIR             "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/DerivedSources"
PROJECT_DIR                          "/Volumes/Development/Project Game/Project-v1"
PROJECT_FILE_PATH                    "/Volumes/Development/Project Game/Project-v1/project.xcodeproj"
PROJECT_NAME                         project
PROJECT_TEMP_DIR                     "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build"
PROVISIONING_PROFILE_REQUIRED        YES
PUBLIC_HEADERS_FOLDER_PATH           project.app/Headers
RECURSIVE_SEARCH_PATHS_FOLLOW_SYMLINKS   YES
REMOVE_CVS_FROM_RESOURCES            YES
REMOVE_GIT_FROM_RESOURCES            YES
REMOVE_SVN_FROM_RESOURCES            YES
RESOURCE_RULES_REQUIRED              YES
REZ_COLLECTOR_DIR                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/ResourceManagerResources"
REZ_OBJECTS_DIR                      "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/ResourceManagerResources/Objects"
REZ_SEARCH_PATHS                     "\"/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos\" "
RUN_CLANG_STATIC_ANALYZER            NO
SCAN_ALL_SOURCE_FILES_FOR_INCLUDES   NO
SCRIPTS_FOLDER_PATH                  project.app/Scripts
SCRIPT_INPUT_FILE                    "/Volumes/Development/Project Game/Project-v1/fonts/helvetica-black-hd.png"
SCRIPT_OUTPUT_FILE_0                 "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build/DerivedSources/helvetica-black-hd.png"
SCRIPT_OUTPUT_FILE_COUNT             1
SDKROOT                              /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
SDK_DIR                              /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk
SDK_NAME                             iphoneos4.3
SDK_PRODUCT_BUILD_VERSION            8H7
SED                                  /usr/bin/sed
SEPARATE_STRIP                       NO
SEPARATE_SYMBOL_EDIT                 NO
SET_DIR_MODE_OWNER_GROUP            YES
SET_FILE_MODE_OWNER_GROUP           NO
SHALLOW_BUNDLE                      YES
SHARED_DERIVED_FILE_DIR             "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath/Distribution-iphoneos/DerivedSources"
SHARED_FRAMEWORKS_FOLDER_PATH       project.app/SharedFrameworks
SHARED_PRECOMPS_DIR                 /Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/Build/PrecompiledHeaders
SHARED_SUPPORT_FOLDER_PATH          project.app/SharedSupport
SKIP_INSTALL                        NO
SOURCE_ROOT                         "/Volumes/Development/Project Game/Project-v1"
SRCROOT                             "/Volumes/Development/Project Game/Project-v1"
STRINGS_FILE_OUTPUT_ENCODING        binary
STRIP_INSTALLED_PRODUCT             YES
STRIP_STYLE                         all
SUPPORTED_DEVICE_FAMILIES           1,2
SUPPORTED_PLATFORMS                 "iphonesimulator iphoneos"
SYMROOT                             "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/BuildProductsPath"
SYSTEM_ADMIN_APPS_DIR               /Applications/Utilities
SYSTEM_APPS_DIR                     /Applications
SYSTEM_CORE_SERVICES_DIR            /System/Library/CoreServices
SYSTEM_DEMOS_DIR                    /Applications/Extras
SYSTEM_DEVELOPER_APPS_DIR           /Developer/Applications
SYSTEM_DEVELOPER_BIN_DIR            /Developer/usr/bin
SYSTEM_DEVELOPER_DEMOS_DIR          "/Developer/Applications/Utilities/Built Examples"
SYSTEM_DEVELOPER_DIR                /Developer
SYSTEM_DEVELOPER_DOC_DIR            "/Developer/ADC Reference Library"
SYSTEM_DEVELOPER_GRAPHICS_TOOLS_DIR "/Developer/Applications/Graphics Tools"
SYSTEM_DEVELOPER_JAVA_TOOLS_DIR     "/Developer/Applications/Java Tools"
SYSTEM_DEVELOPER_PERFORMANCE_TOOLS_DIR   "/Developer/Applications/Performance Tools"
SYSTEM_DEVELOPER_RELEASENOTES_DIR   "/Developer/ADC Reference Library/releasenotes"
SYSTEM_DEVELOPER_TOOLS              /Developer/Tools
SYSTEM_DEVELOPER_TOOLS_DOC_DIR      "/Developer/ADC Reference Library/documentation/DeveloperTools"
SYSTEM_DEVELOPER_TOOLS_RELEASENOTES_DIR   "/Developer/ADC Reference Library/releasenotes/DeveloperTools"
SYSTEM_DEVELOPER_USR_DIR            /Developer/usr
SYSTEM_DEVELOPER_UTILITIES_DIR      /Developer/Applications/Utilities
SYSTEM_DOCUMENTATION_DIR            /Library/Documentation
SYSTEM_LIBRARY_DIR                  /System/Library
TARGETED_DEVICE_FAMILY              1
TARGETNAME                          Project
TARGET_BUILD_DIR                    "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/InstallationBuildProductsLocation/Applications"
TARGET_NAME                         Project
TARGET_TEMP_DIR                     "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build"
TEMP_DIR                            "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build"
TEMP_FILES_DIR                      "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build"
TEMP_FILE_DIR                       "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath/project.build/Distribution-iphoneos/Project.build"
TEMP_ROOT                           "/Users/username/Library/Developer/Xcode/DerivedData/project-dxdgjvgsvvbhowgjqouevhmvgxgf/ArchiveIntermediates/Project Distribution/IntermediateBuildFilesPath"
TEST_AFTER_BUILD                    NO
UID                                 501
UNLOCALIZED_RESOURCES_FOLDER_PATH   project.app    UNSTRIPPED_PRODUCT           NO
USER                         username
USER_APPS_DIR                /Users/username/Applications
USER_HEADER_SEARCH_PATHS     project/libs
USER_LIBRARY_DIR             /Users/username/Library
USE_DYNAMIC_NO_PIC           YES
USE_HEADERMAP                YES
USE_HEADER_SYMLINKS          NO
VALIDATE_PRODUCT             YES
VALID_ARCHS                  "armv6 armv7"
VERBOSE_PBXCP                NO
VERSIONPLIST_PATH            project.app/version.plist
VERSION_INFO_BUILDER         username
VERSION_INFO_FILE            project_vers.c
VERSION_INFO_STRING          "\"@(#)PROGRAM:project  PROJECT:project-\""
WRAPPER_EXTENSION            app
WRAPPER_NAME                 project.app
WRAPPER_SUFFIX               .app
XCODE_APP_SUPPORT_DIR        /Developer/Library/Xcode
XCODE_PRODUCT_BUILD_VERSION  4B110
XCODE_VERSION_ACTUAL         0410
XCODE_VERSION_MAJOR          0400
XCODE_VERSION_MINOR          0410
YACC                        /Developer/usr/bin/yacc
출처: https://samse.tistory.com/entry/XCode-build-variables [고 투 더 멘토:티스토리]

 

Posted by 삼스
Android2011. 4. 22. 12:21

개요
안드로이드 애플리케이션은 빌드가 되면 apk파일로 압축된 바이너리파일로 만들어진다.
apk는 Dalvic byte code로 변환된 자바클래스파일인 dex file들, 바이너리버전의 AndroidManifest.xml, 컴파일된 리소스파일들(resources.arsc)와 컴파일되지 않는 리소스파일들로 구성된다.
 
이클립스에서 개발한다면 ADT 플러그인이 자동으로 관리한다.
이클립스가 아닌 개발환경에서는 프로젝트 디렉토리상의 build.xml을 이용하여 Ant로 빌드할 수 있다.

에뮬레이터나 디바이스에서 동작시키려면 애플리케이션을 반드시 signing해야 한다. 이클립스와 앤트를 이용하여 이 과정도 쉽게 할 수 있다.

다음 그림은 빌드와 실행까지의 과정을 보여준다.
 
빌드프로세스의 상세

빌드프로세스에는 많은 툴들과 프로세스들이 apk파일을 만들기 위해 임시파일들을 생성하게 된다. 이클립스를 사용중이라면 모든 빌드프로세스가 코드를 저장하는 순간 이 과정이 자동으로 이루어진다. 다른 IDE를 사용한다면 이 과정들이 ANT build script가 수행되는 순간 이루어진다. 




일반적인 빌드 프로세스는 아래의 순서로 이루어진다.

1. Android Asset Packaging Tool(aapt)가 애플리케이션의 리소스파일들(AndroidManifest.xml, other XML files)들을 수집하여 컴파일하여 R.java파일을 만들어낸다. 이 파일은 자바코드로 추가되어 컴파일하는데 레퍼런스로 사용된다.
2. aidl tool은 .aidl파일들을 찾아서 모두 java파일로 변환 생성한다.
3. 모든 자바코드, R.java, .aidl파일들이 자바컴파일러에 의해 컴파일되어 .class파일들을 만들어낸다.
4. dex tool이 class파일들을  .dex파일로 변환한다. 3rd party library와 프로젝트에 포함된 모든 .class파일들도 함께 .dex로 변환된다.
5. 모든 컴파일되지 않는 리소스들(이미지등..), 컴파일된 리소스들 그리고 .dex 파일들이 apkbuilder tool에 의해 .apk파일로 패키징된다.
6. .apk파일이 한번 빌드되면, 디버그나 릴리즈 키스토어로 반드시 사인되어야 한다. 그래야 디바이스에 설치가 된다.
7. 최종적으로 릴리즈모드로 사인되었다면 zipalign으로 align을 해야 한다. aligning은 애플리케이션이 디바이스에서 동작할 때
메모리 사용량을 최소한으로 줄여준다.

Posted by 삼스
Android/Porting2009. 4. 5. 16:01
http://www.aesop.or.kr/?document_srl=23030

토요일 오후에 안드로이드 소스코드를 빌드해보았습니다.
생각보단 어렵진 않았지만 역시나 처음하는 거라서
약간은 헤멨습니다.

홈페이지는 http://source.android.com/download 입니다.


주의사항
--------

1. root권한으로 작업할것. 그렇지 않으면 많은 삽질해야함.
2. 디스크 용량이 충분한지 반드시 확인할것.
3. Andriod SDK와 혼동하지 말것.
   여기서 시도하는 작업은 새 기계에 안드로이드 플랫폼을
   올리는것이 목적이지 안드로이드 응용프로그램 개발이 절대아님.

   안드로이드 응용 프로그램을 개발하고져 하는 분들은
   Windows용 Android SDK를 받아서 사용할것.
   http://code.google.com/android

사전준비
--------

1. 리눅스나 MacOS가 설치된 x86호환 컴퓨터 필요
2. 되도록이면 리눅스 권장(우분투 리눅스 권장)
3. 여기서는 리눅스만 설명함(FedoraCore9에서 진행했음)
4. 다음에 열거되는 리눅스 패키지를 설치할것
   하나라도 빠지면 빌드도중 에러 발생함.

git 1.54 이후버전
python 2.4
JDK 5.0, update 12 이후 버전

# apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
# apt-get install valgrind

.bash_profile 파일에 다음을 추가한다음 source .bash_profile

export JAVA_HOME=/usr/java/jdk1.6.0_10
PATH=$PATH:$HOME/bin:/usr/java/jdk1.6.0_10/bin


코드 받아오기
-------------

# curl http://android.git.kernel.org/repo >~/bin/repo
# chmod a+x ~/bin/repo

# mkdir mydroid
# cd mydroid

# repo init -u git://android.git.kernel.org/platform/manifest.git
# repo sync        

sync 가 끝나면 올바른 이메일이 어쩌고 저쩌고 메세지가 나오는데 개발자로
등록을 할게 아니라면 무시할것.


빌드하기
--------

.bash_profile에 export ANDROID_JAVA_HOME=$JAVA_HOME 추가해 준다음
source .bash_profile 하고 나서 cd ~/mydroid 디렉토로 이동한 다음
make 할것.

에러가 나면 에러메세지를 긁어다가 구글에서 검색해 볼것.

필자의 경우 root가 아닌 일반계정으로 시도했다가 헤멨음.
root 계정으로 하는 것이 속편함.

위에 열거한 패키지중에 빠진것이 없는지 반드시 확인할것.

JDK가 제대로 설치되지 않아서 javac, javah 같은 프로그램이 없다는
에러가 발생했었고, gperf 가 설치되지 않은채로 빌드했다가
web관련 코드가 제대로 파싱되지 않아서 오류가 났었고
그이외에는 별다른 오류가 발생하지 않았음.

빌드해본 소감을 말하자면..
커널을 뺀 나머지는 거의 JAVA로 도배되어 있다는점
현재는 Windows에서 빌드할수 없다는거..
커널이 의외로 최신버전이라는 점(2.6.25)
생각보다 싱겁게 빌드가 끝난다는거..
* 고도리님에 의해서 게시물 복사되었습니다 (2008-10-31 21:02)
Posted by 삼스
Android/Porting2009. 2. 2. 14:09

<출처 : http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=6>
 
 Android 전체소스 빌드 방법(Fedora 9)
 Last Modified on 02-Nov-2008



이 글은 RPM기반의 패키지 관리를 채택하고 있는 RHEL/Fedora/CentOS/HaansoftLinux/OpenSUSE 등의
리눅스 배포판을 이용중인 데스크탑 사용자들이 안드로이드의 전체 소스 코드 빌드를 쉽게
접근하기 위하여 작성하였습니다.
 
사실 자주 접속하게 되는 android.git.kernel.org의 웹서버는 Fedora 9서버로 운영되고 있습니다.

*Domain:  android.git.kernel.org
1. OS : Linux  Apache/2.2.9 (Fedora 9) 
2. Last Changed: 27-Oct-2008 12:38:39 GMT
3. IP Address: 130.239.17.12  
4. Netblock Owner: Umea University 
 
*Domain:  source.android.com
1. OS : Linux ( GFE/1.3 WebServer )   * GFE: Google Front End
2. Last Changed: 24-Oct-2008 07:25:02  GMT
3. IP Address: 74.125.47.121 , 66.249.91.121  
4. Netblock Owner: Google Inc. 

또한, 필자가 페도라/우분투를 동시에 사용하고 있는데다가,
칸드로이드 툴체인을 페도라 6, 9을 기준으로 만들어서
이부분으로 인한 안드로이드 full source 개발의 빌드 및 개발에 원할히 참여할수 있기 위함이기도 합니다.
 

구글은 안드로이드 개발을 위하여 우분투를 권장하고 있지만,
다른 리눅스 배포판 사용자들들도 어렵지 않게 안드로이드 개발에 참여할수 있도록 하기위해서
DEB기반의 패키지 관리 방식이 아닌 git방식의 소스컨트롤과 tar소스 설치 방식으로 개발이 되고 있습니다.
(개인적으로 역시 제대로 된 소프트 웨어 설계자[Designer]가 있을떄 뭐가 확실히 다름을 느낍니다.)

따라서, 굳이 레드헷계열 배포판 사용자이기때문에 안드로이드 빌드/개발참여를 위해서
우분투 배포판을 굳이 별도로 설치하여 개발을 하지 않아도 됩니다.

몇년전부터 "미래는 오픈소스를 상용화수준으로  올릴수 있는 기술이 그 기업의 미래 존속과 번영을 유지할
것이다"라고 계속 얘기해왔었는데 이러한 믿음에 구글의 오픈화 큰 시작을 끊어주지 않나 합니다.

필자는 Samsung Sens R60 Plus 노트북에서
안드로이드 전체소스(소스 총 용량: 1.6기가)를 다운로드 하기 위해 무선네트웍 환경에서 2시간 40분의 시간이 소요되었습니다.
그리고나서, 소스를 전체 빌드하기 위해 소요되는 시간은 정확히 1시간 10분이 소요되었습니다.
소요시간은 사용자의 인터넷 속도 환경과 컴퓨터의 사양에 따라 다소 차이가 있을수 있습니다.

만약 필자처럼 "Samsung Sens R60 Plus" 노트북을 사용하고 있는 경우라면,
http://blog.naver.com/invain/80056844207 웹페이지에서
페도라 9 , 우분투 8.10 , winXP DualBoot 사용기를 참고 하면 도움이 되리라 봅니다. 
 
 
1. Fedora 설치용 USB 만들기

지금은 하드웨어 발전이 많이 되어서 기존처럼 시디로 구워서 설치시디를 만든는 것보다
저렴해진 USB 메모리(4기가)를  리눅스 설치용으로 만들면 편리합니다.
http://lubi.sourceforge.net/unetbootin.html 디렉토리에서 UNetbootin(Universal Netboot Installer)프로그램을
이용하면 됩니다. 이 프로그램은 리눅스용 및 윈도우용이 모두 릴리즈 되고 있습니다.
이 프로그램을 이용하여 Fedora , FreeBSD, Frugalware , Linux Mint, Mandriva , NetBSD, openSUSE, Parted Magic,
PCLinuxOS, Ubuntu 등의 다양한 리눅스 배포판 설치용 USB 를 만들수 있습니다.
 
2. 필자의 컴퓨터 환경
 - 필자가 개발용도로 사용하는 노트북의 스펙 정보입니다. 가격대 성능도 중요하지만 개발을 하다보면 여러 물리적 문제들을
   많이 경험하여써  A/S가 제일 원활한 회사의 노트북을 선호하는 편입니다.
 - PC Hardware Spec: Samsung SENS R60 Plus (Core2 Duo T5750 2.0Ghz / 2G DDR2 )
        . cpu MHz   : 1,000.000
        . cache size : 2,048 KB
        . bogomips   : 3,989.85
 - Desktop OS: Fedora Distribution 9 ( Linux Kernel 2.6.27-0.352.rc7.git1 )
 - Network Speed: Wireless Controller (비쏀 통신 서비스) -무선 주파수 시그널 52~78%

 
3. Fedora 9 리눅스 배포판 설치.
 
   - Fedora 9  iso 이미지를 다운로드하도록 합니다.
      그리고나서, xcdroast or k3b와 같은 리눅스 시디굽기 프로그램으로 리눅스 설치 CD를 만듭니다.
      ftp://ftp.kaist.ac.kr/fedora/linux/releases/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso
      http://download.fedoraproject.org/pub/fedora/linux/releases/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso
 
   - 구운 리눅스 시디를 이용하여 자신의 개발용 데스크탑 또눈 노트북에 페도라9 리눅스를 설치합니다.
 
4. Proxy Server을 사용해야 하는 회사의 경우 프록시 설정을 하도록 합니다.
 - 일반적으로 회사의 경우에는 보안 및 사용자 관리를 위해 프록시를 도입하는 경우가 많습니다. 이경우에는 아래와 같이
   프록시 설정을 통해 파일들을 정상적으로 다운로드 할수 있는 개발환경을 갖추어야 합니다.
 
fc9#> vi /etc/profile ( or ~/.bashrc )
export http_proxy=http://proxyserver:proxyport
fc9#> source /etc/profile
fc9#>
fc5#> vi /etc/wgetrc
http_proxy = http://proxyserver:proxyport
ftp_proxy  = http://ftpid:password@proxyserver.port/
use_proxy  = on

 
5.   Root 보안을 위해 sudo 설정 및 SSH  서비스 설정하기
   - 일반 사용자 ID으로 작업을 수행하다가, root권한이 필요한 경우에만 sudo명령을 이용하여
      개발PC의 보안을 도모하는 것이 좋습니다.
 
    invain$> cd /etc/
    invain$> su -
           root pass:******
    root#> chmod   660 /etc/sudoers
    root#> vi /etc/sudoers
       # Allow root to run any commands anywhere
       root    ALL=(ALL)       ALL
       yourid  ALL=(ALL)       ALL
    root#> chmod 440 /etc/sudoers
    root#> su - yourid
    invain$> 

 
  - 개발시에는 SSH 접속통해 개발이 하는 것이 편리합니다.
    ssh 설치 방법은 다음과 같습니다.
 
    invain$> sudo yum install openssh*


 
6. 안드로이 설치 환경 준비
 
    - 기본적으로 다음과 같은 package를 인스톨하여야 합니다.
 
       invain$> sudo yum install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl wget
       invain$> sudo yum install valgrind
 
    - 안드로이드는 Phython 2.4 이상이 요구됩니다.
       Fedora 9에는 이미 Phython 2.5.1버젼이 기본적으로 설치되어 있기 때문에 이 부분은 skip하셔도 됩니다.
       invain$> sudo yum install python*
 
    - JDK 5.0(1.5) Update 12 또는 그 이상이 요구됩니다.
       (Please-install-JDK-5.0,-update-12-or-higher,-which-you-can-download-from-java.sun.com )
       이를 위해선 다음과 같이 설치하시면 됩니다.
 
       invain$> sudo yum install java-* java-1.6.0-openjdk-devel*
       invain$> sudo yum install glibc*
 
    - Git 1.5.4 또는 그 이상 버전, 그리고 Repo가 요구됩니다.

       invain$> mkdir ~/bin
       invain$> cd ~/bin

 
       다음으로 git(Source Control Tool)와 repo(Shell SheScript File)를 설치입니다.
 
       invain$> sudo yum install git git-*    
     
       invain$> cd ~/bin/
       invain$> wget http://android.git.kernel.org/repo
       invain$> chmod a+x ~/bin/repo
 
       invain$> mkdir ~/bin/mydroid
       invain$> cd ~/bin/mydroid
 
       invain$> git config --global user.email "invain@naver.com" <-- 여러분의 이메일주소
       invain$> git config --global user.name "Lim,GeunSik"   <---- 여러분의 영문성명
       invain$> repo init -u git://android.git.kernel.org/platform/manifest.git
  
       여기까지 실행하시면,
       "repo initialized in /home/<your_id>/mydroid" 란 메시지가 콘솔 화면에 출력되어야 합니다.
       이제 환경설정은 모두 준비 완료되신 겁니다.
 

7. 안드로이드 전체 소스(1.6G) 다운로드하기
 
     -  아래과 같이 수행하면 안드로이드 전체 소스를 git를 통해서 다운로드 하게 됩니다.
       필자의 경우 2시간 40분정도의 시간이 소요되었습니다. 다운로드된 소스를 #>tar cjf 명령으로 압축을
       하면 평균적으로 700M정도의 용량이 됩니다.
        ( 2008년 10월 26일 23시 기준으로 Android's GIT 최근  태그 버젼은 1.0.6 이었다. )
 
       invain$> time repo sync

     -  ~/bin/mydroid/.repo/manifests/default.xml  파일에 정의되어 있는 아래의 소스파일들을 다운로드 하게 됩니다.
        여기서 한가지 주의할것은 회사에서 접속하는 경우 http://builds.nightly.webkit.org 사이트 접속이 방화벽으로
        차단되어 있는 경우가 종종 있었습니다. 접속시에 Forbidden(You don't have permission to access / on this server.)
        메세지가 웹브라우저 보이시면 정상적인 접근이 되시는 것입니다.
   
 
   01) http://android.git.kernel.org/pub/bluez-%version%.tar.gz
   02) http://android.git.kernel.org/pub/clearsilver-%version%.tar.gz
   03) http://android.git.kernel.org/pub/dbus-1.0.2.tar.gz
   04) http://android.git.kernel.org/pub/dropbear-%version%.tar.gz
   05) http://android.git.kernel.org/pub/emma-%version%-src.zip
   06) http://android.git.kernel.org/pub/expat-%version%.tar.gz
   07) http://android.git.kernel.org/pub/freetype-%version%.tar.bz2
   08) http://android.git.kernel.org/pub/giflib-%version%.tar.gz
   09) http://android.git.kernel.org/pub/icu4c-%version%-src.tgz
   10) http://android.git.kernel.org/pub/iptables-%version%.tar.bz2
   11) http://android.git.kernel.org/pub/jpegsrc.v%version%.tar.gz
   12) http://android.git.kernel.org/pub/libpcap-%version%.tar.gz
   13) http://android.git.kernel.org/pub/libpng-%version%.tar.gz
   14) http://android.git.kernel.org/pub/libxml2-sources-%version%.tar.gz
   15) http://android.git.kernel.org/pub/nc%version%.tgz
   16) http://android.git.kernel.org/pub/netperf-%version%.tar.gz
   17) http://android.git.kernel.org/pub/openssl-%version%.tar.gz
   18) http://android.git.kernel.org/pub/oprofile-%version%.tar.gz
   19) http://android.git.kernel.org/pub/ppp-%version%.tar.gz
   20) http://android.git.kernel.org/pub/qemu-%version%.tar.gz
   21) http://android.git.kernel.org/pub/safe-iop-%version%.tgz
   22) http://android.git.kernel.org/pub/sqlite-amalgamation-%version%.tar.gz
   23) http://android.git.kernel.org/pub/strace-%version%.tar.bz2
   24) http://android.git.kernel.org/pub/tagsoup-%version%-src.zip
   25) http://android.git.kernel.org/pub/tcpdump-%version%.tar.gz
   26) http://android.git.kernel.org/pub/tinyxml_%version%.tar.gz
   27) http://android.git.kernel.org/pub/wpa_supplicant-%version%.tar.gz
   28) http://android.git.kernel.org/pub/zlib-%version%.tar.bz2
   29) http://builds.nightly.webkit.org/files/trunk/src/WebKit-%version%.tar.bz2


  - ~/bin/mydroid/.repo/projects/ 디렉토리에는 git으로 가져오기 위한 소스파일들에 대한
     git포맷의 리스트가 존재합니다.


 1) bionic.git - modified netbsd c library
 2) bootloader - legacy.git bootloader
 3) build.git -  build script
 4) dalvik.git - stacked based java virtual machine
 5) development.git -  files for development
 6) external (37) - aes.git , dropbear.git ,fdlibm.git ,iptables.git , libpng.git , openssl.git ,
    safe-iop.git , tagsoup.git , apache-http.git , elfcopy.git , freetype.git , jdiff.git ,
    oprofile.git , skia.git , tcpdump.git ,bluez.git , elfutils.git , gdata.git , jhead.git  ,
    netcat.git , ping.git , sonivox.git , tinyxml.git , clearsilver.git , emma.git , giflib.git ,
    jpeg.git , netperf.git ,  ppp.git , sqlite.git  ,  tremor.git , dbus.git , esd.git , libxml2.git ,
    googleclient.git , libffi.git  ,  neven.git ,  protobuf.git , srec.git ,  webkit.git ,
    dhcpcd.git , expat.git , icu4c.git  , libpcap.git , opencore.git , qemu.git , strace.git



 
8. 안드로이드 빌드(1.8G) 하기


       vi 명령으로 로 ~/.bashrc 에 다음과 같이 android 개발을 위한 환경변수를 추가합니다.
       (사실 아래부분은 필요하시지 않으면 않하셔도 됩니다. )
 
       invain$> vi ~/.bashrc
        #export LANG=c
        export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0
        export PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/home/<your_id>/bin:$PATH
        export ANDROID_JAVA_HOME=$JAVA_HOME

       환경설정을 반영하기 위해 다시 로그인 하시던가 아니면 터미날을 종료했다 다시 실행해야 합니다.

       아니면, 그냥 아래의 명령을 실행하면 됩니다.
       csh의  경우엔 invain$>> source ~/.cshrc  를 실행하면 되고,
       bash의 경우엔 invain$>> source ~/.bashrc 를 실행하면 됩니다.

 
      invain$> sudo yum install zlib* libncurses*
      invain$> time make 

 
9. 빌드 결과 확인하기
 
       out 디렉토리에 build된 안드로이드 full package가 위치하게 됩니다.
 
       invain$> cd ~/bin/mydroid/out
       invain$> ls ./
       invain$> du -sh ./mydroid/
                 1.8G    ./mydroid/
       invain$#> tar cjf mydroid.20081027.tar.bz2 ./mydroid
       invain$> ls -al mydroid.20081027.tar.bz2
                 760M
       invain$> ls
       
         Makefile  bootloader  dalvik         external     hardware  packages  recovery
         bionic     build        development  frameworks  kernel     prebuilt    system

       invain$>


10. CPU Core별로 커널소스를 빌드하기

     - 구글은 안드로이드 폰을 상용화하기 위해서 Goldfish는 Linux 2.6.21으로 2007년 6월 29일(금) 최종 개발작업을
        완료하였고, 퀄컴 MSM7XXX 은 Linux 2.6.23으로 2007년 11월 7일 최종 개발 작업을 완료하였습니다.


     - 커널소스의 해당 아키텍쳐별 환경파일은 ./kernel/arch/arm/configs/ 디렉토리에 위치합니다.
 
     - How to build 75XX Core for ARM V6[arm1136] based Real Target
        /home/invain/bin/mydroid/kernel/arch/arm/mach-msm/ 에 코어 파일이 위치한다.
 
        invain$> cd ~/bin/mydroid/kernel
        invain$> make distclean
        invain$> make msm_defconfig ARCH=arm
        invain$> make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
 
     - How to build  Virtual Core Goldfish for QEMU Based Android Emulator
         /home/invain/bin/mydroid/kernel/arch/arm/mach-goldfish/ 에 코어 파일이 위치한다.

        invain$> cd ~/bin/mydroid/kernel
        invain$> make distclean
        invain$> make goldfish_defconfig ARCH=arm
        invain$> make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-



11. 빌드된 이미지를  Emulator에 적용하기

    - 빌드된 이미지( system.img , data.img, ramdisk.img)들은 아래의 디렉토리에 위치합니다. 
       ~/bin/mydroid/out/target/product/generic/ramdisk.img
       ~/bin/mydroid/out/target/product/generic/system.img
       ~/bin/mydroid/out/target/product/generic/userdata.img

    - 빌드된 이미지를 실행하는 방법은 2가지가 있습니다. 
 
    - 첫번째 방법은  
       ./android-sdk-linux-1.0_r1/tools/lib/images/ 디렉토리에 위의  위의 이미지(*.img)를  복사하시면 됩니다.
       그리고나서, ./android-sdk-linux-1.0_r1/tools/emulator 을 실행하며, 안드로이드 개발환경이 보이게 됩니다.  
      
    - 두번째 방법은 
./emulator -kernel <file> -ramdisk <file>  -image <file> -initdata <file>  으로 실행을 하면 됩니다.
          
    - 세번째 방법은
   
$ cd ~/bin/mydroid/out/host/linux-x86/bin
$ mkdir -p lib/images
$ cd lib/images
$ ln -s ~/bin/mydroid/out/target/product/generic/ramdisk.img  ramdisk.img
$ ln -s ~/bin/mydroid/out/target/product/generic/system.img   system.img
$ ln -s ~/bin/mydroid/out/target/product/generic/userdata.img userdata.img
$ ln -s ~/bin/mydroid/prebuilt/android-arm/kernel/kernel-qemu kernel-qemu
$ ln -s ~/bin/mydroid/development/emulator/skins skins
$ cd ../../
$ ./emulator -wipe-data
 
    개발시에는 3번째 방법이 효율적이고 편리하였습니다.
Posted by 삼스