android lib module 생성 후 application에서 참조하기

이미지 출처: https://medium.com/@101/speed-up-gradle-build-in-android-studio-80a5f74ac9ed#.p3j4dbawk


01. 새로운 프로젝트 생성

  • 01.1. 프로젝트 생성
Android Studio: File > New > New Project...
  • 01.2. Configure your new project 정보입력
ex>
Application name: Recipe
Company name: korn123.blog.me
  • 01.3. Select the form factors your app will run on 정보입력
ex>
Minimum SDK: API 19: Android 4.4 (KitKat)
  • 01.4. Add an Activity to Mobile
ex>
Empty Activity
  • 01.5. Customize the Activity 정보입력
ex>
Activity Name: MainActivity
Layout Name: activity_main

02. 참조대상 lib module 생성

  • 02.1. 새로운 모듈 생성
Android Studio: File > New > New Module...
  • 02.2. New Module 선택
Android Library
  • 02.3. Configure your new module 정보입력
ex>
Application/Library name: Commons
Module name: commons
Package name: me.blog.korn123.commons
Minimum SDK: API 19: Android 4.4 (KitKat)

03. lib module(commons-lang3 wrapper util 만들기)

  • 03.1. build.gradle(Module: commons)에 dependeny 추가

1
2
3
4
5
6
7
8
9
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.1'
    testCompile 'junit:junit:4.12'
    compile 'org.apache.commons:commons-lang3:3.0'
}
cs


  • 03.2. StringUtils Wrapper Class 생성

1
2
3
4
5
6
7
8
9
10
11
12
package me.blog.korn123.commons.utils;
 
/**
 * Created by hanjoong on 2017-03-09.
 */
 
public class StringUtils {
 
    public static String upperCase(String str) {
        return org.apache.commons.lang3.StringUtils.upperCase(str);
    }
}
cs


04. application에서 wrapping된 lib 사용하기

  • 04.1. build.gradle(Module: app)에 dependeny 추가
1
2
3
4
5
6
7
8
9
10
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.1'
    testCompile 'junit:junit:4.12'
 
    compile project(':commons')
}
cs


  • 04.2 . MainActivity wrapping된 class 호출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package me.blog.korn123.recipe;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
import me.blog.korn123.commons.utils.StringUtils;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        TextView welcome = (TextView)findViewById(R.id.welcome);
        welcome.setText(StringUtils.upperCase("Hello android lib module !!!"));
    }
}
cs


Table of contents


Open source project on GitHub


Jupyter/IPython Notebook


Open API


NoSQL


Jekyll


Gradle


Kotlin


C++

  • C++ keywords
  • 윤성우 열혈강의 C++ 프로그래밍 예제코드 [펼치기]
    1. C언어 기반의 C++ 1
      • printf와 scanf를 대신하는 입출력 방식
      • 함수 오버로딩(Function Overloading)
      • 매개변수의 디폴트 값(Default Value)
      • 인라인 함수(Inline)함수
      • 이름공간(namespace)에 대한 소개
    2. C언어 기반의 C++ 2
      • 새로운 자료형 bool
      • 참조자(Reference)의 이해
      • 참조자(Reference)와 함수
      • maloc & free를 대신하는 new & delete
      • C++에서 C언어의 표준함수 호출하기
    3. 클래스의 기본
      • C++에서의 구조체
      • 클래스(Class)와 객체(Object)
      • 객체지향 프로그래밍의 이해
    4. 클래스의 완성
      • 정보은닉(Information Hiding)
      • 캡슐화(Encapsulation)
      • 생성자(Constructor)와 소멸자(Destructor)
      • 클래스와 배열 그리고 this 포인터
    5. 복사 생성자
      • ‘복사 생성자’ 와의 첫 만남
      • ‘깊은 복사’와 ‘얕은 복사’
      • 복사 생성자의 호출시점
    6. friend와 static 그리고 const
      • const와 관련해서 아직 못다한 이야기
      • 클래스와 함수에 대한 friend 선언
      • C++에서의 static
    7. 상속(Inheritance)의 이해
      • 상속에 들어가기에 앞서
      • 상속의 문법적인 이해
      • protected 선언과 세 가지 형태의 상속
      • 상속을 위한 조건
    8. 상속과 다형성
      • 객체 포인터의 참조관계
      • 가상함수(Vitual Function)
      • 가상 소멸자와 참조자의 참조 가능성
    9. 가상(Virtual)의 원리와 다중상속
      • 멤버함수와 가상함수의 동작원리
      • 다중상속(Multiple Inheritance)에 대한 이해
    10. 연산자 오버로딩 1
      • 연산자 오버로딩의 이해와 유형
      • 단항 연산자의 오버로딩의
      • 교환법칙 문제의 해결
      • cout, cin 그리고 endl의 정체
    11. 연산자 오버로딩 2
      • 반드시 해야 하는 대입 연산자의 오버로딩
      • 배열의 인덱스 연산자 오버로딩
      • 그 이외의 연산자 오버로딩
    12. String 클래스의 디자인
      • C++ 표준과 표즌 string 클래스
      • 문자열 처리 클래스의 정의
    13. 템플릿(Template) 1
      • 템플릿(Template)에 대한 이해와 함수 템플릿
      • 클래스 템플릿(Class Temlpate)
    14. 템플릿(Template) 2
      • Chapter 13에서 공부한 내용의 확장
      • 클래스 템플릿의 특수화(Class Temlpate Specialization)
      • 템플릿의 인자
      • 템플릿과 static
    15. 예외처리(Exception Handling)
      • 예외상황과 예외처리의 이해
      • C++의 예외처리 메커니즘
      • Stack Unwinding(스택 풀기)
      • 예외상황을 표현하는 예외 클래스의 설계
      • 예외처리와 관련된 또 다른 특성들
    16. C++의 형 변환 연산자
      • C++에서의 형 변환 연산

ETC