0

我們的活動菜單允許測試版用戶在多個測試/臨時數據庫/ REST服務器之間切換。在發佈時,我想從看到的菜單中刪除這個菜單。我不想在代碼中使用我必須手動修改的變量。我希望我們的CI爲我做這件事。只是不確定動態構建以消除此問題的最佳方式。我正在考慮在清單中添加可調試項,然後當Jenkins構建它時,它會將可調試清單更改爲false,然後代碼將隱藏用戶的菜單。這是最好的方式還是有更好的方法? (可能在清單中使用testOnly)爲我們的測試版測試人員啓用的功能,發佈如何刪除

回答

0

目前,我在清單中使用debuggable屬性,它最初並未在文件中設置,因爲Eclipse在此上皺眉。然後,在我的ant腳本中,我創建了一個custom_rules.xml,其中我根據目標手動設置清單中的屬性,如果釋放並且如果調試版本爲true,則爲false。

<target name="-set-debug-files" depends="-set-mode-check"> 
..... 
    <!-- alter the app manifest to reflect the testing state --> 
    <property name="match.start" value="android:debuggable="/> 
    <property name="match.end" value=">"/> 
    <replaceregexp file="AndroidManifest.xml" 
       match="${match.start}.*${match.end}" 
       replace="${match.start}&quot;true&quot;${match.end}"> 
    </replaceregexp> 

    <echo level="info">${ant.project.name} 
     setting manifest debug state to true</echo> 
</target> 

<target name="-set-release-mode" depends="-set-mode-check"> 
...... 
    <property name="match.start" value="android:debuggable="/> 
    <property name="match.end" value=">"/> 
    <replaceregexp file="AndroidManifest.xml" 
       match="${match.start}.*${match.end}" 
       replace="${match.start}&quot;false&quot;${match.end}"> 
    </replaceregexp> 

    <echo level="info">${ant.project.name} 
     setting manifest debug state to false</echo> 

</target> 

然後在代碼中我放置在我的自定義應用程序類中,我創建了一個靜態我可以參考我的活動。

DEBUG = (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; 

然後,當我需要隱藏/顯示的東西,我用:

if (MyApplication.DEBUGGABLE) { 
    ...show stuff 
} else { 
    ...hide stuff 
} 
相關問題