我一直在尝试编译Android Marshmello系统,但未成功。 每次我尝试编译时,都会出现此错误:
javac: invalid source release: 1.7s
Usage: javac <options> <source files>
make: *** [out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes-full-debug.jar] Error 41
#### make failed to build some targets (03:04 (mm:ss)) ####
当我检查自己的java和javac版本时,得到以下信息:
javac 1.7.0_161
java version "1.7.0_161"
OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1)
OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)
这似乎是我系统的正确版本
我已将JAVA_HOME和ANDROID_JAVA_HOME设置为 bash.rc文件
echo $ANDROID_JAVA_HOME
/usr/lib/jvm/java-7-openjdk-amd64
echo $JAVA_HOME
/usr/lib/jvm/java-7-openjdk-amd64
但是似乎没有任何效果,并且我不断收到相同的错误。谁能帮我? tha
答案 0 :(得分:-1)
配置项目以进行即时运行 对于使用Gradle 2.3.0及更高版本的Android插件构建的项目,Android Studio默认启用即时运行。
要使用最新版本的插件更新现有项目,请执行以下操作:
打开“设置”或“首选项”对话框。 导航到Build,Execution,Deployment> Instant Run,然后单击Update Project,如图4所示。
如果没有显示更新项目的选项,则说明该版本已经是最新的Gradle Android插件。但是请确保选中“启用即时运行”旁边的框。
图4.为现有项目更新Gradle的Android插件
要开始使用Instant Run,您还需要将构建变体更改为应用程序的调试版本,并将其部署到运行Android 5.0(API级别21)或更高版本的目标设备。要了解更多可加快构建速度的技术,请阅读优化构建速度
从Windows Defender中排除项目 在Windows系统上,Windows Defender可能会导致使用Instant Run时变慢。如果您使用的是Windows Defender,则应从Windows Defender恶意软件扫描中排除Android Studio项目文件夹。
使用Crashlytics时可缩短构建时间 如果您的Fabric Gradle插件版本低于1.21.6,则Crashlytics可能会导致构建时间变慢。为了在开发应用程序时提高构建性能,您可以将插件更新为最新版本,也可以为调试构建版本禁用Crashlytics。
即时运行的限制 Instant Run旨在在大多数情况下加快构建和部署过程。但是,使用即时运行在某些方面可能会影响其行为和与您的应用程序的兼容性。如果在使用Instant Run时遇到任何其他问题,请启用额外的日志记录并报告错误。
应用程序无法在某些物理设备上启动 一些设备制造商在将应用程序安装到设备后阻止其自动启动。使用Android Studio 2.3将应用程序部署到物理设备时,此限制会破坏即时运行的预期行为,并导致以下错误输出:没有服务启动。要解决此问题,请将Android Studio更新到2.3.1或更高版本。
调试模式始终使用冷插拔 在Android Studio 2.3上,如果通过单击Debug部署应用程序,则通过单击Apply Changes推送后续代码更改始终会导致冷插拔。要了解更多信息,请参见问题#234401。
部署到多个设备 Instant Run使用不同的技术来执行特定于目标设备的API级别的热,热和冷交换。因此,在将应用程序一次部署到多个设备上时,Android Studio会暂时关闭即时运行。
多重处理您的应用 如果minSdkVersion设置为21或更高,Instant Run会自动将您的应用配置为multidex。由于Instant Run仅适用于应用程序的调试版本,因此在部署发行版本时,您可能需要为Multidex配置应用程序。
运行仪器化的测试和性能分析器 插装的测试将调试APK和测试APK加载到测试设备上的同一进程中,从而允许控制方法覆盖应用程序的正常生命周期并执行测试。在运行或调试已测试的测试时,Android Studio不会注入即时运行所需的其他方法并关闭该功能。
在对应用程序进行性能分析时,应禁用即时运行。使用Instant Run时,对性能的影响很小,而使用热交换覆盖方法时,对性能的影响则稍大。这种性能影响可能会干扰性能分析工具提供的信息。此外,每次热交换生成的存根方法会使堆栈跟踪变得复杂。
使用第三方插件 在使用Instant Run时,Android Studio暂时禁用Java代码覆盖库(JaCoCo)和ProGuard。由于Instant Run仅适用于调试版本,因此不会影响您的发行版本。
某些执行字节码增强的第三方插件可能会导致Instant Run如何检测您的应用程序。如果您遇到这些问题,但是想要继续使用Instant Run,则应针对调试版本使用这些插件。您还可以通过提交错误来帮助改善与第三方插件的兼容性。
将更改推送到多进程应用程序 Instant Run仅检测您应用程序的主要过程,以便执行热交换和热交换。当将代码更改推送到其他应用程序流程(例如方法实现或现有资源的更改)时,Instant Run将执行冷交换。
在工作资料中启动您的应用 如果您使用Instant Run运行应用程序并使用工作配置文件(或其他辅助配置文件)打开应用程序,则应用程序将崩溃,因为Instant Run所使用的已检测DEX文件只能从主配置文件的用户空间访问。
如果要继续使用Instant Run,只需避免使用工作资料打开应用程序,并确保您的运行配置未使用--user user_id标志。
如果您需要将应用程序与工作资料一起使用,我们建议您创建一个新的运行配置,其中包括--user user_id标志,并指定工作资料用户ID。您可以通过从命令行执行adb shell pm list用户来找到用户ID。当您使用--user标志时,Android Studio仅针对该部署禁用即时运行;当您切换到不带--user标志的配置时,Instant Run将再次起作用。
禁用即时运行 要禁用即时运行:
打开“设置”或“首选项”对话框。 导航到“构建,执行,部署>即时运行”。 取消选中“启用即时运行”旁边的框。