Chúng tôi có một dự án gradle có chứa 4 mô-đun: 1 mô-đun thư viện và 3 ứng dụng android. Để xây dựng ứng dụng của chúng tôi, chúng tôi sử dụng circleCI. Chúng tôi cũng đã vô hiệu hóa ưu tiên cho vòng trònCI xây dựng theo hướng dẫn this.Instabug cho Android xây dựng cảnh báo
Mọi thứ đều tuyệt vời cho đến khi tôi thêm Instabug vào một trong các dự án của chúng tôi. Chúng tôi đã đạt đến giới hạn circleCI 4GB kể từ đó. Trên hết, dự án có Instabug là một sự phụ thuộc sẽ bắt đầu nhiệm vụ gradent preDex
, bất kể điều gì. Để bắt đầu xây dựng mới, chúng tôi sử dụng lệnh sau: ./gradlew assembleDebug -PpreDexEnable=false
.
Dự án có sử dụng Instabug được một số cảnh báo trong thời gian xây dựng như thế này: thuộc tính
InnerClasses Bỏ qua cho một lớp bên trong vô danh (com.instabug.library.b) mà không đi kèm với một thuộc tính EnclosingMethod liên quan. Lớp này có thể được tạo bởi trình biên dịch không nhắm mục tiêu định dạng tệp .class hiện đại. Giải pháp được đề xuất là biên dịch lại lớp từ nguồn, sử dụng trình biên dịch cập nhật và không chỉ định bất kỳ tùy chọn loại "-target" nào. Hậu quả của việc bỏ qua cảnh báo này là các hoạt động phản chiếu trên lớp này sẽ không chính xác cho biết rằng đó là không phải là một lớp bên trong.
Tôi giả định rằng chúng tôi đạt đến giới hạn 4 GB do tác vụ preDex được bắt đầu cho "Dự án Instabug".
Có ai có ý tưởng gì về những gì đang xảy ra không?
Edit: file gradle
gốc 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
}
]
}
mô-đun kiosk 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
Đây là Hassan từ Instabug. Cảnh báo đó gây phiền nhiễu, nhưng nó không gây ra bất kỳ vấn đề nào. Một câu hỏi liên quan đến SO [ở đây] (http://stackoverflow.com/questions/3308010/what-is-the-ignoring-innerclasses-attribute-warning-output-during-compilation/3308059). Chúng tôi sẽ loại bỏ cảnh báo đó trong bản phát hành trong tương lai. Về nhiệm vụ preDex, điều này có xảy ra cục bộ không? hoặc chỉ trên CircleCI? –
Nó xảy ra ở cả hai nơi, cục bộ và circleCI. –
Tôi không thể sao chép địa phương này, bạn có thể thêm build.gradle gốc của mình vào câu hỏi không? –