我可以将我的Android应用程序构建为调试,但使用发布密钥库进行签名

Jef*_*eff 11 ant android intellij-idea

我正在尝试在我的应用中测试应用内结算.我在Play商店中设置了计费和产品ID,但为了测试一个事务,我需要使用我的发布密钥库来签署我的应用程序,否则它将失败.

我正在使用IntelliJ Idea(Ver.11 CE),并且无法弄清楚如何配置项目以使用调试集进行构建,并在部署到我的设备之前使用我的发布密钥库进行签名.

我看到我可以为配置设置一个ant目标,我假设这是要走的路,但是因为我的build.xml导入了Android SDK /tools/ant/build.xml,所以没有任何目标可供选择.

要调试我只需要在清单中启用set android:debuggable ="true"吗?任何人都有一个蚂蚁目标的建议,可以做我需要的东西吗?我可以添加到build.xml中的一个?

Jef*_*eff 2

通过Ixx中正确方向的指针,我最终设置了 android:debuggable="true" 并使用命令行来构建和部署。然后附加到正在运行的进程进行调试。

我的应用程序设置为在命令行中使用 ant build.xml 文件进行构建,该文件导入 androidSDK/tools/ant/build.xml 和一个支持的 build.properties 文件。我发现当我设置 android:debuggable="true" 然后执行“ant release”时,构建过程将创建一个可调试的 apk 并使用发布密钥对其进行签名。

我在 build.xml 文件中创建了一个目标,我可以为这种情况设置一个名为 set-debuggable 的目标

<target name="set-debuggable" description="sets internal named property">
    <echo>Setting internal named property...</echo>
    <property name="set.debuggable" value="true" />
</target>
Run Code Online (Sandbox Code Playgroud)

然后在我的 -pre-build 目标中添加

    <if>
        <condition>
            <isset property="set.debuggable"/>
        </condition>
        <then>
            <replaceregexp
                    file="AndroidManifest.xml"
                    match="(android:debuggable=&#34;).*(&#34;)"
                    replace="\1true\2"/>

        </then>
        <else>
            <replaceregexp
                    file="AndroidManifest.xml"
                    match="(android:debuggable=&#34;).*(&#34;)"
                    replace="\1false\2"/>

        </else>
    </if>
Run Code Online (Sandbox Code Playgroud)

当我使用“ant set-debuggable release”时,这将创建我的可调试 apk,该 apk 是用我的发布密钥签名的。然后我使用“adb install -r myApp-release.apk”重新安装新版本。然后,我可以启动并附加到正在运行的应用程序,以便通过应用内购买进行调试。

看来 IntelliJ Idea 和 Eclipse 都使用系统上某处的自签名调试密钥来从 IDE 构建和部署调试 apk。

事后看来,我可能能够用我的发布密钥替换 IDE 创建的调试密钥,并尝试使用该密钥进行构建签名(并找到使用该密钥的密码),但上面的构建过程花了我很少的时间设置并开始使用的时间。如果有人朝着这个方向前进并让它发挥作用,请在我的答案中添加评论。