2013年3月28日 星期四

減少Windows Phone系統上PhoneGap專案的應用程式需求


當你將Windows Phone APP第一次上架,或許會糾結於介紹頁面那一大串應用程式需求:
但天可憐見,你明明沒有使用到這些功能,卻要使用者吐出這些權限,雙方難免都心有疙瘩,為了避免這樣的尷尬事,以下便簡單示範如何縮減Windoes Phone的PhoneGap專案所要求的權限:



1. 開啓專案目錄中的 Properties-> WMAppManifest.xml,可看到如下這段:

<Capabilities>
    <Capability Name="ID_CAP_IDENTITY_DEVICE" />
    <Capability Name="ID_CAP_IDENTITY_USER" />
    <Capability Name="ID_CAP_LOCATION" />
    <Capability Name="ID_CAP_NETWORKING" />
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
    <Capability Name="ID_CAP_APPOINTMENTS"/>
    <Capability Name="ID_CAP_CONTACTS"/>
    <Capability Name="ID_CAP_ISV_CAMERA"/>
    <Capability Name="ID_CAP_MEDIALIB"/>
    <Capability Name="ID_CAP_MICROPHONE"/>
    <Capability Name="ID_CAP_PHONEDIALER"/>
    <Capability Name="ID_CAP_PUSH_NOTIFICATION"/>
    <Capability Name="ID_CAP_SENSORS"/>
    <Capability Name="ID_HW_FRONTCAMERA"/>      
</Capabilities>

將其盡可能縮減,改成:

<Capabilities>
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />    
</Capabilities>


2. 一般專案經由上面那個步驟,便能有效地控制權限,但PhoneGap專案比較特殊,需要再翻出專案中的config.xml:

<widget>

  <plugins>
    <plugin name="Device"/>
    <plugin name="Logger"/>
    <plugin name="Compass"/>
    <plugin name="Accelerometer"/>
    <plugin name="Camera"/>
    <plugin name="NetworkStatus"/>
    <plugin name="Contacts"/>
    <plugin name="DebugConsole" />
    <plugin name="Echo"/>
    <plugin name="File"/>
    <plugin name="FileTransfer"/>
    <plugin name="Geolocation"/>
    <plugin name="Notification"/>
    <plugin name="Media"/>
    <plugin name="Capture"/>
    <plugin name="SplashScreen"/>
    <plugin name="Battery"/>
    <plugin name="Globalization"/>
    <plugin name="InAppBrowser"/>
  </plugins>

  <access origin="*"/>

</widget>

將沒用到的plugin都刪去,可改成:

<widget>

  <plugins>
    <plugin name="Device"/>
    <plugin name="Logger"/>
    <plugin name="NetworkStatus"/>
    <plugin name="DebugConsole" />
    <plugin name="Notification"/>
    <plugin name="SplashScreen"/>
  </plugins>

  <access origin="*"/>

</widget>

4.  事情還沒結束,因為仍有一些.cs檔被暗自呼叫,暗自要求權限,對於這樣的祖代越庖,我們只能辛苦點,手動將其拔除,以下是原本PhoneGap專案中的原始碼列表:

可盡量將沒有用到的.cs檔移除,如下:


5. 重新編譯,然後提交編譯後的xap檔,可看到要求功能已經大大地減少:

6. 最後等待審查結束,便能更新APP頁面的應用程式需求,還你清白了:


沒有留言:

張貼留言