2017-06-23 6 views
1

私は時間の中で最も奇妙な問題に直面しています。私はアンドロイドサポートv7でAppCompatActivityを使用しています。デバッグモードでアプリケーションを実行しているときに、アイコン付きのメニューが表示されます。署名付きapkを生成してインストールすると、アイコンはメニューから消えます。Androidのメニューアイコンは、リリースビルドには表示されませんが、デバッグビルドに表示されます

1)Release Build screenshot

2)Debug build screenshot

は、ここで私はカスタムテーマを使用して、私のメニューコード

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context=".TerminalActivity"> 


<item android:id="@+id/action_streamConnect" 

    app:showAsAction="never" 
    android:icon="@mipmap/ic_stream" 
    android:visible="false" 
    android:title="Connect to Stream"> 
</item> 

<item android:id="@+id/action_connect" 

    app:showAsAction="never" 
    android:icon="@mipmap/ic_bluetooth_connect" 
    android:visible="true" 
    android:title="@string/action_connect"> 
    </item> 

<item android:id="@+id/action_disconnect" 
    android:title="@string/action_disconnect" 
    android:icon="@mipmap/ic_bluetooth_disconnect" 
    android:visible="false" 
    app:showAsAction="never" /> 
<item android:id="@+id/action_pulse" 
    android:title="Start Pulse" 
    android:icon="@mipmap/finger" 
    android:visible="true" 
    app:showAsAction="never" /> 

<item android:id="@+id/action_resp" 
    android:title="Respiration" 
    android:checkable="true" 
    android:checked="false" 
    android:visible="true" 

    android:icon="@mipmap/ic_lungs" 
    app:showAsAction="never" /> 
<item android:id="@+id/action_activity" 
    android:title="Track Activity" 
    android:checkable="true" 
    android:checked="false" 
    android:visible="true" 

    android:icon="@mipmap/icon_activity_track" 
    app:showAsAction="never" /> 
<item android:id="@+id/action_myRecords" 
    android:title="My Records" 
    android:visible="true" 
    android:icon="@mipmap/ic_download" 
    app:showAsAction="never" /> 

<item android:id="@+id/action_customUrlAnalyze" 
    android:title="Analyze Record" 
    android:visible="true" 
    android:icon="@mipmap/ic_link" 
    app:showAsAction="never" /> 

<item android:id="@+id/action_settings" 
    android:title="Settings" 
    android:visible="true" 
    android:icon="@mipmap/ic_settings_black_24dp" 
    app:showAsAction="never" 
    > 

</item> 

<item android:id="@+id/action_crlf" 
    android:title="@string/action_crlf" 
    android:checkable="true" 
    android:checked="false" 
    android:visible="false" 
    app:showAsAction="never" /> 


<item android:id="@+id/action_customer" 
    android:title="Link Aadhar" 
    android:icon="@mipmap/ic_card" 
    app:showAsAction="collapseActionView"/> 
<item android:id="@+id/action_bank" 
    android:title="Policy Purchase" 
    android:visible="false" 
    app:showAsAction="collapseActionView"/> 

<item android:id="@+id/action_buy" 
    android:title="Get Device" 
    android:visible="true" 

    android:icon="@mipmap/ic_shopping_cart_black_24dp" 
    app:showAsAction="never" /> 

です。ここに私のテーマスタイルは

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> 

    <!-- Customize your theme here. --> 


    <item name="colorAccent">@android:color/holo_blue_light</item> 

    <item name="android:colorPrimary">@android:color/holo_blue_light</item> 
    <item name="android:windowBackground">@android:color/background_light</item> 
    <item name="android:windowActionBar">true</item> 

</style> 

私はこのAppThemeを含んでいます。私は 意図か、複数のランチャーを使用している場合、私はまた、マニフェスト

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/logo" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".TerminalActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme" > 
     <intent-filter> 
      <action android:name="android.intent.action.DEFAULT" /> 
     </intent-filter> 
    </activity> 
     </application> 

