小编ild*_*lin的帖子

如何在Android Room中存储对象?

基本上,有两件事我不理解:带有对象的对象和带有对象列表的对象

假设我从服务器收到一个对象列表.他们每个人都是这样的:

@Entity
public class BigObject {
    @PrimaryKey
    private int id;
    private User user;
    private List<SmallObject> smallObjects;
}
Run Code Online (Sandbox Code Playgroud)

将这两个对象作为字段:

@Entity
public class User {
    @PrimaryKey
    private int id;
    private String name;
    @TypeConverters(GenderConverter.class)
    public MyEnums.Gender gender;
}

@Entity
public class SmallObject {
    @PrimaryKey (autoGenerate = true)
    private int id;
    private String smallValue;
}
Run Code Online (Sandbox Code Playgroud)

它们比这更复杂,所以我不能使用@TypeConverters,因为Room建议:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
Run Code Online (Sandbox Code Playgroud)

如何在Room中存储此数据结构?

android android-room

13
推荐指数
1
解决办法
8308
查看次数

如何取消Android Studio构建?

在我启动构建或组装过程后,如果我突然需要做某事,我将无法有效地取消它。

如果我单击红十字,该过程将被重命名为“停止构建...”,但最终将继续直到完成。我能有效阻止它的唯一方法就是关闭AS。这是 IDE 的 bug 还是我做错了什么?(除了每次按 build ofc 时都要仔细检查)

android-studio

5
推荐指数
1
解决办法
5674
查看次数

使用 PEM PrivateKey 签署字符串

我有一个 PEM 编码的私钥,我需要用它签署一个字符串。但代码不断崩溃,出现异常:

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0c0890ba:ASN.1 encoding routines:asn1_check_tlen:WRONG_TAG
Run Code Online (Sandbox Code Playgroud)

关键字符串:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI4P/+9mJV6RwCAggA 
MBQGCCqGSIb3DQMHBAg/ZWGXeLHgeASCAoAhExhFxfcikmIKbFP0rgAlJuj1r999 
... and so on...
hlgzM2p71FdC6NDVyyxbit/IzbimtJyhkRwOAnZ98yqtXWUEOx2v7CcUqiU8dSLA 
K0PsaxNTUeUcQV+Z7yJk/8HxfE1ya3u2CgPXCZsWWmbxQG/+awE0eEnZ 
-----END ENCRYPTED PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我尝试了很多变体,查看了很多答案,但结果都是一样的

编辑:在 James K Polk 的帮助下,我成功获得了私钥字节,但现在我得到了java.security.NoSuchAlgorithmException: SecretKeyFactory PBES2 implementation not found.修改后的代码:

private String sign(String dataString, String pkString, String privateKeyPass) throws Exception {
        pkString = pkString.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----", "");
        pkString = pkString.replace("-----END ENCRYPTED PRIVATE KEY-----", "");
        pkString = pkString.replaceAll("\\s+","");
        byte[] privateKeyBytes = decryptPrivateKey(Base64.decode(pkString, Base64.DEFAULT), privateKeyPass);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey privateKey = kf.generatePrivate(new …
Run Code Online (Sandbox Code Playgroud)

java android rsa

5
推荐指数
1
解决办法
4445
查看次数

标签 统计

android ×2

android-room ×1

android-studio ×1

java ×1

rsa ×1