Skip to main content

[배포] 안드로이드에서 특정기기에만 배포하기

안드로이드 개발 완료 후 갤럭시 노트 시리즈에만 배포해야할 일이 생겼습니다.

다음은 특별한 설정없이 기본적으로 기기의 permission 또는 버전으로 필터링된 경우의 “지원되는 기기”입니다.

이전에는 각각의 모델을 제조사 또는 기기모델별로 한번에 해제 하는게 있었던거 같은데 -_- 하나하나 클릭하기도 힘들어보이고

특정한 모델에만 배포해야 할 경우 Google Play Console에서 모든 기기의 체크박스를 해제 해야하는 경우가 생깁니다.

(하나하나 체크 해제 하는건 너무 무모한거 같에요 ㅋㅋㅋ)

 

이런 경우 앱의 AndroidManifest.xml을 수정하여 출시되는 기기에 대한 필터링을 걸 수 있습니다.

해당기기를 Play Console의 기기 카탈로그에서 검색해봅니다.

 

그리고 해당기기(노트 시리즈)에 특정한 기능을 확인합니다.  s-pen의 기능은 com.sec.feature.spen_usp 입니다.

(얼굴 관련된것도 보이고 카메라 등등 여러가지가 있습니다. 다 뭐하는건진 모르겠지만요 -ㅅ-… )

 

해당하는 기능을 확인했으니  AndroidManifest.xml를 편집해봅시다.

 
 <uses-feature android:name="com.sec.feature.spen_usp" android:required="true"/>

이렇게 추가하고 빌드 후 APK를 다시 업로드 해봅니다.

 

 

 

그러면 해당 기기만 배포할 수 있습니다.

 

라이브러리가 없어서 오류가 나거나 하진 않겠죠 ^^

 

(오랜만에 글을 적었네요 -_- )

Android Build를 위한 Local Repository를 만들자 (2/2)

이번 포스트에서는 sonatype Nexus를 세팅해봅시다.

기존의 프로세스는 jcenter -> 개발PC에 다운로드 -> 빌드시에 사용 입니다..

우리가 할려는 대략적인 구조는 다음과 같습니다.
jcenter -> Local Repository -> 개발PC에 다운로드 -> 빌드시에 사용.

( 패키지를 찾아서 일일이 Local에 등록시켜 놓는것도 보통일이 아니기에… -_- )

우선 Nexus에 로그인합니다. 그러면 다음과 같이 메뉴가 나타납니다. Repositores를 클릭합니다.

nexus_repos2

그런다음 Add를 클릭하여 Proxy Repository를 클릭합니다.
nexus_repos3

이름은 마음에드는 “아무거나”로 하시고 다음과 같이 세팅합니다.
nexus_repos4

그럼 세팅이 완료 되었습니다.

여기서 중요한 것은 생성된 repository의 주소입니다. 나중에 이 주소가 Android 빌드시에 사용되게 됩니다.
nexus_repos5

다시 Android 프로젝트로 돌아와서….
Build.gradle(Project:아무거나) 파일을 열어주세요. 그리고 앞에서 생성한 repository 주소를
다음과 같이 편집해주세요.

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    /*
    repositories {
        jcenter()
    }
    */
    repositories {
        maven {
            url "http://repo.teracle.com:8081/nexus/content/repositories/trproxy/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'com.google.gms:google-services:1.3.0-beta1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    /*
    repositories {
        jcenter()
    }
    */
    repositories {
        maven {
            url "http://repo.teracle.com:8081/nexus/content/repositories/trproxy/"
        }
    }

}

이 파일을 편집하게 되면 편집툴 상단에 Sync Now 라는 링크가 표시됩니다. 수정이 완료되면
클릭해주세요.

그리고 다시 nexus로 돌아가보면….
nexus_repos6

빌드시에 사용했던 패키지들이 Local Repository에 넘어와 있는 것을 확인할 수 있어요!

끗 -ㅅ-)

Android Build를 위한 Local Repository를 만들자 (1/2)

오늘 따라 자주 글을 적는군요…

삘 받았을 때 적어야합니다.

최근에…. 아니 요..전에 eclipse를 사용해서 안드로이드 어플리케이션을 제작했던 적을 생각해봅시다.

각종 필요한 라이브러리들을 다운로드 받아서 프로젝트의 lib폴더에 넣어두고 프로젝트 세팅에서
Class Path를 걸어주고 lib가 참조가 되면 그때부터 해당 lib를 포함한 빌드를 할 수 있었었죠.

최근에 Android 개발툴이 Android Studio로 변경되었습니다. 아니 바꿔야만 했습니다. (쿨럭..)