を見てください任意の解決策を得るために失敗したり、私が間違ってやっている何understaningした後、私は従うことをしようとしたチェックしていますいくつかのスタックオーバーフローの答えからの指示。すべての私のメニューアイコンが24dpあるdimens.xmlにデフォルトのアイコンのサイズを変更

<dimen name="design_navigation_icon_size" tools:override="true">24dp</dimen> 

:ここ

は私がやったランダムなものの一部です。私はAndroidがおそらくmdpiのための48dpのアイコンを期待するので、それは問題になる可能性があります。だから私は48x48のアイコンサイズでも96x96サイズでさえほとんどのアイコンを置き換えてチェックしました。

アイコンが再描画されているかどうかを調べるために、実行時に色をアイコンに変更しようとしました。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_terminal, menu); 

    for(int i = 0; i < menu.size(); i++){ 
     Drawable drawable = menu.getItem(i).getIcon(); 
     if(drawable != null) { 
      drawable.mutate(); 
      drawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); 
     } 
    } 



    actionConnect = menu.findItem(R.id.action_connect); 

    actionDisconnect = menu.findItem(R.id.action_disconnect); 

    camPulseMenu= menu.findItem(R.id.action_pulse); 
    menuActivityTracking= menu.findItem(R.id.action_activity); 
    this.menu=menu; 

    return true; 
} 

すべては問題なく動作しますが、リリースビルドでは問題ありません。

また、gradleのリリース設定を変更しようとしました。ここに私のフルグラデルがあります

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 

defaultConfig { 
    applicationId "com.rupam.biosignal" 
    minSdkVersion 21 
    targetSdkVersion 23 
    versionCode 5 
    versionName "1.5" 
    generatedDensities = [] 

} 

aaptOptions { 
    additionalParameters "--no-version-vectors" 
} 

buildTypes { 
    release { 
     minifyEnabled false 
     shrinkResources false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     minifyEnabled false 
     shrinkResources true 
    } 
} 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.macroyau:blue2serial:0.1.5' 
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.1' 
    compile 'com.microsoft.projectoxford:face:1.2.5' 
    compile 'com.nabinbhandari.android.utils.permissions:android-permissions:1.0' 

compile files('libs/dropbox-android-sdk-1.6.3.jar') 

compile files('libs/json_simple-1.1.jar') 
compile files('libs/org.eclipse.paho.client.mqttv3-1.0.2.jar') 
} 

repositories { 
    maven { 
     url "http://dl.bintray.com/macroyau/maven" 
    } 
} 

私の活動はAppCompatActivityを拡張しています。

私は愚かな間違いをしていますが、それを見つけることはできません。

ここで何が間違っているのか理解してもらえますか?なぜアイコンがメニューに表示されないのですか?

PS:私はSamsung Galaxy、Moto G、ViVOでテストしましたが、そのようなデバイスは約7-8個ありましたが運がありません。

+0

はあなたにフルのGradleをしてください提供します。 – Ibrahim

+0

私は自分の質問を編集して、 –

+0

を追加しました。ステップ1:あなたがデバイスにインストールしたもの(およびアイコンがありません)をapkに見てください。すべての解像度を含め、resディレクトリに移動してアイコンが存在することを確認します。私は、その寸法が出現することができるアイコンの種類が異なっていることに気づいています。 –

答えて

1

あなたはShrinkingリリースビルドのあなたのリソースです。

通常のビルドタイプを持ってしてみてください。

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     minifyEnabled false 
    } 
} 
+0

あなたは伝説です。それがトリックでした。また、私は、debug-apkは1.6MBで、release-apkは1MBしかないことに気付きました。しかし、ShrikResourceをリリース時にfalseに設定した後でさえ、リソースを縮小していたにもかかわらず、デバッグ時にそれを設定した後、縮小していないのはなぜですか? –

+0

@RupamDas 'minifyEnabled'がコード縮小のために機能するためです。 – Ibrahim

関連する問題