2015-11-13 53 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

相关问题