[Twitter Flock Seoul 정리] Digits : 핸드폰을 이용한 사용자 인증

트위터 플랫폼 설명을 들으러 갈 가면서 크래시리틱스 배워올 생각만 했는데, Digits는 의외의 수확이었다.

이게 트위터쪽에서 대신 휴대폰을 이용해서 사용자 인증을 해주는건데, 전에 이걸 하려고 알아봤을 땐 문자 메시지를 보내는게 비용이 들고 점점 쌓이면 무시못하겠다 싶어서 접었었다.

sign up

근데 이걸 무료로 해준다고 한다. 게다가 여러나라들의(216국가) 인증과 자동으로 로컬라이징을(32언어) 해준다고 하니 … 대인배라 안할 수가 없다.

이걸 어떻게 무료로 하냐.. 당신들 비용이 들지않겠냐라고 물어봤는데, 이미 트위터는 세계적으로 SMS 인증을 위한 인프라가 구축되어있으니 개발자를 돕기 위해 제공한다라는 답변을 들었다.

그리고 사용자의 휴대폰 번호가 변경될 경우도 지원이 된다고 들은 것 같은데, 이건 어떤 로직인지 좀 더 알아봐야 할 듯 싶다.

또 한가지는 친구들을 추가할 수 있도록 기능을 제공해준다. 이건 서로 다른 앱들간에 섞이지 않도록 조심한다고 했던거 같다.

friends

사용방법은 일단 Fabric을 적용하면 그 안에서 되는 모양이다. 도큐먼트를 보면 SDK에서 제공해 주는 버튼을 뷰에 올리거나, 커스텀한 버튼을 쓰고 싶으면 action 메소드 부분에 인증을 요청하는 코드를 넣는 방식으로 하면 된다.

인증이 성공하고 나면 session 오브젝트를 받게 되는데, 세션 도큐먼트를 보면 안에 무슨 정보가 있는지 나와있다.

authToken
폰 번호
user id

인증하는 페이지는 커스텀을 할 수 있는데, 라벨 색을 변경한다는 식으로 할 수 있다. 아래 이미지가 커스텀 도큐먼트 페이지에서 보여주는 예시의 결과 화면이다.

custom

참고
http://get.digits.com/
https://dev.twitter.com/twitter-kit/ios/digits
https://dev.twitter.com/twitter-kit/ios-reference/dgtsession

[Twitter Flock Seoul 정리] Fabric : Tool 패키지

작년에 트위터에서 Fabric이라는 Tool 패키지를 만들었다. 그리고 소개를 하는 세계 투어를 시작한 모양이다.
그 Tool 패키지에는 크래시리틱스(트래킹), Digits(사용자 인증), Twitter Kit, MoPub(수익성) 들의 기능이 있다.

function

일단 Fabric을 프로젝트에 적용하는 시연을 봤을 때, 크래시리틱스랑 비슷하다. 뭣보다 좋은건  원하는 기능만 골라서 설치를 할 수 있다는 점이다. 이러면 안드로이드 같은 경우는 method limit 걱정을 덜 할수 있겠다 라고 Fabric 소개 페이지에서 말했다.

install

크래시리틱스같은 적용방법은 쉬워서 좋다. 코드도 자동으로 만들어주고 하니 … 대신 위치가 좀 엉망인 때도 있어서 한번 고쳐야 할 때도 있긴 하다.

좀 놀란건 코드를 자동으로 만들어 줄 때 swift로도 해줬다는 거다. 의외로 샘플코드가 swift인 경우가 많기도 했고.. 자동으로 코드를 만들어 줄 때 프로젝트가 swift 혹은 objective-c로 되어있는지 감지하는지 여부는 좀 궁금하다.

fabric의 지원되는 기능 중에서 골라서 쓸거면 Fabric.with()에 원하는 기능만 정의하면 된다. 밑에는 안드로이드 샘플 코드이다.

android

아까 세션에선 아이폰도 비슷하게 설정했던거 같은데, 설명 페이지에는 그렇게 나와있지 않다. 일단 좀 더 Fabric 도큐먼트 페이지를 보거나 하면 찾을 수 있겠지 싶다.

참고
Fabric : https://get.fabric.io/
도큐먼트 : https://dev.twitter.com/fabric/overview

java.security.InvalidKeyException: Unsupported key size: 에러

자바에서 AES256으로 암호화를 하려는데 아래와 같은 에러가 나왔다.


java.security.InvalidKeyException: Unsupported key size:

java aes

찾아보니 AES는 128, 192, 256 비트 키 길이를 허용하는데, AES256이니까 결국 키가 32바이트여야 한다는 거다. 그래서 코드를 찾아보니 키 길이가 12바이트여서 났던 에러였다.

참조 : http://stackoverflow.com/questions/10831801/getting-exception-java-security-invalidkeyexception-invalid-aes-key-length-29

Android Studio Maven Dependency Source Download

결론부터 말하면 추후에는 이 기능이 추가될지도 모르지만… 지금은 불가능하다.

원래 idea 플러그인으로 아래처럼 설정하면 다운로드가 가능해야 하지만 안드로이드 스튜디오는 안되는 모양이다.

apply plugin: 'idea'
idea {
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}

결국 그냥 수동으로 Attach Source로 보게 설정했다.

