제품 Flavor에서 다른 소스를 사용하여 응용 프로그램 만들기
15150 단어 build.gradleAndroid
구성 변수
Android는 변형된 다양한 버전의 어플리케이션을 만드는 기능이 있습니다.
환경의 전환 방법은 다음과 같은 두 가지가 있다
제품 Flavor 설정 방법
AndroidStudio의 GUI에서 진행하는 방법과gradle에서 설정하는 두 가지가 있습니다.
다음은gradle 파일을 편집하는 형식으로 수정합니다
app/build.gradle
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
applicationId "com.example.test01"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// ここから以下を追加
flavorDimensions 'mode'
productFlavors {
blue {
dimension = 'mode'
}
freen {
dimension = 'mode'
}
}
// ここまで
}
제품 Flavor는 FlavorDimension에 속해야 합니다.상기에서 다음과 같은 형식으로 구성되다mode (dimension)
┝ blue
┝ green
이렇게 설정하면 기본값에서 원본 집합은 다음과 같습니다
// 一部抜粋
------------------------------------------------------------
Project :app
------------------------------------------------------------
blueDebug
---------
Compile configuration: blueDebugCompile
build.gradle name: android.sourceSets.blueDebug
Java sources: [app/src/blueDebug/java]
Manifest file: app/src/blueDebug/AndroidManifest.xml
Android resources: [app/src/blueDebug/res]
Assets: [app/src/blueDebug/assets]
AIDL sources: [app/src/blueDebug/aidl]
RenderScript sources: [app/src/blueDebug/rs]
JNI sources: [app/src/blueDebug/jni]
JNI libraries: [app/src/blueDebug/jniLibs]
Java-style resources: [app/src/blueDebug/resources]
blue
----
Compile configuration: blueCompile
build.gradle name: android.sourceSets.blue
Java sources: [app/src/blue/java]
Manifest file: app/src/blue/AndroidManifest.xml
Android resources: [app/src/blue/res]
Assets: [app/src/blue/assets]
AIDL sources: [app/src/blue/aidl]
RenderScript sources: [app/src/blue/rs]
JNI sources: [app/src/blue/jni]
JNI libraries: [app/src/blue/jniLibs]
Java-style resources: [app/src/blue/resources]
green
-----
Compile configuration: greenCompile
build.gradle name: android.sourceSets.green
Java sources: [app/src/green/java]
Manifest file: app/src/green/AndroidManifest.xml
Android resources: [app/src/green/res]
Assets: [app/src/green/assets]
AIDL sources: [app/src/green/aidl]
RenderScript sources: [app/src/green/rs]
JNI sources: [app/src/green/jni]
JNI libraries: [app/src/green/jniLibs]
Java-style resources: [app/src/green/resources]
debug
-----
Compile configuration: debugCompile
build.gradle name: android.sourceSets.debug
Java sources: [app/src/debug/java]
Manifest file: app/src/debug/AndroidManifest.xml
Android resources: [app/src/debug/res]
Assets: [app/src/debug/assets]
AIDL sources: [app/src/debug/aidl]
RenderScript sources: [app/src/debug/rs]
JNI sources: [app/src/debug/jni]
JNI libraries: [app/src/debug/jniLibs]
Java-style resources: [app/src/debug/resources]
main
----
Compile configuration: compile
build.gradle name: android.sourceSets.main
Java sources: [app/src/main/java]
Manifest file: app/src/main/AndroidManifest.xml
Android resources: [app/src/main/res]
Assets: [app/src/main/assets]
AIDL sources: [app/src/main/aidl]
RenderScript sources: [app/src/main/rs]
JNI sources: [app/src/main/jni]
JNI libraries: [app/src/main/jniLibs]
Java-style resources: [app/src/main/resources]
소스 세트 우선 순위 사용
소스 세트는 다음 순서로 참조됩니다.
견본
다음은 블루 맛, 그린 맛 두 가지 원본 전환을 진행합니다
카탈로그 개요
제품 Flavor 설정
build.gradle
android {
compileSdkVersion 29
buildToolsVersion "29.0.0"
defaultConfig {
applicationId "com.example.test01"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
flavorDimensions 'mode'
productFlavors {
blue {
dimension = 'mode'
applicationIdSuffix ".blue"
}
green {
dimension = 'mode'
applicationIdSuffix ".green"
}
}
}
주 소스 세트
com.example.test01.MainActivity
package com.example.test01
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setFragment()
}
private fun setFragment() {
val transaction = supportFragmentManager.beginTransaction()
val fragment = GreenFragment()
transaction.replace(R.id.fragment_base, fragment)
transaction.commit()
}
}
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test01">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
블루 라이트 그룹
com.example.com.blue.MainActivity
package com.example.test01.blue
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setFragment()
}
private fun setFragment() {
val transaction = supportFragmentManager.beginTransaction()
val fragment = BlueFragment()
transaction.replace(R.id.fragment_base, fragment)
transaction.commit()
}
}
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test01">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!- ↓のnameが変わった->
<activity android:name=".blue.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
결과
blueDebug
greenDebug
Reference
이 문제에 관하여(제품 Flavor에서 다른 소스를 사용하여 응용 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/murochy/items/09fa3a069df89b46c12a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)