Android – Gradle을 이용하여 Android Library 만들기

Gradle을 이용하여 Android Library 만들기

Android Studio에서 새로운 프로젝트를 만들어준다. 이것은 실제 라이브러리 프로젝트가 아니라, TDD를 위한 껍대기라고 생각하면 된다.

이제 라이브러리 프로젝트를 만들어보자. New > Module로 새로운 라이브 프로젝트를 만들자.

Build 하기

$ gradle <lib>:build

만약 라이브러리 이름이 util이라면 아래와 같은 Command를 입력해준다.

$ gradle util:build

아무 이상없이 잘 빌드 되었다면 아래와 같은 결과를 확인 할 수 있다.

... 
:util:preCompileDebugUnitTestJava
:util:compileDebugUnitTestJava UP-TO-DATE
:util:compileDebugUnitTestSources UP-TO-DATE
:util:mockableAndroidJar
:util:assembleDebugUnitTest
:util:testDebug
:util:preCompileReleaseUnitTestJava
:util:compileReleaseUnitTestJava UP-TO-DATE
:util:compileReleaseUnitTestSources UP-TO-DATE
:util:assembleReleaseUnitTest
:util:testRelease
:util:test
:util:check
:util:build

BUILD SUCCESSFUL
$ cd util/build/outputs/aar/

위 폴더에서 util-debug.arr, util-release.arr를 확인 할 수 있다.

Depoloy 시키기

안드로이드 프로젝트의 /libs 폴더 안에 추가하자.
그리고 build.gradle파일을 아래와 같이 추가하자.

dependencies {
    compile 'package.name.of.your.aar:util@aar'
}

repositories{
    flatDir{
        dirs 'libs'
    }
}

추가가 정확히 되었다면 Tools > Android > Sync를 누르면 모든 작업이 완료된다.

AAR Format에 대해서

‘aar’ 번들은 Android Library Project에서 사용되는 배포 바이너리 파일이다.

