2016-11-08 97 views
4

我得到了一個從Eclipse導入到Android Studio的項目。在Eclipse中一切運行良好。在主模塊中找不到來自庫模塊的包

它包含一個使用庫模塊(Eclipse中的庫項目)中的包的主模塊(Eclipse中的項目)。由於遷移過程並不順利,我手動創建了一個庫模塊,並將所有源代碼複製到新創建的模塊中。

問題是主模塊似乎沒有從庫模塊中找到軟件包,當我重建項目時,出現類似「軟件包bla bla不存在」的錯誤。

這裏是主模塊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(內部有所有的java文件,減速度爲package com.pointer.linphone,但我仍然得到一個錯誤,說「package com.pointer.linphone does not exist)。

我在做什麼錯?

+0

至於我看你沒有指定爲linphoneclean和底格里斯河你的模塊項目路徑。正如你可以從我的答案中看到你問這個問題的位置settings.gradle首先包含兩件事情「incluse ...」第二個模塊路徑。示例: 包含':facebook' project(':facebook')。projectDir = new File(settingsDir,'../dependencies/FacebookSDK') – Vilen

+0

您是否曾設法找到根本原因?我有類似的問題:(。 – Apo

+0

對不起,但沒有..在這種情況下,我有一個足夠小的圖書館,所以我只是將它添加到主項目。 –

回答

0

這裏同樣的問題,爭取小時後爲我工作。

我創建了一個空白活動的新項目,添加了一個帶有虛擬類的庫模塊,定義了依賴關係。通過導入應用程序中的虛擬類來驗證它的工作原理。然後我複製了真實項目中的所有相關代碼。

我的想法是,它可能是IDE的iml文件的問題,因爲從頭開始並複製工作。

+0

自從我提出這個問題以來,我就不會再測試它了,但是由於它唯一的答案似乎合乎邏輯,我會接受它。 –

0

查看正確的源文件同時包含java文件夾和res文件夾,在Java包中添加java文件並在res文件夾中添加res。在Manifest文件中添加活動名稱請參閱此處,在Gradle文件中添加必要的庫文件。清理並重建項目在Android工作室。

https://developer.android.com/guide/topics/manifest/manifest-element.html

+0

我可能錯過了你的答案中的東西,當然我的java文件在res文件夾中的src文件夾和資源中.. –

0

也許你可以檢查庫的AndroidManifest已經正確定義的包,如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 
      package="com.pointer.linphone">