Reputation: 3893
In project I have several flavors
, several buildTypes
and several folders
for combinations
Build combinations:
Folder structure
In each folder I have custom Application class
+ AndroidManifest
to register this Application class
Sometime, but just sometimes build fails with cannot find symbol
error:
\app\src\main\java\ru\my\package\app\environment\MyApp.java:35: error: cannot find symbol
.core(new CrashlyticsCore.Builder().disabled(!BuildConfig.ANALYTICS).build())
or App
class independent but the same error
\app\src\main\java\ru\my\package\presentation\presenter\impl\MainPresenterImpl.java:104: error: cannot find symbol
if (!BuildConfig.ANALYTICS) return;
But the very next build could be successful, so the possible flow is
Note
import
problemDisclaimer: there are questions that looks like this one, but they're different, e.g.
Gradle buildConfigField BuildConfig cannot resolve symbol
UPDATE
Gradle dependencies:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(path: ':OVSALibrary')
implementation project(path: ':YaMapProject')
implementation 'com.jakewharton:butterknife:8.8.1'
implementation 'com.google.dagger:dagger:2.14.1'
kapt 'com.google.dagger:dagger-compiler:2.14.1'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'eu.davidea:flexible-adapter:5.0.0-rc3'
kapt 'com.jakewharton:butterknife-compiler:8.8.1'
implementation "com.android.support:appcompat-v7:$support_lib_version"
implementation "com.android.support:design:$support_lib_version"
implementation "com.android.support:support-v4:$support_lib_version"
implementation "com.android.support:recyclerview-v7:$support_lib_version"
implementation "com.android.support:support-emoji:$support_lib_version"
implementation "com.android.support:support-emoji-appcompat:$support_lib_version"
implementation "com.android.support:support-emoji-bundled:$support_lib_version"
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.1.7'
implementation 'ru.egslava:MaskedEditText:1.0.5'
implementation 'nl.big-o:liqp:0.7.3'
implementation 'org.jsoup:jsoup:1.7.2'
implementation 'me.everything:overscroll-decor-android:1.0.4'
implementation 'com.squareup.picasso:picasso:2.6.0-SNAPSHOT'
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
compile ('com.squareup.retrofit2:converter-simplexml:2.3.0') {
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
exclude group: 'xpp3', module: 'xpp3'
}
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation ('com.github.revern:socket.io-client-java:master-SNAPSHOT') {
exclude group: 'org.json', module: 'json'
}
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
implementation 'com.luckycatlabs:SunriseSunsetCalculator:1.2'
implementation ('com.github.developer-shivam:Crescento:1.2.1') {
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'palette-v7'
}
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'
implementation('com.crashlytics.sdk.android:crashlytics:2.9.0@aar') {
transitive = true;
}
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.malinskiy:superrecyclerview:1.1.4'
// Yandex.Map things
implementation 'com.yandex.android:mapkit:3.0.0'
// Yandex ads. Adfox.
rcImplementation 'com.yandex.android:mobmetricalib:3.0.0'
debugWithAnalyticsImplementation 'com.yandex.android:mobmetricalib:3.0.0'
releaseImplementation 'com.yandex.android:mobmetricalib:3.0.0'
implementation 'com.yandex.android:mobileads:2.71'
// Waiting for https://github.com/SundeepK/CompactCalendarView/pull/287
// Waiting for https://github.com/SundeepK/CompactCalendarView/pull/288
implementation 'com.github.dryaz:CompactCalendarView:master-SNAPSHOT'
// Waiting for https://github.com/opacapp/multiline-collapsingtoolbar/pull/57
implementation 'com.github.dryaz:multiline-collapsingtoolbar:master-SNAPSHOT'
implementation 'com.github.clans:fab:1.6.4'
implementation 'org.greenrobot:eventbus:3.1.1'
testImplementation "org.robolectric:robolectric:3.8"
testImplementation 'junit:junit:4.12'
testImplementation "com.android.support.test:monitor:1.0.2"
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// PAY SDK
implementation(name:'mos-pay-sdk-1.0.9', ext:'aar')
implementation 'io.card:android-sdk:5.5.1'
implementation ('eu.livotov.labs.android:3DSView:1.1.2@aar') {transitive=true}
// Android Architecture Components
implementation "android.arch.lifecycle:runtime:$androidArch"
implementation "android.arch.lifecycle:extensions:$androidArch"
annotationProcessor "android.arch.lifecycle:compiler:$androidArch"
compile 'com.google.firebase:firebase-core:16.0.0'
compile 'com.google.firebase:firebase-messaging:17.0.0'
}
** UPDATE **
Here's the list of buildTypes
and productFlavors
flavorDimensions("devbeta", "mainmirror")
productFlavors {
// Beta API enviroment
beta {
dimension = "devbeta"
buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/api-beta/socket.io\""
}
// Dev API enviroment
dev {
dimension = "devbeta"
buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/api-dev/socket.io\""
}
// Prod API enviroment
prod {
dimension = "devbeta"
buildConfigField "String", "SOCKET_REMOTE_PATH", "\"/socket.io\""
}
mainhost {
dimension = "mainmirror"
buildConfigField "String", "CONFIG_REMOTE_HOSTNAME", "\"some.host.url\""
}
mirrorhost {
dimension = "mainmirror"
buildConfigField "String", "CONFIG_REMOTE_HOSTNAME", "\"some.host.url\""
}
}
buildTypes {
debug {
minifyEnabled false
shrinkResources false
buildConfigField "boolean", "ANALYTICS", "false"
signingConfig signingConfigs.customDebug
ext.enableCrashlytics = false
manifestPlaceholders = [
firebaseAnalyticsDeactivated: "true",
appIcon: "@mipmap/ic_launcher_debug",
]
}
debugWithAnalytics.initWith(buildTypes.debug)
debugWithAnalytics {
ext.betaDistributionGroupAliases = "group-internal"
ext.betaDistributionReleaseNotes = "$getReleaseNotes"
ext.enableCrashlytics = true
buildConfigField "boolean", "ANALYTICS", "true"
matchingFallbacks = ['debug', 'release']
}
debugWithProguard.initWith(buildTypes.debug)
debugWithProguard {
minifyEnabled true
shrinkResources true
proguardFiles(file('./proguard').listFiles())
matchingFallbacks = ['release', 'debug']
}
// RC build for inner testers that has analytics, signed with debug key.
rc {
minifyEnabled true
shrinkResources true
proguardFiles(file('./proguard').listFiles())
buildConfigField "boolean", "ANALYTICS", "true"
// Fields for fabric beta distribution
ext.betaDistributionGroupAliases = "group-internal"
ext.betaDistributionReleaseNotes = "$getReleaseNotes"
signingConfig signingConfigs.customDebug
manifestPlaceholders = [
firebaseAnalyticsDeactivated: "false",
appIcon: "@mipmap/ic_launcher_rc",
]
matchingFallbacks = ['debug', 'release']
}
release.initWith(buildTypes.rc)
release {
buildConfigField "boolean", "ANALYTICS", "true"
ext.betaDistributionGroupAliases = "group-customer"
signingConfig signingConfigs.release
manifestPlaceholders = [
firebaseAnalyticsDeactivated: "false",
appIcon: "@mipmap/ic_launcher",
]
}
}
Upvotes: 12
Views: 30779
Reputation: 89
This helped me.
android {
buildFeatures {
buildConfig = true
}
}
And rebuild project.
Upvotes: 7
Reputation: 637
In my case I had another component which included an extra import that interfered with my base BuildConfig file
Look for imports from external libraries or components such as
import com.dpizarro.uipicker.library.BuildConfig;
and just delete them and rebuild.
Upvotes: 1
Reputation: 31
Rebuild Project if you have still problem on importing Package Name and then .BuildConfig
Upvotes: 2
Reputation: 7813
I have similar error, i.e. can't resolve BuildConfig.FOO
, it's because of some other places has red mark error, e.g. you might unnoticed AndroidManifest.xml
contains non-existent service class marked in red color. Fixed the service class first, then rebuild, the red color on BuildConfig.FOO
are gone.
The lesson learned was don't focus at fixing specific red color which you don't see anything wrong, instead try look at other file and fix that first.
Upvotes: 1
Reputation: 3070
I also have flavors in my app and I got to know that if I use debugVariant than BuildConfig
creates and works well but if I try to use releaseVariant to work on than it can't create BuildConfig
file.
Upvotes: 1
Reputation: 3893
Finally looks like I've found a reason, I have the library project exactly with the same package ID as the main app
, so the inner BuildConfig
for library project doesn't contain variable.
Upvotes: 1
Reputation: 1244
Might be complete nonsense, but have you ever tested it with putting a default value directly in your defaultConfig?
defaultConfig {
buildConfigField "boolean", "ANALYTICS", "false"
}
Upvotes: 3