库模块中的包在主模块中找不到

6
我有一个项目,我从Eclipse导入到Android Studio。在Eclipse中一切正常。
它包含一个主模块(在Eclipse中的项目),该模块使用库模块(在Eclipse中的库项目)中的包。由于迁移没有顺利进行,我手动创建了一个库模块,并将所有源代码复制到新创建的模块中。
问题是主模块似乎找不到来自库模块的包,当我重建项目时,会出现“包不存在”的错误。
这是主模块gradle.build的内容:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.pointer.mamagoose"
        minSdkVersion 9
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':linphoneclean')
    compile 'com.android.support:support-v4:25.0.0'
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.google.android.gms:play-services:9.4.0'
    compile files('libs/firebase-client-android-2.5.0.jar')
    compile files('libs/apache-httpcomponents-httpclient.jar')
    compile files('libs/apache-httpcomponents-httpcore.jar')
    compile files('libs/android-support-v7-recyclerview.jar')
}

linphoneclean是库模块。

整个项目的settings.gradle:

include ':linphoneclean'
include ':tigris'

这是库模块的build.gradle文件:
apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.0'
    testCompile 'junit:junit:4.12'
    compile 'com.google.code.gson:gson:2.6.2'
    compile files('libs/commons-lang3-3.4.jar')
    compile files('libs/linphone.jar')
    compile files('libs/firebase-client-android-2.5.0.jar')
}

库模块的结构例如包含文件夹: src/main/com/pointer/linphone(里面有所有带有package com.pointer.linphone声明的java文件,但我仍然会收到错误消息">“package com.pointer.linphone不存在”)。

我做错了什么?


据我所见,您没有为linphoneclean和tigris指定模块项目的路径。正如您在我的答案中看到的,在您要求查看此问题的设置.gradle中包含两个内容:第一个是“incluse…”,第二个是模块的路径。例如: include ':facebook'project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK') - Vilen
你曾经找到过根本原因吗?我也遇到了类似的问题 :(。 - Apo
很抱歉,但是不行。在这种情况下,我的库比较小,所以我只是将它添加到了主项目中。 - CodeMonkey
我遇到了完全相同的问题。我有一个工作项目,在几个月后在一个新系统中打开,使用了更新版本的Android Studio。我尝试了清理/重建,但什么都不起作用。为了测试这个问题,我创建了一个全新的项目。创建了一个Common库模块(其中包含Google Guava依赖项),将Common模块包含在主App项目中。但是App项目无法看到任何Guava包。这太疯狂了! - TiN
3个回答

1

在这个问题上与它战斗了几个小时后,我终于找到了解决方法。

我创建了一个新项目,添加了一个带有虚拟类的库模块,并定义了依赖关系。通过在应用程序中导入虚拟类来验证其是否有效。然后,我将所有相关代码从真实项目中复制过来。

我的想法是,这可能是IDE的iml文件的问题,因为从头开始并复制内容可以解决问题。


既然我提出了这个问题后已经过了这么长时间,我现在不会再进行测试了。但既然这是唯一看起来合理的答案,我会接受它。 - CodeMonkey

0

我可能在你的回答中漏掉了一些东西,但我的Java文件当然在src文件夹中,资源在res文件夹中。 - CodeMonkey

0
也许您可以检查库的AndroidManifest是否正确定义了包名,例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
          package="com.pointer.linphone">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接