Ben fonksiyonları var uzun build.gradle
dosya var Ben mantık temizlemek için ayrı .gradle
dosya taşımak istiyorum. Dokümanlar bu vaka için external build scripts kullanılmasını önerir. o build.gradle
dosyasına yerleştirildiğinde kod mantığı, bu iyi çalışıyor fark etmezBuild.gradle mantığını daha .grad dosyaları nasıl bölerim?
android{
buildTypes {
debug {
signingConfig = loadFromPropertiesFile("DEBUG_KEY_PROPERTIES")
}
}
}
import com.android.builder.signing.DefaultSigningConfig
import com.android.builder.model.SigningConfig
SigningConfig loadFromPropertiesFile(keyProperty) {
// Load signing config from singning properties file
println keyProperty
println ("${keyProperty}")
if (project.hasProperty(keyProperty)) {
File releasePropsFile = new File(project.property(keyProperty))
println("Loading config from properties file: ${releasePropsFile}")
if (releasePropsFile.exists()) {
Properties releaseProps = new Properties()
releaseProps.load(new FileInputStream(releasePropsFile))
println releaseProps
def signingConfig = new DefaultSigningConfig(keyProperty)
signingConfig.storeFile = file(releasePropsFile.getParent() + "/" + releaseProps['keystore.file'])
signingConfig.storePassword = releaseProps['keystore.password']
//signingConfig.storeType = 'PKCS12'
signingConfig.keyAlias = releaseProps['alias.name']
signingConfig.keyPassword = releaseProps['alias.password']
return signingConfig
} else {
println("Can't read configuration file: ${releasePropsFile}")
return null
}
} else {
println("Project has not define configuration file: ${keyProperty}")
return null
}
}
: Ben build.gradle
dosyanın sonraki fonksiyonu var. Önümüzdeki hata var
apply from: "$rootDir/gradle/android-signing.gradle"
:
Cannot cast object 'DefaultSigningConfig{..}' with class
com.android.builder.signing.DefaultSigningConfig' to class
'com.android.builder.model.SigningConfig'
Temelde bunun arayüzüne uygulanmasını döküm olamayacağını söylüyor ben harici dosyaya bu yöntemi taşımak ve onu eklediğinizde Ama başarısız . DefaultSigningConfig, SigningConfig see here uyguladığı için. Sonraki answer'u görene kadar mantıklı değil.
Two classes are treated as entirely different classes, even if they have the same package and name (and even implementation/fields/methods) when loaded by different classloaders. Which is the case when you are using plugin or external build script.
Ama sonra modüler ayrı dosyalar halinde build.gradle
gelen yöntemler bölmek nasıl?
Eğer itibaren geçerli kullanıyorsunuz zaman:? Sadece loadFromPropertiesFile yöntemini tanımlar mısınız? android {} yan tümcesi ve kullanmak istediğiniz göreceli sınıfları kullanmak istiyorsanız, uygulamadan ÖNCE android eklentiyi uyguladığınızdan emin olmalısınız! Uygula, temel olarak, tanımlanmışsa yerel değişkenlerin aktarılmadığı durumlar haricindedir. – codeScriber
@Sergii Pechenizkyi Hiç bir işe mi çalışıyorsun? –