在一个复杂的项目中将已编译的android库链接在一起

时间:2013-07-17 18:33:29

标签: android command-line gradle

我正在将一个庞大,复杂的Android库项目迁移到gradle,并且无法将库项目合并到大型项目中。这已在其他问题中讨论过,但尚未(据我所知)发布有关此问题的人。我有几个应用程序,一堆第三方库和我自己的共享库。文件夹结构如下:

--Root
   -build.gradle
   -settings.gradle
   |--apps
      |--MyApp
   |--libraries
      |--thirdparty
         |--actionbarsherlock
            -build.gradle
         |--facebook
            -build.gradle
         |--google-play-services-lib
            -build.gradle
      |--personal
         |--commons
            -build.gradle
            - AndroidManifest.xml
            |--src
               |--main, blah blah
         |--proprietary

现在,个人/公共图书馆依赖于所有第三方图书馆(ABS,Facebook等)。每个第三方lib仅依赖于可以从mavenCentral引入的常见jar文件,并且每个第三方lib都完美地构建。将第三方与个人图书馆分开是非常重要的,同样重要的是,无论是图书馆还是图书馆"文件夹本身就是一个Android项目。

(更新:删除除了基本build.gradle和settings.gradle文件之外的所有内容以简化。)

请注意,我尝试遵循类似的解决方案in a slightly simpler problem

在我的/ root /文件夹中,settings.gradle文件显示为:

include ':libraries:personal:commons'  
include ':libraries:thirdparty:actionbarsherlock'
include ':libraries:thirdparty:facebook'
include ':libraries:thirdparty:google-play-services-lib'
include ':apps:MyApp'

并且同一级别(/ root /)的build.gradle文件只是空的。

修改:删除了对evaluationDependsOn(':thirdparty:facebook')和其他子项目的调用。编译产生相同的答案依赖性失败问题。

当我在/ root / libraries /个人级别运行gradle build时(再次按照链接的示例),它首先成功编译所有第三方库(万岁!)。然后,它给出了看起来像的实际java编译错误:         /Root/libraries/personal/commons/src/main/java/com/personal/commons/dialog/AlertDialogFragment.java:19:找不到符号     符号:方法dismissAllowingStateLoss()     location:class com.personal.commons.dialog.AlertDialogFragment                 instance.dismissAllowingStateLoss();

我怀疑这是一个链接问题,但是,因为(1)它在Eclipse中编译了一年以上,代码没有变化,(2)AlertDialogFragment扩展了SherlockDialogFragment,它本身扩展了DialogFragment,是定义dismissAllowingStateLoss()的地方。但是没有抱怨类定义

public class AlertDialogFragment extends SherlockDialogFragment {

或文件顶部的import com.actionbarsherlock.app.SherlockDialogFragment,所以它认为一切都很好,但无法解决依赖关系。当我查看/ root / libraries / thirdparty / actionbarsherlock的build文件夹时,确实为SherlockDialogFragment输出了一个类文件。 为什么我的可怜的自定义库会看到这个?

到目前为止,所有解决这个问题的尝试都失败了,因为我的gradle-fu仍然很弱。有谁知道我的致命错误在哪里?

0 个答案:

没有答案