Ответ 1
Я указал на проблему. TargetSdk version
и support package version
двух проектов не одинаковы. После изменения их с последней версией моя проблема решена.
У меня есть два проекта A и B, где B добавлен как модуль проекта A. Я добавил зависимости в файл сборки Gradle. Теперь я могу импортировать B-класс в без какой-либо ошибки (в редакторе), но не могу построить. Предпочтения - это класс проекта B.
Error:(22, 23) error: cannot find symbol class Preferences
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.0.0"
defaultConfig {
applicationId "com.example.A"
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(':B')
}
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: "android-library"
android {
compileSdkVersion 18
buildToolsVersion "21.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 11
}
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard.cfg'
}
}
sourceSets.main {
jniLibs.srcDir 'src/main/jniLibs'
jni.srcDirs = [] //disable automatic ndk-build call
}
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main/jni').absolutePath
} else {
commandLine '/opt/adt-bundle-linux/android-ndk-r8e/ndk-build', '-C', file('src/main/jni').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
}
Я могу успешно построить проект (A), если удалить импорт.
Я указал на проблему. TargetSdk version
и support package version
двух проектов не одинаковы. После изменения их с последней версией моя проблема решена.
Это может произойти, если библиотека (будь то локальный модуль или внешняя зависимость) имеет minifyEnabled true
, но конфигурация библиотеки ProGuard отсутствует или неверна (класс имеет право на удаление с помощью ProGuard). Это приводит к тому, что класс не компилируется.
Для меня это была аналогичная проблема, но на proguard conf. proguard был активен в первой библиотеке и неактивен на секунду.
Скопируйте тот же самый proguard conf на все build.gradle, решив ошибку "не удается найти символ символа".
У меня возникла эта ошибка, когда я добавил новый модуль в свой проект.
Чтобы исправить это, мне также пришлось изменить
minSdkVersion
targetSdkVersion
buildToolsVersion
и
compileSdkVersion
, чтобы соответствовать build.gradle
в моем исходном модуле.
После того, как я сделал это, ошибка все еще возникала, поэтому я установил minifyEnabled
в false
, а затем скомпилировал и запустил!