使用 JUniversal 翻译 Android 项目

Posted

技术标签:

【中文标题】使用 JUniversal 翻译 Android 项目【英文标题】:Translate Android project with JUniversal 【发布时间】:2016-01-01 03:53:53 【问题描述】:

我正在使用 JUniversal 将 android 项目的 Java 类转换为 Objective-C 安装 J2Objc 并从这个Link 在 Mac OS X (Yosemite) 上克隆 juniversal 和 jsimple 后,当我在终端中运行以下命令时:

./gradlew build install javaToObjectiveC -x test

它显示错误:

:libraries:jsimple-io:javaToObjectiveC 失败

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':libraries:jsimple-io:javaToObjectiveC' 执行失败。 进程 'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' 以非零退出值 4 结束

试试:

使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

构建失败

还定义了 $HOME 目录中的文件 .bash_profile

export ANDROID_HOME=/usr/local/opt/android-sdk
export GRADLE_HOME=/Users/emaar/env/gradle
export M2_HOME=$HOME/env/maven
export JAVA_HOME2=/usr/libexec/java_home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
export J2OBJC_HOME=/Users/emaar/env/j2objc
export PATH=$PATH:$M2_HOME/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$GRADLE_HOME/bin:$J2OBJC_HOME:$JAVA_HOME

当我使用时:

$ ./gradlew build install javaToCSharp -x test

它显示 BUILD SUCCESSFUL 没有错误

我也尝试命令:

./gradlew build install javaToObjectiveC -x test --stacktrace

翻译 /Users/emaar/jsimple/libraries/jsimple-io/src/main/java/jsimple/pushnotifications/PushNotificationsReceiver.java :libraries:jsimple-io:javaToObjectiveC 失败

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':libraries:jsimple-io:javaToObjectiveC' 执行失败。 进程 'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' 以非零退出值 4 结束

尝试: 使用 --info 或 --debug 选项运行以获得更多日志输出。

例外情况是: org.gradle.api.tasks.TaskExecutionException:任务':libraries:jsimple-io:javaToObjectiveC'的执行失败。 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 在 org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) 在 org.gradle.execution.taskgraph.Abs​​tractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88) 在 org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 在 org.gradle.execution.DefaultBuildExecuter.access $200(DefaultBuildExecuter.java:23) 在 org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68) 在 org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) 在 org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55) 在 org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) 在 org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) 在 org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80) 在 org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 在 org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36) 在 org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 在 org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) 在 org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) 在 org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) 在 org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) 在 org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 在 org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 在 org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) 在 org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 在 org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 在 org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 在 org.gradle.launcher.Main.doAction(Main.java:33) 在 org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 在 org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) 在 org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) 在 org.gradle.launcher.GradleMain.main(GradleMain.java:23) 在 org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) 在 org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127) 在 org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:56) 引起:org.gradle.process.internal.ExecException:进程'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java''以非零退出值4完成 在 org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365) 在 org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31) 在 org.gradle.api.tasks.JavaExec.exec(JavaExec.java:60) 在 org.juniversal.buildtools.gradle.support.GradleJavaExec.exec(GradleJavaExec.java:59) 在 org.juniversal.buildtools.common.JavaToObjectiveC.translateSourceType(JavaToObjectiveC.java:98) 在 org.juniversal.buildtools.common.Translator.translate(Translator.java:78) 在 org.juniversal.buildtools.gradle.JavaToObjectiveCTask.translate(JavaToObjectiveCTask.java:59) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211) 在 org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200) 在 org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579) 在 org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 47 更多

构建失败 总时间:17.897 秒

【问题讨论】:

【参考方案1】:

这是 Gradle 问题,下载并设置 Gradle 并在 .bash_profile 上设置 测试后:

gradle-版本

并得到答案,问题已解决。

【讨论】:

以上是关于使用 JUniversal 翻译 Android 项目的主要内容,如果未能解决你的问题,请参考以下文章

Android编程如何翻译一个数字[重复]

2.7Android Studio使用翻译编辑器本地化UI

2.7Android Studio使用翻译编辑器本地化UI

android用变量翻译字符串

Android 翻译动画 - 使用 AnimationListener 将视图永久移动到新位置

Android Studio 配置翻译工具