iOS 빌드 중 에러가 발생했다. 

에러내용 : Provisioning profile failed qualification

Profile doesn't match the entitlements file's values for the application-identifier and keychain-access-groups entitlements.

해결방법 : Provisioning profile을 제거

 

개발자들의 지식인인 StackOver Floew 를 참고해보니 Xcode버전을 다른걸 설치해서 다시 배포하라고 답변이 달려있었다. 

당연히 다운로드는 시간도 걸리고 번거로웠고, 혹시나 싶은 마음에 Provisioning profile을 제거해봤다. 

 

다행히 다시 빌드를 한 후 에는 정상적으로 동작이 되어 문제가 해결됐네요~

배포과정 중 원인모를 이슈가 많아 혹시나 싶어 공유를 해봅니다. 

 

Provisioning Profiles 경로 : 

/Users/{userName}/Library/MobileDevice/Provisioning Profiles/

 

경로 이동 방법 : 

Finder에서 command(또는 cmd) ⌘ + shift ⇧ + G

를 누르면 경로를 넣을 수 있는 화면이 나옵니다.

여기에 위의 경로 복사 후 유저이름만 변경해서 넣으면 끝. 

 

Provisioning Profiles 폴더는 지워도 계속 생성되기때문에 부담없이 지워도 상관없습니다. 

최초 참고했던 글 : https://stackoverflow.com/questions/62586293/xcode-11-provisioning-profile-failed-qualification

* Xcode버전을 다른걸 받아 빌드하랬던 글. 혹, 위의 방법으로 해결이 안된다면 참조. 

 

삭제 후 정상적으로 업로드가 진행되었고 앱에도 큰 문제는 발생하지 않았다!

그럼 한명이라도 도움이 됐길. 

누가 로그켓 안보이는 문제(logcat empty)


누가 업데이트 후 로그켓이 안보이는 문제가 발생되어 확인해 보니 

ADT를 업데이트를 해야 정상 동작되네요.



방법은 2가지가 있네요.

1. bat을 실행하는 방법 

"sdk/tools/monitor.bat"

다운로드 받은 SDK폴더에서 위의경로로 들어가 monitor.bat 을 실행시키면 

따로 창이 나타나고 로그가 정상적으로 보시됩니다. 

이때, sdk는 최신버전으로 업데이트 해둔 상태여야합니다. 


open the directory "sdk folder/tools/"

and double click monitor.bat


2. adt업데이트

https://github.com/khaledev/ADT/releases

저의경우 최신버전인 (  ADT-24.2.0-20160729 ) 을 다운받은후 이클립스에 업데이트 해주었네요 .

업데이트 방법은 위의 파일을 다운받은후 

압축은 풀지마시고 이클립스를 실행시킵니다.

menu Help > Install New Software... > Add > Archive

의 순서대로 눌러 다운받은 파일을 선택 후 업데이트를 진행하면됩니다.


https://github.com/khaledev/ADT/releases

Download the zip file then in Eclipse menu Help > Install New Software... > Add > Archive... Just pick the downloaded zip and do the rest of the install process.




안드로이드 SSL인증서 오류 

 

참조사이트 : https://developer.android.com/training/articles/security-ssl

 

에러내용 : 

 E Conscrypt: ------------------Untrusted chain: ----------------------

 E Conscrypt: == Chain0 ==
 E Conscrypt: Version: 3
 E Conscrypt: Serial Number: 1

 

원인 : 

 

중개(체인) 인증서를 정상적으로 확인 하지 못해 신뢰하지 못하는 인증기관으로 인식

웹상에서는 문제없이 동작하나 모바일단말에서는 

서버 인증서의 발급자를 확인하지 못하는 경우가많아 중개(체인) 인증서가 필요함.

 

해결방법

1. 인증서 재발행 

>https://www.ibm.com/support/knowledgecenter/ko/SSHS8R_7.1.0/com.ibm.worklight.installconfig.doc/admin/c_ssl_config.html#c_ssl_config__self-signed_certs_vs_self-signed_CAs

 

위의 링크를 참조하여 제시된 해결방법에 따라 적용.

 

 

위과 수정전 아래가 수정 후
 
 

2. 앱상에서 해당 인증서를 가지고 직접 인증 

CertificateFactory cf = CertificateFactory.getInstance("X.509");

Certificate ca;

 

String certificateString = "-----BEGIN CERTIFICATE-----\n" +

                            "MIIG3DCCBcSgAwIBAgIMCtlb/Nurv8TlrjaNMA0GCSqGSIb3DQEBCwUAMGYxCzAJ\n" +

                            "BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTwwOgYDVQQDEzNH\n" +

                            "nlc/e3o5NtzmUPuuEnfbxPunmNX9w6v0WWppv8kkT3s=\n" +

                            "-----END CERTIFICATE-----";

ByteArrayInputStream derInputStream = new ByteArrayInputStream(certificateString.getBytes());

ca = cf.generateCertificate(derInputStream);

 

String keyStoreType = KeyStore.getDefaultType();

KeyStore keyStore = KeyStore.getInstance(keyStoreType);

keyStore.load(null, null);

keyStore.setCertificateEntry("ca", ca);

 

registry.register(new Scheme("https", new MySSLSocketFactory(keyStore), httpSport));

 

---------MysslSocketFactory------

 

class MySSLSocketFactory extends SSLSocketFactory {

    SSLContext sslContext = SSLContext.getInstance("TLS");

 

    public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {

        super(truststore);

 

        TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");

        tmf.init(truststore);

 

        sslContext.init(null, tmf.getTrustManagers(), null);

    }

 

    @Override

    public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {

        return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);

    }

 

    @Override

    public Socket createSocket() throws IOException {

        return sslContext.getSocketFactory().createSocket();

    }

}

 

일반적으로 인증서 파일을 저장하여 파일로 읽어서 사용하는데, 별 차이는 없어 보여 String을 직접 넣었네요. 

2번째 방법 보단 인증서교체를 통한 방법이 좋습니다. 

 

그럼 도움이 됐길. !

 

맥북 텍스트, 동영상 파일 나누기 

맥북 터미널을 이용해서 텍스트와 동영상 파일을 나누는 방법에 대해 준비했습니다.

간단하게 터미널을 실행 시킨 후 아래의 명령어를 입력 하면 됩니다. 

split -b 용량 대상파일 분할할이름

터미널 명령어고, 위와 같이 쓰면됩니다. 

예시) 

split -b 1024000 response-export new_response_

(1024000는 1메가 입니다)

 

위의 스샷 보시면 response-export파일이 1메가씩 나눠진게 보이실거에요!