2014-10-19 54 views
0

我想在Android Studio中编译Java模块。 我也在模块中引用android.jar。所以,是的,模块应该是Java,但使用android.jar作为编译参考。 这个android.jar的版本SDK是不相关的(我想,但它是19)。 (你可能会问为什么如果我需要android.jar,我不使用Android模块而不是Java ?,它是重构我们的Android项目的中间步骤)。在Android Studio中引用Java模块

我现在面临的问题: enter image description here

错误:无法找到符号变量SDK_INT

apply plugin: 'java' 
dependencies { 
    compile project(':ATTLogger') 
    compile project(':BandwidthController') 
    compile project(':iwpstack') 
    compile files('libs/android.jar') 
} 

你看 - 它并不想认识一些...代码清晰地呈现在Android。罐。 是的,它看到导入android.os.Build;并没有抱怨。

这里是我的bukd.gradle:

如果你碰巧解决这个滋扰我已经浪费半天时间。请帮助。 谢谢!

+1

您在该项目中是否有任何对Android API的调用? – helleye 2014-10-19 13:54:52

+0

当然,特别是它喊:Build.VERSION.SDK_INT> = Build.VERSION_CODES.ICE_CREAM_SANDWICH – 2014-10-19 13:59:26

+0

我对你是否在做某件有意义的事情持怀疑态度,但无论如何,我能够创建一个普通的Java模块,并访问其中的“构建”常量,所以它在某些情况下有效。你需要在你的问题中添加更多的细节才能得到一个好的答案。 – 2014-10-20 17:31:50

回答

0

如果它是一个只有Java的代码(没有任何对Android API的调用),那么你可以使它成为一个JAR,而不必为android.jar添加依赖。否则,如果你有Android API的调用,你应该使它成为AAR模块。 From http://developer.android.com/sdk/installing/studio-build.html#projectModules

  • Java库模块包含可重用代码。构建系统为Java库模块生成JAR包。
  • Android库模块包含可重复使用的Android特定代码和资源。构建系统为库模块生成AAR(Android ARchive)包。
  • Android应用程序模块包含应用程序代码,可能依赖于库模块,尽管许多Android应用程序仅包含一个应用程序模块。构建系统为应用程序模块生成APK包。

因此,要解决您的问题,您应该跳过此“中间步骤”,并立即使其成为Android模块。

+0

谢谢。但为什么android.jar与我编译的其他jar不同? – 2014-10-19 14:57:08

+0

我不知道,但我的猜测是,有一个模块Android以上的android.jar。 – helleye 2014-10-20 06:29:53