由于Android Studio将成为Android开发的默认IDE,我决定将现有项目迁移到Android-studio。项目结构似乎不同,我的项目中文件夹的层次结构如下:
Complete Project
->.idea
-> build
-> Facebook SDK
-> MainProject
-> ... (Other Libraries)
build.gradle
local.properties
settings.gradle
...
External Libraries
-> Android API 8 Platform
-> Android API 18 Platform
-> Android API 19 Platform
-> 1.7 Java
-> support-v4-19.1.0
我的MainProject有一个libs文件夹,其中包含项目中使用的不同jar。令人惊讶的是,它不包含我的eclipse项目中存在的android-support-v4 jar。因此,似乎根目录下的外部Libraries文件夹必须处理它。
但是在导入之后,当我尝试编译项目时,开始为所有与android支持库相关的某些类抛出“Symbol not found error”。
例如:Android Studio中的自动完成功能为我提供了来自android.support.v4.app.NotificationCompat的NotificaitonCompat的建议,但当我尝试编译我的项目模块时,它说
错误:(17,30)错误:找不到符号类NotificationCompat错误:任务':app:compileDebugJava'的执行失败。>编译失败;有关详细信息,请参阅编译器错误输出。
对于同一个支持库,在许多其他类中也会发生这种情况。我试图插入一个jar并在mainProject的build.gradle中更改了相同的内容,但错误仍然存在。
我甚至尝试重新启动并再次构建项目,但没有任何改变。
编辑: 我在MainProject中附加了Gradle文件
MainProject模块中的apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "package.app"
minSdkVersion 8
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
dependencies {
compile project(':facebookSDK')
compile project(':library')
compile project(':volley')
compile 'com.google.android.gms:play-services:+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:19.1.0'
compile files('libs/FlurryAnalytics_3.3.3.jar')
compile files('libs/universal-image-loader-1.8.4.jar')
....
}
答案 0 :(得分:1)
构建文件的这一部分:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
告诉构建系统忽略support-v4,这就是它不编译的原因。删除它。
在您的构建文件中,您有这个,这是包含支持的正确方法:
compile 'com.android.support:support-v4:19.1.0'
如果您的任何模块的 libs 目录中有支持库jar文件,请将其删除并确保以这种方式引用它 - 如果您将库包含在jar中,你可能会遇到多次包含jar的问题,这会导致dex错误。
答案 1 :(得分:0)
如果你有一个' libs'目录,您可以在build.gradle文件中指定它:
dependencies{
compile fileTree(dir: 'libs', include: ['*.jar']
compile 'com.android.support:support-v4:21.0.3' //to automatically add up-to-date support lib
}
希望这有帮助!