2015-11-13 144 views
1

我從GitHub的osmdroid代碼,並且它在Android Studio項目,與頂層結構如下所示:參考在同一項目中的一類,不同的模塊

+OpenStreetMapViewer 
+osmdroid-android 
+osmdrod-packager 
+osmdroid-third-party 
+sample 
+Gradle Scripts 

然後我說我自己的模塊:

+OpenStreetMapViewer 
+MyModule 
+osmdroid-android 
+osmdrod-packager 
+osmdroid-third-party 
+sample 
+Gradle Scripts 

MyModule有一個活動(一個AppCompatActivity),它運行得很好。現在我想使用的類MapActivityOpenStreetMapViewerMyModule 所以我想補充的依賴到的build.gradle爲MyModule的

dependencies { 
    ... 
    compile project(':OpenStreetMapViewer') 
} 

這不」似乎不起作用,因爲:
- 當嘗試使用MapActivity在MyModule的,它不知道在哪裏可以找到它
- 我得到這樣的警告:

Warning:Dependency org.osmdroid:OpenStreetMapViewer:5.0-SNAPSHOT on project emnrdstickylistheaders resolves to an APK archive which is not supported as a compilation dependency. 
File: D:\Users\myusername\AndroidstudioProjects\osmdroid-stickylist\OpenStreetMapViewer\build\outputs\apk\OpenStreetMapViewer-release-unsigned.apk 

我該怎麼辦呢?

回答

2

我會得到這個flak,但如果從另一個APK導入一個類是你需要要做的,那麼不要使用gradle。 Maven可以通過maven-android-plugin 來完成。事實上,這正是osmdroid爲集成測試所做的。這是一個取決於APK的APK項目。當然,這樣做的缺點是支持使用maven作爲android studio的構建工具是非常糟糕的。 Intellij略勝一籌,但仍有一些未解決的問題,例如這一個https://youtrack.jetbrains.com/issue/IDEA-145825

真正的問題應該是「這是正確的方法嗎?」 (導入APK作爲依賴項)。對此,我會回答,考慮當前構建工具支持gradle的狀態,不。將MapActivity的相關部分複製到自己的項目中,或者從頭開始,只導入需要的庫作爲依賴項,可能會更好。換句話說,你的gradle這個文件應包含的(這是在這裏:https://github.com/osmdroid/osmdroid/wiki/How-to-add-the-osmdroid-library-via-Gradle):

dependencies { compile 'org.osmdroid:osmdroid-android:[email protected]' }

然後按照該如何操作指南位於這裏的osmdroid維基休息:https://github.com/osmdroid/osmdroid/wiki/How-to-use-the-osmdroid-library如何使用它以滿足您的需求。

有很多方法可以使osmdroid彎曲您的需求。如果你無法做到你想做的,在github上打開一個問題。我是貢獻者,擁有寫入權限並可以提供幫助。

+0

庫的'MapActivity'部分,即aar文件?它似乎不是。將它包含在依賴關係中看起來並沒有提供「MapActivity」。 –

+1

不,不是。這很簡單。只需使用嚮導創建一個新活動,隨便調用它,然後更改佈局文件以包含osmdroid mapview。而已 – spy

相關問題