Android Studio GradleのI/Oを見たことがある人もいるので、Xavier Ducrohetは彼の速いスピーチでアンドロイドのグラデルビルドシステムの使い方を述べました。私の問題は、ドキュメンテーションとプレゼンテーションが速いスタートを得るための情報がないことです。少なくとも私のために。私の次のコードでは、私はgradleのアンドロイドプラグインシステムと私はいくつかのステップを間違っていくつかの権利があると確信しているの使用を解決しようとしました。 (私はアリやmavenをたくさん使っていません)Android Studio Gradleファーストステップ
多分私はこれまでに何をしてきたのかを一歩一歩進みます。デバッグビルドのデフォルト設定構成する第1のIMで
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
signingStoreLocation = "debug.keystore"
signingStorePassword = "***************"
signingKeyAlias = "***************"
signingKeyPassword = "**************"
}
(またはデフォルトsettings..thatを使用するすべてのビルドにはbuildtypesや風味を意味していない?)
sourceSets:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['com.project.maingradle', 'com.otherproject.changedsourcefilesforthisproject']
res.srcDirs = ['res', 'resfromotherprojectusingpartsofsamecode']
assets.srcDirs = ['assets']
}
}
でこのステップではsourceSetsを定義しました。これが私の最初の質問です。私は二つのプロジェクトに使用する同じコードを持っていれば、それは可能です/またはそれのような多くのsourcesetsを定義し実行する必要があります - >
sourceSets {
main {...}
srcsetforanotherproject {...}
}
...基礎となるのsrcフォルダに依存しますか?あるいは、sourceSetsの定義は、私の最初のsourceSets宣言のように、Xavier Ducrohetのようなresフォルダのような異なるセットを定義することによって行うべきですか? (また、私はこのようにresフォルダに対してもjava.srcDirs = ['com.project.maingradle'、 'com.otherproject.changedsourcefilesforthisproject']のようなjava srcコードフォルダに対してもこれを行うことができるかどうかはっきりしない。
signingConfigs:私は別のリリースのために使用して別のキーを定義したこのステップで
signingConfigs {
debugRelease {
storeFile file("debug.keystore")
}
release {
storeFile file("release.keystore")
}
testflight {
storeFile file("testflight.keystore")
}
}
大丈夫でなければなりません...
buildTypes:。
buildTypes {
debugRelease.initWith(buildTypes.release)
testflight.initWith(buildTypes.release)
sourceSets.debugRelease.setRoot("src/release")
sourceSets.debugRelease.setRoot("src/release")
sourceSets.debugRelease.setRoot("src/release")
debugRelease {
packageNameSuffix ".debugRelease"
versionNameSuffix "-DEBUG"
debuggable true
signingConfig signingConfigs.debug
}
testflight {
packageNameSuffix ".testflight"
versionNameSuffix "-TESTFLIGHT"
signingConfig signingConfigs.testflight
}
release {
packageNameSuffix ".release"
versionNameSuffix "-RELEASE"
runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')
signingConfig signingConfigs.release
}
}
このステップは、gradle android pluginの他のステップよりも明確に説明されています。ただし、あらかじめ定義されたリリースやデバッグ設定がバックグラウンドで動作しているかどうかはわかりません...とにかくそれを明確にする必要があります...少なくとも私はnamesuffixes、proguard、またはこのビルドの鍵(signingConfig)。
味:個人的に
flavorGroups "abi", "version"
productFlavors {
arm {
flavorGroup "abi"
}
standardproject1 {
flavorGroup "version"
minSdkVersion 7
targetSdkVersion 14
packageName "com.project.maingradle.normal"
sourceSet sourceSets.main
}
standardproject2 {
flavorGroup "version"
minSdkVersion 6
targetSdkVersion 14
packageName "com.otherproject.normal"
sourceSet sourceSets.main
}
testflightproject1 {
flavorGroup "version"
minSdkVersion 7
targetSdkVersion 14
packageName "com.project.maingradle.testflight"
sourceSet sourceSets.main
}
testflightproject2 {
flavorGroup "version"
minSdkVersion 6
targetSdkVersion 14
packageName "com.otherproject.testflight"
sourceSet sourceSets.main
}
}
}
私は味が最も興味深い部分だと思います。 Xavier Ducrohetは、さまざまなフレーバービルドに異なるキーを使用する場合は、ビルドタイプでキーを定義しないでください(代わりにフレーバーで宣言されています)。私はそれが正しく理解されているか分かりません。
とにかく私がここでやろうとしていたのは、さまざまな設定(例えば、異なるシステム用のバージョニング、専用のパッケージ名、設定したソースセットの設定など)でビルドする必要があるさまざまなフレーバーを定義することです。どのようなビルドタイプがフレーバーに依存しているかはわかりません...すべてのビルドタイプにすべての味を乗せますか?そして...ソースセットを設定しても構いません(ソースセットをさらに設定できる場合)
私は同様のものを試しました。あなたのリリースapk、 'gradle build'に署名するためにあなたはコマンドを実行しますか?私は私の 'build/apk'フォルダに署名されていないapkファイルしか見ません。 –
優秀な質問、gradleドキュメントはひどいです – Piotr
sourceSets.debugRelease.setRoot( "src/release")を意図的に3回繰り返していますか? –