最近,我正在开发使用RFIDAPI3 SDK在Java-Android上为Zebra RFD8500扫描RFID和条形码的程序。它自己的SDK是* .aar格式,我使用Android Studio作为IDE。问题出在RFIDIDAPI3 SDK上,我想在源代码上添加一些功能以方便使用。
如图所示,他们的图书馆有一些方法
public void setBeeperVolume(BEEPER_VOLUME beeperVolume) throws InvalidUsageException, OperationFailureException {
if(null == beeperVolume) {
throw new InvalidUsageException("setBeeperVolume - beeperVolume", "ERROR_PARAMETER_NULL");
} else {
SetAttribute var2 = new SetAttribute(140, "B", beeperVolume.getValue(), 0);
RFIDResults var3 = l.a(this.c, var2);
if(RFIDResults.RFID_API_SUCCESS != var3) {
be.a(this.c, "setBeeperVolume", var3, true);
}
}
}
由于上面显示的代码片段来自反编译的.class文件,因此该方法只执行命令140
,而我需要的是执行命令1664
。
对于信息,命令140用于增加音量蜂鸣器,1664用于从RFID到条形码的改变模式,反之亦然。到目前为止,RFIDAPI3 SDK不支持更改模式命令,因此我想在其SDK上添加一些新功能。
他们的SDK发布在github上,不幸的是他们在Delphi上的源代码,我对此并不熟悉。 delphi上的函数在这个link
中procedure setBeeperVolume(beeperVolume : JBEEPER_VOLUME) ; cdecl; // (Lcom/zebra/rfid/api3/BEEPER_VOLUME;)V A: $1
我已经在link的github上添加了问题/更新请求,但没有人回复。
我知道逆向工程很难做到,不是百分之百的成功,也不是好的做法。
那么有什么方法可以开发一个新函数并从源代码构建aar类吗?
或者是否有任何棘手的方法(以某种方式像逆向工程方法)来改变反编译类的值?
或者继承某种棘手的java方法的任何方法?
请指导。真的很感激。 感谢