【问题标题】:Android studio unable to locate project libraryAndroid Studio 找不到项目库
【发布时间】:2014-10-30 16:09:17
【问题描述】:

我使用的是 Android Studio 0.8.9

最近,我正在将 Eclipse 项目迁移到 Android Studio 项目中。我从File -> Import Project...开始

我遇到了一个非常奇怪的问题,Android Studio 无法编译我的主项目,原因是找不到符号。这些符号假设可以在我的一个库项目中找到:https://code.google.com/p/android-lockpattern/(版本 3.0.1)

这是错误消息之一

C:\projects\xxx.java:4: error: cannot find symbol 
import group.pals.android.lib.ui.lockpattern.prefs.DisplayPrefs;

这是我奇怪的观察

我可以确认在构建 androidlockpattern 时没有错误

:androidlockpattern:compileLint
:androidlockpattern:copyReleaseLint UP-TO-DATE
:androidlockpattern:preBuild
:androidlockpattern:preReleaseBuild
:androidlockpattern:checkReleaseManifest
:androidlockpattern:preDebugBuild
:androidlockpattern:preDebugTestBuild
:androidlockpattern:prepareComActionbarsherlockActionbarsherlock440Library UP-TO-DATE
:androidlockpattern:prepareReleaseDependencies
:androidlockpattern:compileReleaseAidl UP-TO-DATE
:androidlockpattern:compileReleaseRenderscript UP-TO-DATE
:androidlockpattern:generateReleaseBuildConfig UP-TO-DATE
:androidlockpattern:generateReleaseAssets UP-TO-DATE
:androidlockpattern:mergeReleaseAssets UP-TO-DATE
:androidlockpattern:generateReleaseResValues UP-TO-DATE
:androidlockpattern:generateReleaseResources UP-TO-DATE
:androidlockpattern:mergeReleaseResources UP-TO-DATE
:androidlockpattern:processReleaseManifest UP-TO-DATE
:androidlockpattern:processReleaseResources UP-TO-DATE
:androidlockpattern:generateReleaseSources UP-TO-DATE
:androidlockpattern:compileReleaseJava UP-TO-DATE
:androidlockpattern:proguardRelease UP-TO-DATE
:androidlockpattern:mergeReleaseProguardFiles UP-TO-DATE
:androidlockpattern:compileReleaseNdk UP-TO-DATE
:androidlockpattern:packageReleaseJniLibs UP-TO-DATE
:androidlockpattern:packageReleaseRenderscript UP-TO-DATE
:androidlockpattern:packageReleaseResources UP-TO-DATE
:androidlockpattern:bundleRelease

我的主要项目确实包含 androidlockpattern 作为模块

dependencies {
    compile project(':androidlockpattern')
    ...

Android Studio 编辑器可以识别 androidlockpattern。没有突出显示红线

我还有其他图书馆项目。它们都与我的主要项目一起编译得很好。到目前为止唯一的错误是 androidlockpattern。

这是详细的错误信息

C:\projects\xxx.java:4: error: cannot find symbol
import group.pals.android.lib.ui.lockpattern.prefs.DisplayPrefs;
                                                  ^
  symbol:   class DisplayPrefs
  location: package group.pals.android.lib.ui.lockpattern.prefs
C:\projects\xxx.java:195: error: cannot find symbol
            Intent intent = new Intent(LockPatternActivity.ACTION_COMPARE_PATTERN, null,
                                                          ^
  symbol:   variable ACTION_COMPARE_PATTERN
  location: class LockPatternActivity
C:\projects\xxx.java:198: error: cannot find symbol
            DisplayPrefs.setMaxRetry(this, Integer.MAX_VALUE);
            ^
  symbol:   variable DisplayPrefs
  location: class JStockFragmentActivity
C:\projects\xxx.java:199: error: cannot find symbol
            intent.putExtra(LockPatternActivity.EXTRA_PATTERN, startupLockPattern);
                                               ^
  symbol:   variable EXTRA_PATTERN
  location: class LockPatternActivity
C:\projects\xxx.java:1239: error: cannot find symbol
            case LockPatternActivity.RESULT_FAILED:

对于androidlockpattern 中的build.gradle,如下所示

apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "group.pals.android.lib.ui.lockpattern"
        minSdkVersion 10
        targetSdkVersion 10
    }

    buildTypes {
        release {
            runProguard true
            proguardFiles 'proguard.cfg'
        }
    }
}

dependencies {
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile 'com.android.support:support-v4:19.1.0'
}

这是我的项目设置。我觉得很好。

知道我可以采取哪些其他步骤来诊断根本原因吗?

【问题讨论】:

  • 模块的 build.gradle 是什么样子的?
  • @PedroOliveira 我更新了我的问题。谢谢。
  • targetSdkVersion 10 更改为 targetSdkVersion 19 :)
  • 也许你在其他地方覆盖了目标。就像在清单什么的。我应该用它发布答案吗?
  • 对不起。我犯了一个错误。同样的错误仍然...

标签: android eclipse gradle android-studio android-gradle-plugin


【解决方案1】:

根据 Android 文档:

ProGuard 工具通过以下方式缩小、优化和混淆您的代码 删除未使用的代码并重命名类、字段和方法 语义模糊的名称。

runProguard true 更改为runProguard false

如果你想在你的项目上运行 Proguard,你应该相应地更改 proguard.cfg

此错误也可能适用于您:https://code.google.com/p/android/issues/detail?id=52962

【讨论】:

【解决方案2】:
  • 删除您的库,从项目中删除它们。
  • 复制到“app”/libraries/
  • 继续文件 -> 导入模块,选择库文件夹中的库。
  • 添加行 -> 编译项目(':your_library_folder_name') 到 build.gradle。
  • 同步 gradle。
  • 构建项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2018-11-06
    • 2017-01-17
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多