हमारे पास एक ग्रेडल प्रोजेक्ट है जिसमें 4 मॉड्यूल: 1 लाइब्रेरी मॉड्यूल और 3 एंड्रॉइड ऐप्स शामिल हैं। हमारे ऐप्स बनाने के लिए हम सर्कलसीआई का उपयोग करते हैं। हमने सर्कलसीआई के लिए प्रीएक्स-आईएनजी को भी अक्षम कर दिया है this मार्गदर्शिका का पालन करता है।एंड्रॉइड बिल्ड चेतावनी के लिए Instabug
जब तक मैंने इंस्टागग को हमारी परियोजनाओं में से एक में जोड़ा, तब तक सब कुछ बढ़िया था। हम तब से सर्कल सीआई 4 जीबी सीमा तक पहुंच रहे हैं। उस पर, प्रोजेक्ट जिसमें एक निर्भरता के रूप में Instabug है, preDex
ग्रेडल कार्य शुरू करेगा, इससे कोई फर्क नहीं पड़ता। नया निर्माण शुरू करने के लिए, हम निम्न आदेश का उपयोग करते हैं: ./gradlew assembleDebug -PpreDexEnable=false
।
परियोजना Instabug का उपयोग करता है इस तरह के निर्माण के समय के दौरान कुछ चेतावनियों हो जाता है:
की उपेक्षा कर InnerClasses एक गुमनाम आंतरिक वर्ग (com.instabug.library.b) के लिए विशेषता है कि एक साथ नहीं आता है संलग्न संलग्नक विधि विशेषता। इस वर्ग को शायद कंपाइलर द्वारा उत्पादित किया गया था जो आधुनिक .class फ़ाइल प्रारूप को लक्षित नहीं करता था। अनुशंसित समाधान एक अप-टू-डेट कंपाइलर का उपयोग करके और किसी भी "-targetarget" प्रकार विकल्पों को निर्दिष्ट किए बिना, स्रोत से वर्ग को पुन: संकलित करना है। को अनदेखा करने का नतीजा यह चेतावनी है कि इस वर्ग पर प्रतिबिंबित संचालन गलत तरीके से इंगित करेगा कि यह एक आंतरिक वर्ग नहीं है।
मुझे लगता है कि हम "इंस्टाबग प्रोजेक्ट" के लिए शुरू किए गए प्रीडेक्स कार्य के कारण 4 जीबी सीमा तक पहुंच रहे हैं।
क्या किसी के पास क्या हो रहा है इस पर कोई विचार है?
संपादित करें: Gradle फ़ाइलों
जड़ build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'de.hannesstruss:godot:0.2'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.11.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'de.hannesstruss.godot'
apply plugin: 'com.github.ben-manes.versions'
apply from: 'dependencies.gradle'
def ciServer = 'CI'
def executingOnCI = "true".equals(System.getenv(ciServer))
ext {
// preDexEnable property will come from the command line when circleCI is building the project.
if (project.hasProperty('preDexEnable')) {
project.ext.preDexLibs = project.properties['preDexEnable'].equals('true')
} else {
project.ext.preDexLibs = true // pre dexing should be true by default
}
buildTime = new Date().format("yyyy-MM-dd'T'HH:mm'Z'", TimeZone.getTimeZone("UTC"))
developmentFlavor = {
applicationId "${project.ext.appId}.${name}"
versionName "${project.ext.verName}-${name}"
minSdkVersion 15
buildConfigField "String", "API_TYPE", "\"${name}\""
resValue "string", "tray__authority", "${applicationId}.tray"
}
defaultLibraryFlavorConfig = {
targetSdkVersion 22
versionCode project.ext.verCode
versionName project.ext.verName
multiDexEnabled true
buildConfigField "String", "GIT_SHA", "\"${project.ext.gitSha}\""
buildConfigField "String", "BUILD_TIME", "\"${buildTime}\""
}
defaultFlavorConfig = defaultLibraryFlavorConfig << {
applicationId project.ext.appId
resValue "string", "tray__authority", "${applicationId}.tray"
}
defaultAndroidConfig = {
compileSdkVersion 22
buildToolsVersion "22.0.1"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
dexOptions {
javaMaxHeapSize executingOnCI ? "2048m" : "4g"
jumboMode true
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/services/javax.annotation.processing.Processor'
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
}
subprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
project.ext.gitSha = 'git rev-parse --short HEAD'.execute([], project.projectDir).text.trim()
project.plugins.whenPluginAdded { plugin ->
if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
} else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
}
}
}
dependencies.gradle
ext {
kiosk = [
dependencies: {
compile project(':common')
compile libraries.multidex
compile libraries.viewPagerIndicator
compile libraries.recyclerview
compile libraries.volley
compile libraries.instabug
compile libraries.mixpanel
compile libraries.loadToast
compile(libraries.crashlytics) {
transitive = true;
}
compile libraries.dagger
apt libraries.daggerCompiler
provided libraries.javaxAnnotations
}
]
}
काउंटर मॉड्यूल build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/repo' }
jcenter()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.6'
classpath 'io.fabric.tools:gradle:1.+'
}
}
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url 'http://archiva.instabug.com/repository/release' }
maven { url "https://jitpack.io" }
}
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'io.fabric'
// Manifest version information!
def versionMajor = 1
def versionMinor = 0
def versionPatch = 0
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
ext.verCode = versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
ext.verName = "${versionMajor}.${versionMinor}.${versionPatch}"
ext.appId = 'care.smart.android.kiosk'
android defaultAndroidConfig << {
defaultConfig defaultFlavorConfig << {
minSdkVersion 21
buildConfigField "String", "APP_NAME", "\"Android-Kiosk\""
}
productFlavors {
realProduction {
buildConfigField "String", "API_TYPE", '"prod"'
}
// dev developmentFlavor
}
}
dependencies kiosk.dependencies
यह इंस्टागग से हसन है। यह चेतावनी कष्टप्रद है, लेकिन इससे कोई समस्या नहीं होनी चाहिए। एसओ [यहां] पर एक संबंधित प्रश्न (http://stackoverflow.com/questions/3308010/what-is-the-ignoring-innerclasses-attribute-warning-output-during-compilation/3308059)। हालांकि हम भविष्य में रिलीज में उस चेतावनी से छुटकारा पा रहे हैं। प्रीडेक्स कार्य के संबंध में, क्या यह स्थानीय रूप से भी हो रहा है? या बस CircleCI पर? –
यह दोनों स्थानों, स्थानीय और सर्कलसीआई में होता है। –
मैं इसे स्थानीय रूप से दोहराना नहीं कर सकता, क्या आप अपने रूट build.gradle को प्रश्न में जोड़ सकते हैं? –