我无法弄清楚这是否有效.
场景:
我想要的是
我想过拥有gradle.properties文件,定义变量.就像是
JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Run Code Online (Sandbox Code Playgroud)
我不想要的
JAVA_HOME所需的JDK我可以接受很多建议:
use JAVA_HOME=<my special JDK path defined somewhere else defined>)题:
gradle.properties系统环境变量中的变量,......)连接到构建过程?我有多个JDK7可用,需要指向一个特殊版本(最低JDK_u版本).
任何答案都表示赞赏,我感谢每一个提示正确的方向.
由于我不知道的原因,languageLevel键从JDK_1_8更改为JDK_1_7.
会发生什么事?
这是否与其他从事该项目的开发人员的IDE有关?也许他们有另一个Android Studio设置?
这是在我注意到源代码管理下的文件发生了变化后弹出的内容:
$ git diff
diff --git a/.idea/misc.xml b/.idea/misc.xml
index fbb6828..5d19981 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
Run Code Online (Sandbox Code Playgroud)
如果重要的话,这是我的gitignore.
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
Run Code Online (Sandbox Code Playgroud)
我该如何进行以便它只是保持这种或那种方式?
sourceCompatibility和之间有什么关系/区别targetCompatibility?当它们被设置为不同的值时会发生什么?
根据Gradle文档:
sourceCompatibility是"编译Java源时使用的Java版本兼容性".
targetCompatibility是"为Java生成类的Java版本."
我的理解是,targetCompatibility将生成与特定版本的Java兼容的java字节码,这是一个功能的子集sourceCompatibility吗?
我一直想知道用于Android开发的Java版本如何与Java SE版本相关.例如,我今天正在阅读有关"类型推断和通用方法"的内容,这是Java SE 7中添加的一项功能.我不知道自己,"我可以在Android代码中使用它吗?"
当然,我可以将代码输入到Android项目中并查看它是否可以编译,但我会更高兴在我脑海中进行某种映射.
我已经尝试谷歌搜索此信息,检查Android文档等,但无法找到答案.
编辑:我对语言功能更感兴趣,例如Android Java语法版本如何与Java SE语法相关.
我是Android开发的新手.我可以使用在Android中使用JDK 7开发的现有Java代码吗?
这些函数使用xerces dom和xslt以及xpathapi.目前,当我安装Android Eclipse ADT环境时,这些功能都没有编译.我还想知道Android设备本身是否支持JRE 6或7?
我在发布之前已经搜索了一些类似的问题 - 但是我在Android和数据绑定方面有一个普遍的问题(我检查的其他答案并没有让我更进一步......).假设你有一个类车辆:
public class Vehicle {
private Owner owner;
private String brand;
//getter and setter for above attributes...
}
Run Code Online (Sandbox Code Playgroud)
这是所有者类....
public class Owner {
private String name;
}
Run Code Online (Sandbox Code Playgroud)
现在 - 我最近正在研究微软WPF采用的MVVM(ModelView-ViewModel)模式.这让我想知道:假设我想绑定我的所有者对象的name属性,这是Vehicle对象的子对象 - 在Android中是否会有一些标准方法来实现这一点?还假设,在我可以更新模型之前,我可能必须验证输入?
我想象以下组件(假设MVVM):
现在,当我将EditTexts,TextViews等添加到视图中时,我希望它们绑定到我的上下文对象的某些属性(在这种情况下为Vehicle)......如果我的问题不明确或者您需要进一步的信息,请执行此操作让我知道:)提前谢谢.
Ps我认为熟悉WPF的人现在可能是我的意思吗?我自己刚刚阅读了WPF并发现它是处理内容的好方法.
PPs我知道android绑定项目,但我想知道Android中是否存在某种内置方法,或者某些约定有人关注:)这真的更像是一个绑定理论问题我猜...
我在Android Studio中创建了一个新项目,并添加了Google地图活动.
我收到这些警告:
warning: com/google/android/gms/maps/GoogleMap.class(com/google/android/gms/maps:GoogleMap.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/SupportMapFragment.class(com/google/android/gms/maps:SupportMapFragment.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/model/LatLng.class(com/google/android/gms/maps/model:LatLng.class): major version 51 is newer than 50, the highest major version supported by this compiler.
It is recommended that the compiler be upgraded.
warning: com/google/android/gms/maps/model/MarkerOptions.class(com/google/android/gms/maps/model:MarkerOptions.class): …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用菱形运算符,但我收到以下消息:
-source 1.5不支持菱形运算符(使用-source 7或更高版本启用菱形运算符)
是否可以修复与android的netbeans?
我正在尝试使用java版1.7与android studio,但遗憾的是它无法正常工作...如果将版本设置File->Other settings -> Default project structure为
Project SDK:
java version 1.7.0_06
Project language level:
7.0 Diamonds, ARM, multi-catch
Run Code Online (Sandbox Code Playgroud)
但是当我使用带有字符串的switch语句时,我得到一个错误,这在java 1.7中应该是可能的,所以我需要设置任何其他设置吗?
我得到了"匿名新的runnable()可以替换为lambda"警告与以下代码.
final ScrollView sv = (ScrollView) findViewById(R.id.scrollView);
sv.post(new Runnable() {
@Override
public void run() {
sv.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Run Code Online (Sandbox Code Playgroud)
我非常努力地在Google上搜索,似乎是使用lambda表达式重写...
final ScrollView sv = (ScrollView) findViewById(R.id.scrollView);
Runnable test = () -> sv.fullScroll(ScrollView.FOCUS_DOWN);
test.run();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行应用程序时,Android Studio会因错误而停止,如下所示:
Error:(78, 40) error: lambda expressions are not supported in -source 1.7
(use -source 8 or higher to enable lambda expressions)
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么Android Studio让我使用lambda表达式,即使它无法编译.这是一个错误吗?
此外,我尝试使用gradle-retrolambda,但它很难用于biginner.
由于我无法编译我的代码,我不确定上述lambda expresssion是否正确.
在我看来,IDE不应该抱怨代码无法编译.所以我认为应该抑制使用lambda表达式的警告.但我不知道怎么会......
任何帮助表示赞赏.
我将我的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项目需要库"部分
我的错误在我身上 ArrayAdapter<>
listView.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,name1));
Run Code Online (Sandbox Code Playgroud)
错误:(24,46)错误:-source 1.6不支持菱形运算符(使用-source 7或更高版本启用菱形运算符)
然后我将我的java版本更新为
java version "1.7.0_67"
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误.操作系统我正在使用ubuntu 14.04.
android ×9
java ×9
gradle ×3
java-7 ×2
version ×2
build.gradle ×1
data-binding ×1
java-8 ×1
jdk6 ×1
lambda ×1
netbeans ×1
ubuntu-14.04 ×1
wpf ×1