【问题标题】:How to debug a platform signed system app using Xamarin Android如何使用 Xamarin Android 调试平台签名的系统应用程序
【发布时间】:2017-10-14 05:19:07
【问题描述】:

我目前正在开发一个项目,该项目必须是平台签名的系统应用,才能在专有 Android 设备的 I2C 总线上进行通信。

清单包含 android:sharedUserId="android.uid.system" 并且生成的未签名 apk 已签名、压缩对齐并与这批一起安装...

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk
zipalign -f -v 4 signed.apk aligned.apk
adb install -rg aligned.apk

这很好用。但是,我需要使用此权限进行广泛的开发,需要附加调试器。我尝试使用保留调试器符号的自定义配置,同时在包中包含 Mono 运行时,结果发现您无法从 Xamarin 附加到已经运行的 Android 应用程序。

有没有办法创建一个使用平台签名签名的密钥库,我可以放入 ...\AppData\Local\Xamarin\Mono for Android\ 以替换 debug.keystore?这个想法是调试构建-部署过程会选择这个,我将拥有我需要的权限并附加到调试器。

非常感谢任何帮助。

【问题讨论】:

    标签: xamarin.android adb visual-studio-debugging


    【解决方案1】:

    您可以从 DER 编码的 PKCS #8 私钥和相应的 PEM 编码的 X.509 证书创建 JKS 密钥库,如下所示:

    openssl pkcs8 -inform der -in platform.pk8 -nocrypt -out platform.key
    openssl pkcs12 -export -in platform.x509.pem -inkey platform.key -out platform.p12
    keytool -importkeystore \
        -srckeystore platform.p12 -srcstoretype pkcs12 \
        -destkeystore platform.keystore \
        -deststorepass android -destkeypass android
    shred -u platform.key platform.p12
    

    【讨论】:

    • 谢谢!按预期工作。
    【解决方案2】:

    对于以下人员,在我执行 Alex 的步骤后,我将其添加到 .csproj 文件中,以让 Visual Studio 将其用于此特定示例。

    <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
        <AndroidKeyStore>True</AndroidKeyStore>
        <AndroidSigningKeyStore>(path)\platform.keystore</AndroidSigningKeyStore>
        <AndroidSigningStorePass>android</AndroidSigningStorePass>
        <AndroidSigningKeyAlias>1</AndroidSigningKeyAlias>
        <AndroidSigningKeyPass>android</AndroidSigningKeyPass>
    </PropertyGroup>
    

    【讨论】:

    • 既然这个问题已经解决了,你可以把它标记为答案,这样可以帮助其他遇到和你一样问题的社区成员,再次感谢你的分享。
    • 完成...我想我需要先达到声望 15。我错了。
    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2018-02-20
    • 2016-10-01
    • 1970-01-01
    • 2011-04-07
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多