파일 확장자는 항상 .arr로 끝나며, maven artifact 타입으로 잘 알려져있다. 사실 이 파일은 zip파일이며 아래와 같은 구조를 가진다.

  • /AndroidManifest.xml (mandatory)
  • /classes.jar (mandatory)
  • /res/ (mandatory)
  • /R.txt (mandatory)
  • /assets/ (optional)
  • /libs/*.jar (optional)
  • /jni//*.so (optional)
  • /proguard.txt (optional)
  • /lint.jar (optional)

참고

Tool – wireshark 설치

brew를 이용한 whireshark 설치 방법에 대해서 기술한다.


1) 기존 wireshark 삭제하기

$ sudo bash -c "$(curl -sL https://raw.github.com/x0b4dc0d3/wireshark-uninstall-osx/master/uninstall.sh)"

2) brew를 이용하여 설치하기

$ brew install wireshark

만약 GUI버전이 필요하다면 QT와 함께 설치 해주어야 한다.

$ brew reinstall wireshark --with-qt

AWS – S3 버켓 정책

아마존 S3에서 기본적으로 버켓은 Private로 생성이 된다. 대량의 파일을 업로드 하고 이를 공유할려고 한다면 일일이 권한을 바꿔주어야 한다. 매우 반복적인 작업이 되므로 아래와 같이 정책을 생성하여, 버켓에 적용하게 되면, 버켓 내부에 포함된 모든 파일을 쉽게 접근 할 수 있다.


Example)

{
  "Id": "Policy125042226491",
  "Statement": [
    {
      "Sid": "Stmt2123042135427",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::mybucket/*",
      "Principal": "*"
    }
  ]
}

위와 같은 JSON구조를 가지게 된다. 포멧을 외울 필요 없이 아마존은 정책 생성기 툴을 지원한다.

JS – Key, Value 가져오기

for (var k in target){
    if (target.hasOwnProperty(k)) {
         alert("Key is " + k + ", value is" + target[k]);
    }
}

hasOwnProperty는 property를 가지고 있는지 확인 할 때 사용한다.

for (var k in target){
    if (typeof target[k] !== 'function') {
         alert("Key is " + k + ", value is" + target[k]);
    }
}

ref

AWS – S3 버킷 전체 파일 내려받기

AWS CLI 문서 : http://docs.aws.amazon.com/cli/latest/index.html

Command Line Tool을 이용하여 쉽게 파일들을 내려 받을 수 있다. 또한 버킷에서 또 다른 버킷으로 쉽게 파일을 동기화 시킬 수 있으며, Local에서 S3 버킷 또한 가능하다.

 

1. Command Line Tool 설치하기

$ sudo easy_install awscli

또는

$ sudo pip install awscli

참조 : http://docs.aws.amazon.com/cli/latest/userguide/installing.html#install-with-pip

 

2. Bucket 전체 파일 내려받기

$ aws s3 sync s3://mybucket .

 

참조 : http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

 

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Ubuntu – ejabberd 설치하기

ejabberd를 설치하기 위해 root 권한으로 터미널에 접속하여 아래와 같은 절차로 진행한다.


version :  2.1.11

Step 1 – Jabbed 설치하기

apt-get -y install ejabberd 
설치 후 경로들

   기본 설치 경로 : /etc/ejabberd/ejabberd.cfg

   홈 경로 : /var/lib/ejabberd

   SSL 인증 경로 : /etc/ejabberd/ejabberd.pem

Step 2 – 관리자 유저 설정하기

비밀번호를 설정하자!

ejabberdctl register admin localhost password

Step 3 관리자에게 권한을 부여하자.

기본적으로, eJabberd는 호스트 네임인 ‘localhost’를 사용한다. 호스트 네임을 변경할려면 config 파일에서 변경할 수 있다. 

그래서 기본적으로 “admin@localhost”로 지정되며, 아래와 같이 수정될 수 있다.

 
%% Admin user
{cal, admin, {user, “admin”, “localhost”}}.

%% Hostname
{hosts, [“localhost”]}.
 
** Ubuntu에 설치 후 접속 권한 local로 한정되어 있다. 이것을 주석 처리해주자.
%%  {access, local, [{allow, local}]}.

Step 4 eJabberd 재시작하기

service ejabberd restart

이제 지정된 IP의 포트 번호 5280을 통해 eJabbered Web Admin interface에 접속 할 수 있다.

http://198.199.90.115:5280/admin

로그인 하기 위해서는  user@domain (우리의 경우 “admin@localhost”로 접속 할 수 있다.):

Stem 5 새로운 사용자 추가하기

  1. Web Admin Interface 접속
  2. Vertual Hosts > Localhost > Users 순서대로 클릭
  3. User, Password 입력 

물론 커맨드라인을 통해서도 입력이 가능하다.

$ ejabberdctl register test1 localhost F2imbMo45
** Failed RPC connection to the node 문제 **
권한 문제로 sudo를 추가하면 된다.
$ sudo ejabberdctl register test1 localhost F2imbMo45

이후 클라이언트 설치는 아래를 참조

참조 : https://www.digitalocean.com/community/tutorials/how-to-install-ejabberd-xmpp-server-on-ubuntu

 

 

안드로이드 > strings.xml 파일에 공백 추가하기

strings.xml 파일을 이용하여 문자열을 선언하다 보면 가끔 첫 문자의 시작이나 끝 문자에 ‘  ‘공백이 추가가 필요할 때가 있다. 하지만 위와 같이 ‘ ‘ 공백을 추가하게 되면 컴파일러가 이를 제거 해버린다.

위와 같은 문제를 해결하기 위해 유니코드를 활용하면 문제를 해결할 수 있다.
‘  ‘ >  을 이용하여 처리 할 수 있다.

 참조 자료 :  http://stackoverflow.com/questions/10862975/how-to-put-space-character-into-a-string-name-in-xml

Android – 쉽게 커스텀 폰트 사용하기

Calligraphy Library


쉽게 커스텀 폰트를 설정 할 수 있는 라이브 러리이다.

설치하기

메이븐을 이용한 설치

OR

그래들 의존성으로 설치하기

dependencies {
    compile 'uk.co.chrisjenx:calligraphy:2.0.0'
}

폰트 경로는 assets/fonts/에 지정 되어 있어야 한다.

커스텀 속성

“와 같이 사용할 수 있다.

환경 설정

CalligraphyConfig를 Application클래스 안에 사용함으로 써 기본 폰트를 설정할 수 있다.

불행이도 Activity#attachBaseContext(Context)후에 Activity#onCreate(Bundle)이 호출 되기 때문에, 그전에 정의 되어야 한다.

protected void onCreate() {
    super.onCreate();
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                            .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
                            .setFontAttrId(R.attr.fontPath)
                            .build()
            );
    //....
}

Note: CalligraphyConfig를 구지 설정할 필요 없다. 하지만 설정하지 않는다면 기본값은 사용되지 않으면 R.id.fontPath가 사용된다.

Context안에 넣는 방법

Activity Context를 감싸주어라:

@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

사용법

TextView에 커스텀 폰트 설정하기

<TextView
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fontPath="fonts/Roboto-Bold.ttf"/>

쓰다 보니 너무 길어서 링크를 남긴다.