전체 글

전체 글

    Build .app file for Simulator using fastlane

    시뮬레이터에 업로드 하기 위한 .app 파일 빌드 build_app( scheme: options[:scheme], project: config[:project], # configuration: build_configuration, clean: true, derived_data_path: options[:output], skip_package_ipa: true, skip_archive: true, destination: "generic/platform=iOS Simulator", )

    아이폰 시뮬레이터 Gif로 녹화 하기

    아이폰 시뮬레이터 Gif로 녹화 하기

    시뮬레이터 상단 카메라 버튼 alt를 누르면 영상으로 바뀐다alt 클릭으로 녹화시작 녹화 완료 후 우측하단에 미리보기가 뜨는데 여기에 우클릭 후 save as Animated Image 클릭

    unbuntu ntfs 외장 하드 큰 파일 / 폴더 읽기 / 쓰기 느릴때 마운트

    읽기 속도확인 sudo hdparm -t /dev/sdb1 30mb/s 인데 파일 큰폴더는 들어가지도 못함 /dev/ 에 폴더를 만들어서 big_writes 모드로 마운트 sudo mkdir /dev/elements sudo mount --bind -o big_writes /media/minho/Elements /dev/elements

    Tistory 로딩중입니다. 무한로딩 / 하얀 화면

    tistory에 글쓰기 혹은 관리페이지에 진입하려 했을때 하얀 화면을 보거나 로딩중입니다. 이라는 텍스트만 보인다면 ADBlock 광고차단 이 페이지를 막고있을 가능성이 큽니다 광고 차단을 일시중지하고 새로고침하면 들어가집니다.

    안드로이드 invalid android_key_hash or ios_bundle_id or web_site_url

    안드로이드 invalid android_key_hash or ios_bundle_id or web_site_url

    Flutter 로 카카오 로그인 구현 후 잘되서 배포했는데 QA할때 invalid android_key_hash 가 뜰 경우에 삽질을 했는데도 불구하고 어디가도 기록을 찾을 수가 없다. 알고보니 내부 테스터용 해시 키가 따로 있기 때문인데 구글 플레이스토어>앱>설정>내부 앱 공유>내부 테스트 인증서 에서 SHA-1 인증서를 사용해서 키를 생성하면 된다 기존에 구글 앱 인증서로 hash key를 만들었듯이 터미널에 서 바로 생성해서 카카오에 추가해준다 echo XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX | xxd -r -p | openssl base64 출력 된 값을 카카오에 추가해주자

    안드로이드 keystore 비밀번호 변경

    Android keystore password change keytool -storepasswd -keystore "key.jks" keytool -keypasswd -alias key -new newpass -keystore key.jks keytool -storepasswd -keystore key.jks

    [Flutter] nextFocus가 이상한데로 이동할때

    TextFormField Focus가 다음으로 넘어갈때 그냥 node.nextFocus() 하거나 textInputAction: TextInputAction.next 를 이용하면 포커스가 아이콘으로 이동해서 매번 삽질을 하게됩니다. BuildContext extension을 만들어서 해결하면 잘됩니다. TextFormField( hintText: "아이디", onEditingComplete: () => context.nextEditableTextFocus(), validator: (value) { return value == null || value.length < 6 ? "아이디를 6 글자 이상으로 해주세요" : null; }, ), extension Utility on BuildContext { vo..

    Flutter iOS Fastlane 설정

    Flutter iOS Fastlane 설정

    안드로이드랑 버젼을 맞추기 위해 increment_build_number은 삭제했습니다. http://appleid.apple.com/ 보안>앱암호>앱암호 생성 에서 발급받은 키 설정 .env FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD="xxxx-xxxx-xxxx-xxxx" 패스트래인 설정: 빌드 (빌드 어차피 .ipa로 해야되서 flutter build 해도 다시 돌려야됨) 앱스토어 업로드 완료/에러시 슬랙 Fastfile default_platform(:ios) platform :ios do def on_success() slack( message: "App successfully built", #uploaded to iTunesConnect.", success:..

    Firebase 이벤트 로깅 놓치기 쉬운 유의사항

    firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event FirebaseAnalytics.Event firebase.ml.naturallanguage.translate firebase.google.com 앱당 최고 500개 events event 개당 최대 25 파라미터 event name 최대 40글자 (알파벳, 언더스코어"_" 사용 가능) 유저 행동과 네이티브 코드에 연결될만한 이벤트가 정의하기 편함 예: click_button { view: "LoginViewController" name: "Login" } design system이 있다면 swizzling 을 통해 모든 행동에다가 ..

    Swift 팀원 및 원격 빌드를 위한 cocoapods 프레임워크 캐싱

    팀은 없지만 잦은 빌드로 인해 Jenkins + bitbucket + fastlane으로 원격 빌드를 구성하고 자주 Release build를 배포하기 위해 빌드 시간의 개선이 필요했습니다. 기존에 빠른 빌드를 위해 Carthage의 framework를 썼지만 Xcode12로 넘어오는주에 급하게 동작을 안해서 Cocoapods로 다시 옮겼습니다. Cocoapods plugin중에 그랩에서 만든 다음 플러그인을 사용합니다. github.com/grab/cocoapods-binary-cache 명령어와 아래에서 Podfile만 참고해도 잘작동합니다 github.com/grab/cocoapods-binary-cache/blob/master/PodBinaryCacheExample/Podfile 명령어 prebu..

    change git remote

    1. Remove remote git remote remove origin 2. Add in new remote git remote add origin https://repository.url

    cocoapods-rome does not specify a Swift version and none of the targets

    [!] Unable to determine Swift version for the following pods: - `HGCircularSlider` does not specify a Swift version and none of the targets ... integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod. - `SwiftDate` does not specify a Swift version and none of the targets ... integ..

    Swift Lint yml

    https://github.com/realm/SwiftLint Add SwiftLint pod pod &#39;SwiftLint&#39; Add run script phase (use autocorrent for swiftlint to autocorrect files) ${PODS_ROOT}/SwiftLint/swiftlint autocorrect ${PODS_ROOT}/SwiftLint/swiftlint Add .swiftlint.yml in project root folder opt\_in\_rules: - explicit\_type\_interface #- empty\_count #- missing\_docs disabled\_rules: - line\_length - trailing\_whites..

    AWS Simple Notification Service p12

    Exporting .p12 APNS(Apple Push Notification Service) file for AWS SNS Notification The help link in SNS to AWS Document is useless they only provide how to create cem, pem file which they don’t use Step-by-step guide Getting the p12 file for update Create Apple Push Services Certificate from apple. Download and install Certificate. From KeyChainAccess.App export Apple Push Services to cert.p12 a..

    Safe area / layout by code for iPhone X, XS, XR, XS Max

    simple fix let SAFE_TOP: CGFloat = UIScreen.main.applicationFrame.height >= 792 ? 22.0 : 0 let SAFE_BOTTOM: CGFloat =UIScreen.main.applicationFrame.height >= 792 ? 34.0 : 0 for ipad use below struct Constraints { static var STATUS_HEIGHT: CGFloat { if #available(iOS 11.0, *) { let window: UIWindow = UIApplication.shared.windows[0] let safeFrame = window.safeAreaLayoutGuide.layoutFrame return saf..

    Underline text / title in UIButton

    use NSAttributedString to underline the string itself let btShop: UIButton = UIButton() btShop.frame = CGRect(x: 40, y: 240, width: 320, height: 50) let attributedString: NSAttributedString = NSAttributedString(string: NSLocalizedString("Buy", comment: ""), attributes:[ NSAttributedString.Key.font : UIFont.systemFont(ofSize: 16.0), NSAttributedString.Key.foregroundColor : UIColor.gray, NSAttribu..

    rbenv install stuck at installing openssl

    rbenv install 2.7.1 seems like it&#39;s stuck try this, you will see the logs that it&#39;s working rbenv install -v 2.7.1

    iOS10 firebase crashlytics showing NSInternalInconsistencyException

    oastackview NSInternalInconsistencyException iOS 10 crash in firebase remove stackview.addArrangedSubview(innerView) change to let stackview: OAStackView = OAStackView.init(arrangedSubviews: allIndicator)