2015-07-20 7 views
7

हमारे पास एक ग्रेडल प्रोजेक्ट है जिसमें 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 
+0

यह इंस्टागग से हसन है। यह चेतावनी कष्टप्रद है, लेकिन इससे कोई समस्या नहीं होनी चाहिए। एसओ [यहां] पर एक संबंधित प्रश्न (http://stackoverflow.com/questions/3308010/what-is-the-ignoring-innerclasses-attribute-warning-output-during-compilation/3308059)। हालांकि हम भविष्य में रिलीज में उस चेतावनी से छुटकारा पा रहे हैं। प्रीडेक्स कार्य के संबंध में, क्या यह स्थानीय रूप से भी हो रहा है? या बस CircleCI पर? –

+0

यह दोनों स्थानों, स्थानीय और सर्कलसीआई में होता है। –

+1

मैं इसे स्थानीय रूप से दोहराना नहीं कर सकता, क्या आप अपने रूट build.gradle को प्रश्न में जोड़ सकते हैं? –

उत्तर

4

मेरे पास इस प्रश्न का कोई वास्तविक जवाब नहीं है। लेकिन preDex कार्य minSdkVersion 21 के कारण बनाया गया था। इसके अलावा, हम खुद को 4 जीबी रैम तक सीमित नहीं कर पाए, इसलिए हमें इसे 6 जीबी तक टक्कर लाना पड़ा।

संबंधित मुद्दे