Android Studio에서 Product Flavor 사용
날과 씨
Eclipse가 만든 어떤 앱을 안드로이드 스튜디오로 옮겼을 때, 지금까지 다른 프로젝트로 관리해온 일반판과 프레젠테이션 버전을 하나의 프로젝트로 관리하고 싶어 그때 시도했던 다양한 결과를 메모에 함께 기록했다.
기본 정보
Configuring Gradle Builds
컨디션
Android Studio 2.0 Preview 4
작업 단계
Android Studio 가져오기
Configuring Gradle Builds
컨디션
Android Studio 2.0 Preview 4
작업 단계
Android Studio 가져오기
Android Studio 가져오기
build.gradle 편집(Modle:app) (중 하나)
Project Structures부터 수정하는 것이 왕도입니다.
[File] [Project Structure]가 열립니다.[module][app]를 엽니다.
android {
(略)
productFlavors {
regular {
applicationId "com.foo.bar"
}
demo {
applicationId "com.foo.bar.demo"
}
}
}
[참고]
프레젠테이션용 소스 코드 추가
<通常版のみ> <通常版+デモ版>
プロジェクト名 プロジェクト名
┗━app ┗━app
┗━src ┗━src
┗━main ┣━demo
┣━java ┃ ┣━java
┗━res ┃ ┗━res
┣━main
┃ ┣━java
┃ ┗━res
┗━regular
Android Manifest 추가
Android Manifest가 결합됩니다.
Android Manifest가 결합됩니다.
중요한 일이니까 두 번 말했어.처음에는 이걸 이해하지 못했기 때문에 일반판과 프레젠테이션판 두 개의 아이콘이 나와 고민이 많았다.
결론적으로 일반 버전과 프레젠테이션 버전, 그리고 공통 부분의 3개의 매니페스트를 만들었다.
또 방법에 따라 둘 다 갈 수 있다(후술)지만, 매니페스트는 가기 어려워 보여 추천하지 않는다.
일반판과 프레젠테이션판의 차이
안드로이드 매니페스트의 추가·수정 내용은 앱 내용에 따라 다를 수 있다고 생각한다.이번 경우 일반판과 시연판은 다음과 같은 차이가 있는데, 여기에 기재된 내용은 이 차이에 따른 내용이다.
+ 시작 시 Activity가 다릅니다.
+ 서비스 등 일부 구성 요소가 다릅니다.
+ 광고 표시에 필요한 권한이 추가됩니다.
+ 라이센스 인증을 하지 않으므로 CHECKLICENSE 권한을 제거합니다.
+ 애플리케이션 이름이 다릅니다.
일반 매니페스트
일반 매니페스트
<uses-permission android:name="com.android.vending.CHECK_LICENSE"/>
를 추가했고 일반 버전이 시작될 때의Activity와 차이가 있는 구성 요소를 추가했다.데모판 매니페스트
xmlns:tools="http://schemas.android.com/tools"
.tools:replace="android:label"
.또 개작
android:label
만 하면 경쟁의 오류가 발생하기 때문에 설정tools:replace="android:label"
으로 경쟁을 해소한다.[참고]
일반 버전의 Manifest를 만들지 않는 방법
비스듬히 읽기Manifest Merging, 먼저 시도하는 방법은 다음과 같다.
main 폴더의 안드로이드 매니페스트xml에 일반 버전 + 공통 구성 요소에 대한 설명을 모두 씁니다. 데모 폴더 아래의 안드로이드 매니페스트입니다.xml에서 필요하지 않은 구성 요소의 탭에 추가
tools:node='remove'
삭제 (물론 프레젠테이션에 필요한 구성 요소의 기술도 추가).다만, 해보면 알겠지만, 마니페스트는 읽기가 어려워졌다.
build.gradle 편집 (Module: app) (2)
여기까지의 내용과 시위판에 필요한 설정build.gradle에 반영됩니다.일부분은 반영된 것일 수도 있다.
프리젠테이션 소스 코드의 위치 지정
위 순서대로 하면 일하지 않아도 반영돼 만일을 대비한다.
sourceSets {
main {
(略)
}
demo {
java.srcDirs = ['src/demo/java']
res.srcDirs = ['src/demo/res']
}
}
광고 갤러리 추가
프레젠테이션에서만 광고 디스플레이를 사용하는 프로그램 라이브러리를 설정합니다.
dependencies {
(略)
demoCompile files('libs/ads.jar')
}
프레젠테이션용 Progruard 설정
프레젠테이션 버전은 광고 라이브러리에 대응하기 위해 일반 버전과 다른 Progruard 설정을 사용했다.
productFlavors {
regular {
(略)
}
demo {
(略)
proguardFile('proguard-rules_demo.so')
}
}
버전 이름 바꾸기
애플리케이션 이름과 함께 버전 이름도 변경되었습니다.
productFlavors {
regular {
(略)
versionName "1.0.0"
}
demo {
(略)
versionName "1.0.0(demo)"
}
}
실행 및 서명을 위한 APK 작성
실행
Build Variants를 통해 프리젠테이션 및 일반 버전을 전환할 수 있습니다.
서명 APK 생성
마지막으로 만들고 싶은 Flavor만 선택하면 다른 것은 바뀌지 않습니다.
서명을 변경하려면build을 사용하십시오.gradle에 사용할 서명을 지정한 것 같습니다. (확인되지 않았습니다.)
(참조)Signing Your Applications
역사를 갱신하다
2015/12/25 초판
프레젠테이션 버전의 항목은 가져올 필요가 없습니다. ↩
Package를 선택할 수 없는 경우 Android Studio 창의 왼쪽 끝에 있는 "Build Variants"를 열고 "app"를 "demo**"(Debug이든 Release)로 변경합니다.이래도 안 된다면 다이렉트로 포장과 같은 걸 만들면 돼. ↩
합병해야 하기 때문에 일반판과 공통된 코드를 추가할 필요가 없다. ↩
regular 폴더 밑에 일반 버전의 코드 클래스를 놓아야 하는데 이번에는main 아래에 설정되어 있기 때문에 자바 폴더를 만들지 않았습니다.reglar 폴더의 Android Manifest 뒤에 있습니다.xml만 놓습니다. ↩
이번에는 일반 소스를 레귤러에 넣지 않았기 때문에main에 자바가 있어요.srcDirs,res.srcDis의 기록이 없어도 상관없습니다. ↩
Reference
이 문제에 관하여(Android Studio에서 Product Flavor 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hisanaka/items/595266a5d43eea8883a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Android Studio에서 Product Flavor 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hisanaka/items/595266a5d43eea8883a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)