首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XE7无法工作的安卓系统的锁盒3

XE7无法工作的安卓系统的锁盒3
EN

Stack Overflow用户
提问于 2015-01-03 14:07:18
回答 1查看 1.3K关注 0票数 1

我刚刚发现锁盒3.6.0应该支持Android。然而,当我查看我的调色板时,我发现编解码器只支持win32和win64。

我怎样才能让它也适用于我的android应用程序?

我使用德尔菲XE7,并且已经遵循了包中提供的安装说明。对于windows应用程序来说,它工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-13 05:03:26

你有两个选择:

(1)运行时间

您可以始终在运行时创建组件。关于如何做到这一点,有一个网站上的例子,我在下面复制这个示例的一个片段。只需将ShowMessage()函数替换为任何适当的..。

代码语言:javascript
复制
procedure EncryptAStream( Plaintext, Ciphertext: TStream);
var
 Codec1: TCodec;
 CryptographicLibrary1: TCryptographicLibrary;
begin
ShowMessage( 'Demonstration of How to Encrypt a Stream with TurboPower LockBox 3.');
Codec1 := TCodec.Create( nil);
CryptographicLibrary1 := TCryptographicLibrary.Create( nil);
Codec1.CryptoLibrary  := CryptographicLibrary1;
Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId;
Codec1.BlockCipherId  := 'native.AES-256';
Codec1.ChainModeId    := uTPLb_Constants.CBC_ProgId;
Codec1.Password := 'my utf-16le password';

// Codec1.Reset;  Reset if you are continuing from a previous encryption operation.
Codec1.EncryptStream( Plaintext, Ciphertext);
// Codec1.Burn;   Burn if you need to purge memory of sensitive data.

Ciphertext.Position := 0;

ShowMessageFmt(
 'The ciphertext for AES-256 with CBC chaining'#13#10 +
 ' of plaintext ''banana'' (UTF-8 encoding),'#13#10 +
 ' and password ''my utf-16le password'' (UTF-16LE encoding),'#13#10 +
 ' prepended by 64 bit nonce, (being the IV),'#13#10 +
 ' and rendered for display in base64 is ...'#13#10 +
 '%s', [Stream_to_Base64( Ciphertext)]);

Codec1.Free;
CryptographicLibrary1.Free;
end;

(2)设计时间

需要稍加调整,才能将组件放到Android的调色板上。这将在即将发布的TPLockbox 3的下一个版本中为您完成,但就目前而言,这是一个过程.

  1. vcl运行时需求中删除TPLB3、vclimgdbrtl
  2. 对于运行时包,添加Android目标平台,并使其成为活动平台。当然,不要将这个平台添加到设计时包中。
  3. 用于运行时的二进制产品应该命名为libTP_LockBox3_XE7.so,其中XE7是编译器版本的位置标记。
  4. 两个组件(TCodec和TCryptographicLibrary)的声明以 ComponentPlatformsAttribute( pidWin32或pidWin64或pidOSX32或pidiOSSimulator或pidiOSDevice或pidAndroid) TCodec = class( TTPLb_BaseNonVisualComponent,ICryptographicLibraryWatcher,{等)

这是整件事的关键。属性声明组件应该在调色板上显示的平台。如果没有声明,我相信默认的是pidWin32 or pidWin64,但我不能指向任何官方文档来支持这一点。

  1. 重新编译运行时包。请记住,如果您正在用MS编译,在某些编译器版本上,您需要save-all才能成功编译。
  2. 转到IDE Tools \{##**$}选项,打开Android平台的库路径。确保此路径包括放置Android情况下的dcu文件的位置。例如,在我的安装中. C:\Dev\TPLB\work-products\ephemeral\dcu\XE6\Android

您应该实际检查这个目录。例如,它应该有一个名为TPLB3.AES.dcu的文件和另一个名为TPLB3.AES.so的文件。

  1. 重新编译并重新安装设计时包。
  2. 打开您的移动项目。TCodec和TCryptographicLibrary的设计时组件在你的安卓表单上。按照windows应用程序的处理方式进行。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27755707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档