Android Studio - Sizuha/devdog GitHub Wiki
- in AndroidStudio's settings > compile enable checkbox named Compile independent modules in parallel.
- Under Help> Edit Custom Vmoptions
-Xms1024m
-Xmx4096m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=256m
-XX:+UseCompressedOops
strings.xml ๋ฑ์์ ๋ค๋ฅธ ์ธ์ด์ ๋ํ ๋ฒ์ญ๋ณธ์ด ์๋ ๊ฒฝ์ฐ.
์๋๋ ๊ฑฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋ฌ๋ฅผ ๋ฌด์ํ ์ ์๋ค.
<resources>
<string name="foo" translatable="false">bar</string>
</resources>
strings.xml ํ์ผ ์ ์ฒด์ ๋ํด ๋ฌด์๋ฅผ ํ๋ ค๋ฉด,
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="api_url">http://foo.bar/api/</string>
</resources>
File > New Module... > Import .JAR/.AAR Pacakge
AAR ํ์ผ์ ์ ํํ๋ค.
File > Project Structure... > Dependencies ์์ ์ถ๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ์ถ๊ฐํด ์ฃผ๊ฑฐ๋, App์ build.gradle์ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐ.
dependencies {
//...
compile project(':๋ชจ๋์ด๋ฆ')
//...
}
Project์ build.gradle
allprojects {
repositories {
jcenter()
mavenCentral()
flatDir {
dirs 'libs' // aar ํ์ผ์ด ์๋ ๊ฒฝ๋ก
}
}
}
App์ build.gradle
// compile 'ํจํค์ง:๋ผ์ด๋ธ๋ฌ๋ฆฌ_์ด๋ฆ:๋ฒ์ @aar'
compile 'com.library.slib:slib:0.2.3@aar'
Module์ build.gradle
android {
defaultConfig {
versionCode 1
versionName "0.2.7" // Version
project.archivesBaseName = "๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ"
project.version = android.defaultConfig.versionName
}
libraryVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.aar')) {
def fileName = "${archivesBaseName}-${version}.aar" // ๋น๋ ํ ๋ง๋ค์ด์ง AAR ํ์ผ์ ๋ํ ๋ค์ด๋ฐ.
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
์ฐธ๊ณ
app.gradle์์ productFlavors ์ค์ ์ ์ถ๊ฐํ์ฌ ์ ํ๋ณ๋ก Application ID ์ค์ ๋ฑ์ ์ ์ฉํ ์ ์๋ค.
android {
...
defaultConfig {...}
buildTypes {...}
productFlavors {
demo {
applicationIdSuffix ".demo"
versionNameSuffix "-demo"
}
full {
applicationIdSuffix ".full"
versionNameSuffix "-full"
}
}
}
ํน์ ์ ํ์ ์คํ/๋น๋ ํ๊ณ ์ ํ ๊ฒฝ์ฐ, ๋ฉ๋ด์์ Build > Select Build Variant ํญ๋ชฉ์ ์ ํ.
Android Studio 3.0์์ flavorDimensions ์ ์ธ์ด ํ์๊ฐ ๋์๋ค.
flavorDimensions "main"
productFlavors {
general {
dimension "main"
applicationIdSuffix ".general"
}
extend {
dimension "main"
applicationIdSuffix ".extend"
}
}
์ฐธ๊ณ
//apply plugin: 'com.android.application'
apply plugin: 'com.android.library' // ๋ฐ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ๋ก ๋น๋ํด์ผ ํจ.
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
sourceSets {
main {
//Path to your source code
java {
srcDir 'src/main/java'
}
}
}
defaultConfig {
//applicationId "jp.co.gngs.projectd" // ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ์์๋ Application ID ๋ฑ์ ์ง์ ๋ถ๊ฐ.
minSdkVersion 11
targetSdkVersion 22
//versionCode 1
//versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile files('libs/classes.jar')
}
//task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/AndroidPlugin.jar'
}
//task to export contents as jar
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
///Rename the jar
rename('classes.jar', 'AndroidPlugin.jar')
}
exportJar.dependsOn(deleteOldJar, build)
Gradle tasks ๋ฆฌ์คํธ์์ Taks/others/exportJar ํ์คํฌ๋ฅผ ์คํํ๋ฉด, App/release/xxxx.jar ํ์ผ์ด ์์ฑ๋๋ค.
์๋ฅผ๋ค์ด, ํ์ผ๋ช ๋ค์ ๋ฒ์ ์ ๋ณด๋ฅผ ๋ฃ๊ณ ์ ํ๋ ๊ฒฝ์ฐ.
app ๋ชจ๋์ build.gradle ์์ .
APK
android {
defaultConfig {
project.archivesBaseName = "xxxxx"
project.version = android.defaultConfig.versionName + "." + android.defaultConfig.versionCode
}
applicationVariants.all { variant ->
if (variant.buildType.name == "release") {
variant.outputs.all { output ->
outputFileName = "${archivesBaseName}-${version}.apk"
}
}
}
}
ARR
android {
defaultConfig {
project.archivesBaseName = "xxxxx"
project.version = android.defaultConfig.versionName + "." + android.defaultConfig.versionCode
}
libraryVariants.all { variant ->
variant.outputs.all { output ->
if (output.outputFileName != null && output.outputFileName.endsWith('.aar')) {
outputFileName = "${archivesBaseName}-${version}.aar"
}
}
}
}