2012-08-22 22 views
11

我正在嘗試在我的應用程序中測試應用內結算。我在Play商店中有帳單和產品ID的所有設置,但要測試我需要使用我的發行密鑰庫對我的應用程序簽名的事務,否則它將失敗。我是否可以將我的Android應用程序構建爲調試版,但簽署了發佈密鑰庫

我使用的IntelliJ IDEA(版本11 CE),並不能完全弄清楚如何配置項目,以建立與調試設置和部署到我的設備之前,我的版本的密鑰庫簽署。

我看到我可以爲一個配置設置一個ant target,我假設這是要走的路,但由於我的build.xml導入了Android SDK /tools/ant/build.xml,因此沒有任何目標選擇。

要調試做我只是需要啓用一套機器人:可調試=「真」的清單?任何人都有對螞蟻目標的建議,可以做我需要的東西?一個我可以添加到我的build.xml?

回答

2

有了正確的方向形式Ixx我結束了設置的android指針:可調試=「true」,並使用命令行來構建和部署。然後附加到正在運行的進程以進行調試。

我的應用程序設置建立在與進口androidSDK /工具/ ANT/build.xml文件和支持build.properties文件螞蟻的build.xml文件的命令行。我發現,當我設置android:debuggable =「true」,然後執行「ant release」時,構建過程將創建一個可調試apk並使用釋放鍵對其進行簽名。

我創造了我的build.xml文件的目標,我可以爲這種情況下一套名爲設置可調試

<target name="set-debuggable" description="sets internal named property"> 
    <echo>Setting internal named property...</echo> 
    <property name="set.debuggable" value="true" /> 
</target> 

然後在我的 - 預構建的目標,我添加

<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> 

這創建我使用'ant set-debuggable release'時使用釋放鍵簽名的可調試apk。然後我使用'adb install -r myApp-release.apk'來重新安裝新版本。然後,我可以啓動並附加到正在運行的應用程序,以便通過應用內購買進行調試。

看來好像兩者的IntelliJ IDEA和Eclipse中使用自簽名調試關鍵的地方你的系統上建立和部署從IDE調試APK。

事後看來,我可能已經能夠用我的釋放鍵替換IDE創建的調試鍵,並試圖讓構建使用該鍵簽名(並找到使用該鍵的密碼),但上面的構建過程花了我很少的時間來安裝並開始使用。如果有人朝這個方向前進,並且能夠正常工作,請在我的回答中添加評論。

0

我有這樣的build.xml中設置可調試的屬性:

<condition property="build.env" value="${build.env}" else="local"> 
    <isset property="build.env" /> 
</condition> 

<!-- set debuggable=false for release and true for debug and others --> 
<condition property="isDebuggable" value="false" else="true"> 
     <equals arg1="${build.env}" arg2="release" /> 
    </condition> 
    <replaceregexp 
     file="AndroidManifest.xml" 
     match="(android:debuggable=&#34;).*(&#34;)" 
     replace="\1${isDebuggable}\2" 
     > 
    </replaceregexp> 

凡build.env傳遞給螞蟻這樣的程序(在「放」的情況下):

ant <targets> -Dbuild.env=release 

爲了籤,您添加到屬性文件:

key.store=C:/path/to/keystore/mykeystore.keystore 

調試應用程序有一個調試密鑰庫(雖然我CURREN tly不記得爲什麼這個密鑰庫是必要的) - >here的更多信息。可能你只需要使用release keystore。

-1

嘗試將可調試標誌設置爲true在您的Android清單。

<application 
     android:debuggable="true" 

Debuggable Flag

1

從IntelliJ IDEA 12(不知道以前的版本)開始,您可以在Android頂級模塊的Android構面中設置「自定義調試密鑰庫」。通過這種方式,您可以控制APK的簽名方式,並實際使用您的釋放鍵從IDE進行調試。

+9

我試過了,但是我怎樣才能設置密鑰庫的密碼?我總是得到'java.io.IOException:密鑰庫被篡改,或者密碼不正確 – ffleandro

0

鑑於Lint現在建議不要在AndroidManifest.xml中對「android:debuggable」標記進行硬編碼,我已經提供了一個更好的解決方案(至少對於我的情況)。只需在你的custom_rules.xml中定義一個新的ant目標,它和android調試目標所做的一切完全一樣,但也要使用release key來簽署apk。

<target name="build-debug" depends="-set-debug-files, -do-debug, -release-sign, -post-build" /> 

需要添加的唯一子任務「 - 釋放符號」「-post建造」前,然後運行「bulid調試」,而不是機器人「調試」的目標。

或者,你可以只是「-release符號」調試依賴這樣的:

<target name="build-debug" depends="debug, -release-sign" /> 

但這並不爲我工作,因爲我做一些額外的東西上「-post建造」並且需要在「-post-build」之前簽署包裹。

相關問題