【问题标题】:Why does cordova change my plugin .java class to something broken?为什么 cordova 将我的插件 .java 类更改为损坏的东西?
【发布时间】:2016-01-28 09:47:47
【问题描述】:

我正在使用 micVolume 插件(它并没有完全工作,所以我对其进行了调整)。我可以让它大部分工作 - 它读取麦克风音量,但是如果连续调用两次 stop(),则 stop()、read() 和 start() 函数可能会损坏。出于这个原因,我将 java 类编辑为:

private void stop(CallbackContext callbackContext) {
  if (micOn = true) {
   audioRecord.stop();
   audioRecord.release();
   audioRecord = null;
  micOn = false;
  }

callbackContext.success();
}

我应该注意到 micOn 是在前面定义的。但这对应用程序在我手机上的运行方式没有任何影响。我决定反编译apk,看看java类,改成这样了:

   private void stop(CallbackContext callbackContext) {
    CallbackContext callbackContext2 = callbackContext;
    MicVolumePlugin micVolumePlugin = this;
    boolean z = true;
    boolean z2 = z;
    r5.micOn = z;
    if (z2) {
        this.audioRecord.stop();
        this.audioRecord.release();
        this.audioRecord = null;
        this.micOn = false;
    }
    callbackContext2.success();
}

如您所见,z2 总是等同于 true,这不是我想要的。谁能帮帮我?

【问题讨论】:

    标签: java android cordova plugins


    【解决方案1】:

    当您通过命令行构建 cordova 应用程序时,它会更改一些文件,但如果您从 Android Studio 执行此操作,则不会。

    原因是因为 www 文件夹中的任何文件在您从命令行构建时都会直接复制到平台,但在 Android Studio 中我们必须手动完成。

    所以检查你做错的任何其他地方,比如 z2 = z 吗? (除了你正确的 plugin.java )

    【讨论】:

    • 我很困惑,你是在建议我使用 Android Studio 来构建我的科尔多瓦应用程序吗?那可能吗?你是说我会在导致这种情况发生的其他课程中使用 z2 = z 吗?
    • 不,不是建议你使用Android studio,只是说区别!只需检查您的其他课程中是否有任何 z2=z。
    • 通过检查麦克风是否使用 javascript 而不是在 java 插件类中激活来解决问题。不理想,但工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2021-02-06
    • 1970-01-01
    • 2013-02-17
    • 2017-05-30
    相关资源
    最近更新 更多