我在Android Studio中有一个用Gradle编译的项目.一般的文件结构是
MyProject
- MyProjectSource
- Libraries
- ActionBarSherlock
Run Code Online (Sandbox Code Playgroud)
我的项目是使用Gradle构建的,可以毫无问题地编译.但是,在我的活动中我包含ActionBarSherlock组件的行中,Android Studio将其标记为错误.
我注意到Android Studio也生成了.iml文件.所以我的问题是:在评估某些内容是否有效时,Android Studio会忽略gradle构建吗?
显然,这不是项目阻塞问题,但它确实减慢了速度,无法利用Android Studio提供的全套工具.
在此先感谢您的帮助.
我将我的Android应用程序移到了Android Studio而没有切换到Gradle.现在我想搬到Gradle.该应用程序在切换到Gradle之前在Android Studio中编译,但现在我已经设置了Gradle,它将不会编译String Switch语句或菱形运算符.我得到的错误是
Gradle: error: strings in switch are not supported in -source 1.6
(use -source 7 or higher to enable strings in switch)
Run Code Online (Sandbox Code Playgroud)
我通过打印确保我在JRE 7上运行
System.getProperty("java.version")
Run Code Online (Sandbox Code Playgroud)
在一项任务中.输出是
1.7.0_25
Run Code Online (Sandbox Code Playgroud)
让我最困惑的是"-source 1.6"和"use -source 7"之间的差异.但是我知道这两个都是Java sdk的名字所以也许标题只是混淆了.
我需要设置Gradle设置吗?或者这在Gradle中是不可能的?如果不是,那么为什么没有Gradle就可以解决这个问题.
应该注意的是,我的项目的无Gradle版本运行默认的Android Studio版本.我没有写一个ant脚本或maven脚本来构建它.其中一个可能是它的构建方式,但我没有任何项目特定的文件.只是Android Studio .iml文件.
更新 我尝试将以下内容添加到build.gradle android {}部分
compileOptions {
sourceCompatibility = org.gradle.api.JavaVersion.VERSION_1_7
targetCompatibility = org.gradle.api.JavaVersion.VERSION_1_7
}
Run Code Online (Sandbox Code Playgroud)
但.class文件无法构建,它不包含在apk中.请参阅此文章中的 "使用Java 1.6编译的Android项目需要库"部分
我正在尝试为每个gradle风格指定构建类型.所以结构将是
android {
productFlavors {
flavor1 {
buildTypes {
debug {
packageNameSuffix ".flavor1"
versionNameSuffix "flavor1"
}
release {
packageNameSuffix ".flavor1"
versionNameSuffix "flavor1"
signingConfig signingConfigs.foo
}
}
}
flavor2 {
buildTypes {
debug {}
release {
signingConfig signingConfigs.bar
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为我有一些功能只适用于一种风格,但后来我需要能够为这些风格下的不同构建类型指定包名后缀和签名配置(并且flavor1-release签名配置!= flavor2-发布签名配置.
这不起作用.无论我选择哪种口味,似乎都会设置所有选项.
我不确定如何解决这个问题.我已经尝试过if条件来测试当前正在运行的任务是针对flavor1还是flavor2,然后设置构建类型值,但这也不起作用.
有些东西告诉我,我正在尝试做一些不受支持的事情,需要重新考虑我的构建结构.但我想也许那里的人肯定知道.我看过Gradle文档但找不到我要找的东西.
任何帮助将非常感激.