AndroidAnnotions: В релизе buildType не удается найти символ - PullRequest
0 голосов
/ 18 декабря 2018

Andoid Studio 3.2.1 Gradle 4.1

В режиме отладки проект имеет applicationId "com.myproject".В режиме релиза проект имеет `applicationId" com.myproject.beta "

В моем проекте / build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'

В моем приложении / build.gradle:

  apply plugin: 'com.android.application'

   android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.myproject"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['KEY_ALIAS_RELEASE']
            keyPassword keystoreProperties['KEY_PASSWORD_RELEASE']
            storeFile file(keystoreProperties['STORE_FILE_RELEASE'])
            storePassword keystoreProperties['STORE_PASSWORD_RELEASE']
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            configBuildType(delegate, "Release instance", "Release app name", "beta")
        }
        debug {
            configBuildType(delegate, "Release instance", "Release app name", null)
            ext.betaDistributionReleaseNotes = defaultConfig.versionName + " " + name
            ext.betaDistributionEmailsFilePath = "app/beta_distribution_emails.txt"
        }
    }

} 

def configBuildType(buildType, instanceName, appName, appIdSuffix) {
    buildType.resValue("string", "app_name", appName)
    buildType.applicationIdSuffix(appIdSuffix)
    buildType.buildConfigField("String", "INSTANCE_NAME", instanceName)
}

def AAVersion = '4.5.2'

dependencies {
    annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
    annotationProcessor "org.androidannotations:ormlite:$AAVersion"

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:animated-vector-drawable:28.0.0'
    implementation 'com.android.support:exifinterface:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:customtabs:28.0.0'
    implementation 'com.android.support:support-media-compat:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'

    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'org.apache.commons:commons-lang3:3.8.1'
    implementation 'org.apache.httpcomponents:httpclient:4.5.6'
    implementation 'com.google.android.gms:play-services-gcm:16.0.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.j256.ormlite:ormlite-android:5.1'
    implementation 'commons-io:commons-io:2.6'
    implementation "org.androidannotations:androidannotations-api:$AAVersion"
    implementation "org.androidannotations:ormlite-api:$AAVersion"

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Как вы можете видеть, я использую android-аннотацию lib:

org.androidannotations:androidannotation:4.5.2'

Когда я выбираю buildType = debug сборка проекта успешно.

Но когда я выбираюbuildType = release Я получаю ошибки:

:scanlib:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease UP-TO-DATE
:app:javaPreCompileRelease UP-TO-DATE
D:\myproject\app\activity\DebugConfigActivity.java:29: error: cannot find symbol
import com.myproject.app.widget.DebugRuleWidget_;
                            ^
  symbol:   class DebugRuleWidget_
  location: package com.myproject.app.widget

Здесь активность:

import org.androidannotations.annotations.EActivity;
import com.myproject.app.utils.AndroidUtil;
import com.myproject.app.widget.DebugRuleWidget_; // error here

@EActivity
public class DebugConfigActivity extends AppCompatActivity ..
}

import org.androidannotations.annotations.EView;
    @EView
    public class DebugRuleWidget extends LinearLayout implements ContextMenuInfo {
    }

1 Ответ

0 голосов
/ 15 февраля 2019

Добавить этот блок:

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["resourcePackageName": android.defaultConfig.applicationId]
            }
        }
    }
}
...