2013-10-18 88 views
1

我的簡單窗口小部件應用程序在作爲調試應用程序簽名時安裝並完美工作,但只要我嘗試爲市場準備就緒,就會遇到奇怪的行爲:它不會顯示在窗口小部件列表中,直到我卸載應用程序,當它顯示爲標準Android'我沒有這個'機器人圖標。Android小部件只顯示調試;應用程序圖標始終顯示

試圖將此「缺失」小部件拖到屏幕上會導致啓動器崩潰。

爲了研究這一點,我將一個MAIN/LAUNCH意圖添加到其中一個活動中,並且在安裝時按預期顯示並在卸載時消失。

什麼是超級令人毛骨悚然的是,如果我重新安裝,而啓動器顯示'我沒有這個'機器人圖標,我的小部件簡要替換該圖標,然後從列表中消失。

我在日誌中看不到任何錯誤消息或發出的意圖,超出了正常的'我解除/安裝這個'。

有沒有什麼愚蠢和明顯的我失蹤了,就像'已簽名的應用程序必須特別註冊他們的小部件',這在調試模式下是不需要的?

我這裏還有我的清單和部件屬性:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     android:versionCode="1" 
     package="uk.org.baverstock.appghoul"> 
<uses-sdk 
     android:minSdkVersion="4" 
     android:targetSdkVersion="9"/> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 

    <receiver android:name="uk.org.baverstock.appghoul.AppGhoulWidgetProvider"> 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> 
     </intent-filter> 
     <meta-data android:name="android.appwidget.provider" 
        android:resource="@xml/appwidget_provider"/> 
    </receiver> 

    <activity android:name=".Configure" 
       android:excludeFromRecents="true" 
      > 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/> 
     </intent-filter> 
     <intent-filter> 
      <!-- Why does this show up, when the widget doesn't? --> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity android:name=".ControlsChoiceActivity" 
       android:theme="@android:style/Theme.Dialog" 
       android:excludeFromRecents="true" 
      /> 

    <activity android:name=".ReconfigureWidget" 
       android:theme="@android:style/Theme.Dialog" 
       android:excludeFromRecents="true" 
      /> 

    <receiver 
      android:name=".WidgetRescanner" 
      android:label="WidgetRescanner" 
      > 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_ADDED"/> 
      <action android:name="android.intent.action.PACKAGE_CHANGED"/> 
      <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
      <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
      <data android:scheme="package"/> 
     </intent-filter> 

    </receiver> 

</application> 
</manifest> 

和微件屬性:

<?xml version="1.0" encoding="utf-8"?> 

<appwidget-provider 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="72dp" 
    android:minHeight="72dp" 
    android:updatePeriodMillis="86400000" 
    android:initialLayout="@layout/widget" 
    android:configure="uk.org.baverstock.appghoul.Configure" 
android:previewImage="@drawable/icon" 
android:widgetCategory="home_screen"> 
<!-- 
android:resizeMode="horizontal|vertical" 
android:initialKeyguardLayout="@layout/example_keyguard" 

--> 
</appwidget-provider> 

回答

1

我想這可能涉及到一些問題,釋放簽名密鑰過長,但各種實驗表明,即使使用2048鍵,也會發生這種情況。

當我使用Gradle構建http://javatechig.com/android/app-widgets-example-in-android/時,它也會發生,所以它似乎不是我的代碼。

我想不出什麼我做應該能夠崩潰發射我的應用程序卸載後,所以在我看來,這必須是一個Android的錯誤:我在https://code.google.com/p/android/issues/detail?id=61387

報道它