참고 : https://code.google.com/p/android/issues/detail?id=59220

Android Studio Proguard 에러 해결하기

외부 라이브러리를 사용하다보면 종종 있는 일인거 같은데, apk를 만들다가 proguard쪽에서 에러를 낼 때가 있다.

progaurd error

그럴땐 에러메시지가 알려주는대로 ‘-dontwarn’ 설정을 해주면 되는데, 프로젝트에 보면 “proguard-project.txt” 파일이 있다.

proguard_1

해당 클래스를 추가하고 다시 빌드를 하면 apk가 만들어지는것을 확인할 수 있다.

비공개 Maven repository를 이용해서 안드로이드 라이브러리 받아오기

라이브러리를 개인적으로 만들어서 공개되지 않은 메이븐 repository로 올려야 할 때가 있다. (ex. 회사 라이브러리)
원래는 필요하다면 비공개 메이븐 repository를 만들려했지만, 이미 구성된 것이 있으므로, build 설정만 해서 사용했다.

apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://nexus.localhost:8080/content/repositories/snapshots") {
                authentication(userName: "admin", password: “PASSWORD")
            }
            pom.version = "1.0-SNAPSHOT"
            pom.artifactId = "library-project"
            pom.groupId = "com. library
"
        }
    }
}

그렇게 빌드를 설정한 후 Gradle > uploadArchives빌드를 하면 메이븐 repository에 업로드가 된 것을 볼 수 있다.

uploadArchive_build

build

upload

가져올 때 build 설정

apply plugin: 'android'
apply plugin: 'maven'

repositories {
    maven {
        url "http://nexus.localhost:8080/content/repositories/snapshots/"
        credentials {
            username 'admin'
            password ‘PASSWORD'
        }
    }
}

… 

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile ('com.lib:library-project:1.0-SNAPSHOT@aar')
}

참고

http://stackoverflow.com/questions/22852611/maven-uploadarchives-aar-to-gitlab-maven-repository
http://blog.gaku.net/uploading-aar-to-a-private-maven-repo-from-gradleandroid-studio/
http://www.vandalsoftware.com/post/52468430435/publishing-an-android-library-aar-to-a-maven

호스팅 하기

http://cemerick.com/2010/08/24/hosting-maven-repos-on-github/
http://www.sigil.org/coding/hosting-a-private-maven-repository-using-github/

Android L Developer Preview 주목할만한 것만 ..

블로그에 간략히 나와있는데 주목할만한 것만..

Material design

ART가 시스템 기본으로 되면서 뷰랑 애니메이션 쪽을 강화하는 느낌인데, 관련 API들도 생겼다.
그리고 polymer라는 이름의.. 새로운 크로스플랫폼 라이브러리로 보이는데, 웹 언어로 앱을 만드나보다.

http://www.polymer-project.org/

 

Project Volta

베터리를 효율적으로 쓰게 하려고 API를 제공

Battery Historian – power를 어떻게 쓰는지 시각화한 새로운 tool

bettery bettery2

job scheduler API – 베터리를 최소한으로 쓰게 하기위해 상황에 따라 어떤 백그라운드 job을 실행할지 선택할수 있는 모양이다.

job scheduler

 

Android Runtime (ART)

L 부터는 System Default

 

64-bit support

안드로이드 스튜디오 디버깅

Breakpoint 리스트 보기 & 설정하기

브레이크 포인트 오른쪽 클릭

break point

More 클릭

more

디버깅 아이콘

restart 앱 다시 시작
object tree object tree 보기
evaluate evaluate expression
next line 다음 줄로 넘어가기
step in 메소드 안으로 들어가기
step out 현재 메소드 나가기
run 이어서 실행하기

Jump to Source 누르면 해당 소스를 볼 수 있음

jump

스크린 캡쳐 하기

1. 디버그 모드로 실행
2. 6: Android의 스크린 캡쳐 클릭

cpap ture

Frame screenshot 선택에 따라 스크린 샷 프레임의 유무를 선택할 수 있다.

frame

비디오 녹화하기

1. 디버그 모드로 실행
2. 6: Android의 녹화하기 버튼 클릭

video

레퍼런스 : https://developer.android.com/sdk/installing/studio-debug.html

이클립스 프로젝트를 안드로이드 스튜디오 프로젝트로 바꾸기

안드로이드 스튜디오에서 import하면 알아서 바꿔주는 줄 알았는데, 계속 에러나서 보니 아니었나보다.
역시 레퍼런스의 중요함을 다시 되새기며 ..

안드로이드 스튜디오에서 작업을 하려면 일단 먼저 이클립스에서 Export를 해야 한다. 그래야 Gradle 빌드 파일이 만들어진다. 그다음 안드로이드 스튜디오에서 import를 하면 된다.

Export from eclipse

1. ADT플러그인을 22.0 혹은 그 이후로 업데이트 한다.
2. File > Export
3. Generate Gradle build files 선택

export

4. export하고 싶은 프로젝트 선택

이클립스에서 export를 하고 폴더에서 확인하면 build.gradle이 생긴것을 확인 할 수 있다.

스크린샷 2014-06-16 오후 5.04.26

밑에는 import해서 프로젝트 구조를 확인한 화면이다.

import

레퍼런스 : http://developer.android.com/sdk/installing/migrate.html