InteliJ기반의 Gradle을 사용한 빌드로 바뀌었습니다. (InteliJ너무 좋아요 좋아죠 좋아요 좋아요)

너무 좋아졌어요…

그런데 약간의 부담이 있습니다. 사용 방법이 전혀 달라졌어요..

Build.gradle(Mobile:app) 파일을 편집하여 빌드에 대한 세팅을 하며, 사용하고 싶은 lib를 추가하여 사용하게 되었습니다.
물론.. 다음 파일을 보시면 아시겠지만 기존의 lib폴더의 파일들도 추가하여 빌드 할 수 있습니다.
dependency라고 부르더군요 .. 의존성..(전 영어를 잘 못..)

android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'
} 
//중략... 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services-analytics:7.3.0'
    compile files('libs/commons-io-2.1.jar')
    compile files('libs/android-support-v4.jar')
    compile 'com.google.guava:guava:18.0'
}

문제는 여기에 있습니다. 패키지로 빌드에 추가되는 lib들인데요.
일일히 찾아서 다니지 않아도 패키지명:버전만 적어주면 얼마나 편리합니까 ㅠ_ㅠ)
다만, 네트워크를 통해서 jcenter라는 곳에서 받아오기 때문에 속도도 느리고,
jcenter가 접속 되지 않으면, 빌드가 망하게 되지 않을까요.. ㅠ_ㅠ)

그래서 Local Repository를 만들어 보기로 했습니다.

같은 프로젝트를 동시에 진행하는 동료가 있다면! 강추 드립니다.
Local Repository를 사용하여 서로 같은 패키지 버전을 사용 할 수 있도록도 해준다고 합니다.

이미 알아체신 분도 계셨겠지만.. 서버를 설치할겁니다. Repository서버를…

sonatype Nexus Community Edition을 설치할겁니다.

다음 사이트에 접속합니다.

http://www.sonatype.org/nexus/go/

윈도우를 사용하며 개인적으로 혼자 사용하실 분은 zip 버전을
다른분과 같이 사용하시고 싶다면 (로컬)리눅스 서버에 설치하실려면 tar.gz버전을 다운로드 합니다.

“적당한곳”에 압축을 해제합니다.

“적당한곳\bin” 폴더에 가보시면 nexus.bat(윈도우용)와 nexus(리눅스용) 가 있습니다.
윈도우용은 nexus.bat install로 서비스에 등록하고 nexus.bat start로 시작하셔서 사용하실 수 있습니다.
(프롬프트에서 입력하셔야 합니다.)
리눅스용은 컨피그 파일을 조금 만져주셔야 합니다. 실행하는 유저를 지정해야 했던것 같습니다.(가물…)

정상적으로 실행되면 브라우저를 실행하여 다음 주소를 입력해봅니다.

http://localhost:8081/nexus

그럼 다음과 같은 사이트가 실행됩니다.

nexus_repos

로그인은 admin / admin123

입니다.

일단 설치하셨으면 절반은 끝났습니다. ㅠ_ㅠ)

자자 글이 너무 길어졌으니 다음 포스트로 넘기렵니다.

안드로이드에서 View를 이미지로 저장하기

안드로이드 View를 이미지 파일로 저장하기 위한 메서드 입니다.

자세한 내용은 다음 코드를 참고하세요.

SD카드의 “적당한곳”에 이미지로 저장되게 된답니다.

(파일의 경로를 바꾸시거나 파일 포멧과 퀄리티를 바꾸시거나 알아서 잘…하실 겁니다. )

“적당한곳” 대신에 .cache 와 같이 . 으로 시작하는 폴더를 사용하시면, 겔러리에서 검색되지 않겠죠?

static public void MakeCache(View v,String filename){

        String StoragePath = 
               Environment.getExternalStorageDirectory().getAbsolutePath();
        String savePath = StoragePath + "/적당한곳";
        File f = new File(savePath);
        if (!f.isDirectory())f.mkdirs();

        v.buildDrawingCache();
        Bitmap bitmap = v.getDrawingCache();
        FileOutputStream fos;
        try{
            fos = new FileOutputStream(savePath+"/"+filename);
            bitmap.compress(Bitmap.CompressFormat cherche viagra a vendre.JPEG,80,fos);

        }catch (Exception e){
            e.printStackTrace();
        }
    }

테스트는 WebView에 대해서 테스트 해보았고 잘 작동하네요…

WebView이외 다른 View에도 사용 가능함으로 잘 활용해보세요. (좋네영~ )

현재는 Cache용도로 사용하고 있습니다.

ps. 이 글이 코드 하이라이트 테스트라고는 절대 말 못함.