2017-04-04 2 views
2

문제점 설명 : 개발 환경에서만 라이브러리를 사용하고 출시 (앱 스토어 릴리스)에서는 라이브러리를 사용하지 않습니다. 그리고 저는이 라이브러리가 apk로 배포되기를 원하지 않습니다.Android : 라이브러리로드 및 해제 용 개발 분기에만 사용

내 appraoch : 그래서

, 내가 가진이 같은 환경 설정 :

개발 -

  1. 디버그
  2. 출시

스토어 -

,
  1. 디버그
  2. 릴리스 -> 이것은 내가 추가 한 Gradle을에서 저장을

을 재생 간다 -

debugCompile 'com.some.library' 
개발이 라이브러리를로드

- 디버그스토어 - 디버그

그리고 라이브러리를 초기화하지 않는 응용 프로그램 클래스 - 나는 두 개의 응용 프로그램 클래스를 만들었습니다

  1. ApplicationWithoutDebugLibrary는 MultiDexApplication를 확장합니다. 라이브러리

를 초기화한다 Application 클래스 그리고 다른 맛에 대해 서로 다른 응용 프로그램 파일을로드 Gradle을에서 정의한 -

  • ApplicationWithDebugLibrary는 ApplicationWithoutDebugLibrary를 확장합니다.

    productFlavors { 
          Development { 
           applicationId "xyzzzz" 
           manifestPlaceholders = [application:"com.xyz.ApplicationWithDebugLibrary"] 
          } 
          store { 
           applicationId "11111" 
           manifestPlaceholders = [application:"com.xyz.ApplicationWithoutDebugLibrary"] 
          } 
    } 
    

    그리고 매니페스트에 내가 쓴이 :

    <application 
        android:name="${application}"... 
    

    그래서, 나는 ApplicationWithDebugLibrary를 컴파일 할 수 없습니다 스토어 - 출시/개발 - 출시 APK를 건물입니다 때 디버그 것이 잘 작동되지만, .java, 릴리스 풍미를 위해 gradle 파일로 컴파일되지 않은 라이브러리를 사용하고 있습니다.

    그래서이 클래스를 Store 릴리스 풍미 또는 개발 환경에서만 해당 라이브러리를로드 할 수있는 다른 솔루션으로로드하는 것을 피할 수있는 방법이 있습니까?

  • 답변

    2

    그래서 디버그의 경우 잘 작동하지만 Store-Release/Development-Release apk를 빌드 할 때 ApplicationWithDebugLibrary를 컴파일 할 수 없습니다.자바, 릴리스 풍미에 대한 gradle 파일에 컴파일되지 않습니다

    논리에 의해 마술처럼 코드를 사용하여 라이브러리를 제거하고 여전히 남아있는 모든 remainings 단순히 누락 된 것처럼 컴파일 할 방법이 없습니다 기호. 그래서 당신은 "더미"라이브러리를 만들어야하는데, 디버그와 동일한 API를 사용하지만 메소드 본문은 없다. 또는 나중에 라이브러리 종속성을 사용하지 않는 버전으로 프로덕션 용으로 교체 할 수있는 일부 코드로 라이브러리를 래핑 할 수 있습니다.

    안드로이드 Gradle을 플러그인은이 빌드의 어떤 종류의 기반 의존성의 다른 버전으로 구축 할 수 있습니다 : 컴파일 구성이 주요 응용 프로그램을 컴파일하는 데 사용됩니다

    . 그 안에있는 모든 항목이 컴파일 클래스 경로에 추가되고 마지막 APK에 패키지 된 도 추가됩니다.

    • 컴파일 : 다른 가능한 구성에 종속성을 추가 에 있습니다 주요 응용 프로그램
    • androidTestCompile : 테스트 응용 프로그램
    • debugCompile : 디버그 빌드 유형
    • releaseCompile : 릴리스 빌드를 입력합니다.

    문서 : http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Libraries-and-Multi-project-setup

    +0

    Gradle을의 클래스 및 작성 스크립트의 동적 로딩에 대해 동일한 작업을 수행 할 작업. 나는 그것이 가능한지 아닌지에 관해 모른다, 나는 많은 장소에서 그것에 관해 알기 위해 단지 흥미롭게 읽었다. – aamitarya

    +0

    댓글을 다시 작성하십시오. 나는 당신이 정말로 무엇을 의미하는지 전혀 모른다. –

    +0

    일부 조건을 기반으로 클래스를 컴파일하기 위해 동적 클래스를 사용하여 gradle에 스크립트를로드하거나 작성하여이 작업을 수행 할 수 있습니까? – aamitarya