在编译过程中,我得到一个客户端错误。有人知道为什么和如何解决这个问题吗?
我是这样做的:
- 我尝试嵌入Java函数到我的Delphi程序,因为那里似乎没有其他的解决方案来添加MediabuttonReceiver。 我用javac成功编译了一个Java代码(代码如下所示)从Delphi的安装(编译)脚本片段给出下文)。我将编译好的jar文件添加到我的Delphi项目中,作为额外的库并编译Delphi程序。
- 编译成功,但在部署期间,我得到下面的错误信息(对不起,这是一个德国Delphi版本)。如果我在没有Java库的情况下编译,则该过程是成功的,因此错误似乎与我包含的jar文件有关。
paclient-Befehlszeile c:program filesembarcaderostudio17.0binpaclient.exe -u8 --aaptpackage="C:UsersPublicDocumentsEmbarcaderoStudio17.0PlatformSDKsandroid-sdk-windowsbuild-tools23.0.3aapt.exe,.AndroidDebugProject1library,.AndroidDebugProject1classes,.AndroidDebugProject1res,.AndroidDebugProject1assets,.AndroidDebugProject1AndroidManifest.xml,C:UsersPublicDocumentsEmbarcaderoStudio17.0PlatformSDKsandroid-sdk-windowsplatformsandroid-22android.jar,.AndroidDebugProject1binProject1-unsigned.apk" [PAClient Fehler] "paclient" exited with code 1. Misslungen
因为它可能有帮助,所以附加信息如下:
这是我尝试嵌入的Java代码(这只是第一个概念验证测试代码):
package com.embarcadero.Mediabuttonreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.KeyEvent;
import android.widget.Toast;
public class MediaButtonIntentReceiver extends BroadcastReceiver {
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}
这是我用来编译java代码的脚本的一个片段:
set JAVA_HOME=C:Program FilesJavajdk1.7.0_71bin
set ANDROID_PLATFORM="C:UsersPublicDocumentsEmbarcaderoStudio17.0PlatformSDKsandroid-sdk-windowsplatformsandroid-22"
"%JAVA_HOME%javac.exe" -source 1.7 -target 1.7 -verbose -Xlint:deprecation -cp %ANDROID_PLATFORM%android.jar -d "%PROJ_DIR%" %file%.java
"%JAVA_HOME%jar.exe" cvf %file%.jar %file%.class
从博客上得到有用的评论后,我发现我必须添加以下信息到AndroidManifest:
<service android:name="com.embarcadero.services.test"
android:exported="false">
</service>
显然不是自动添加的。