web-dev-qa-db-ja.com

APKをPlayストアにアップロードしているときに「 'Android:icon'属性:属性は文字列値ではありません」エラーが発生する

バックグラウンド

何時間も自由に過ごした後、最初のアプリをPlayストアに公開する準備ができましたが、残念ながら、署名済みのアプリをアップロードするのに問題があります。

作成したキーストアを使用してアプリを正常にエクスポートしたので(すべてEclipseとADTを介して)、署名済みのAPKをPlayストアにアップロードします( here )。

問題

私はこのメッセージを受け取り続けます:

アップロードに失敗しましたAPKは「aaptdumpbadging」を使用して分析できません。エラー出力:aaptダンプバッジの実行に失敗しました:W/ResourceType(14856):リソース番号0x01080049の値を取得するときに既知のパッケージがありません 'Android:icon'属性の取得エラー:属性は文字列値ではありません

など:

enter image description here

アプリ自体は実際のデバイスで非常にうまく機能し、使用されている画像ファイルは Android-assets-studioウェブサイト で使用されている通常のPNGファイルです。 。

私が試したこと

私はここStackOverflowで検索し、それに関する多くの投稿を見つけました( here )。私はそれらの多くを読み、次のことを試しましたが、何も役に立ちませんでした:

  1. アプリのアイコンを別のフォルダー(「drawable」、「drawable-mdpi」、...「drawable-xxxhdpi」)に複数の組み合わせで配置します(各フォルダーから配置/削除します)。

  2. 「アプリケーション」タグとランチャーアクティビティタグの両方にラベル、アイコン、テーマを設定します。

  3. 画像ファイル名とファイル自体を変更します(デフォルトのアプリアイコンに置き換えました)。

  4. プロジェクトをクリーンアップします。

  5. Lintメッセージを確認しています。

  6. aDT(22.3.0.v201310242005-887826へ)、Eclipse(Kepler Service Release 1へ)、SDKツール(22.3へ)、SDKビルドツール(19.0.1へ)の更新。すべてがほぼ最新の公式バージョンです。

  7. 使用されているダブルjarファイルがないことを確認します(特にバージョンが異なる場合は、複数のライブラリにjarファイルが存在しないことを確認します)。

  8. 「res/values」ではなく「res/values-en」にstrings.xmlを入れてみました

  9. マニフェストのすべてのメタデータタグに「Android:value」属性を追加してみました(Googleが推奨)。それはうまくいきませんでした。実際、私が読んだすべてのチュートリアルで、AppWidgetからそのような要件を見たことがないので、とにかく必要ないと思います。

  10. aaptコマンドを試しました:

    aapt dump badging
    

これは、Playストアが示すのとほぼ同じことを示しています(実際のパッケージ名とアプリ名をここでXXXに置き換えました):

application: label='XXX XXX' icon='res/drawable-mdpi/app_icon.png'
launchable-activity: name='XXX.XXX.XXXActivity'  label='XXX XXX' icon='res/drawable-mdpi/app_icon.png'
W/ResourceType( 9132): No known package when getting value for resource number 0
x01080049
ERROR getting 'Android:icon' attribute: attribute is not a string value

これは、ファイルがこのフォルダー内に存在する場合でも発生します。

これがマニフェストです。ここでも、アクティビティとアプリの実際のパスと名前をXXXに置き換えました。アプリは正常に実行できるため、パスが正しいことを保証できます。

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    package="XXX.XXX"
    Android:installLocation="auto"
    Android:versionCode="2"
    Android:versionName="1.0" >

    <uses-sdk
        Android:minSdkVersion="9"
        Android:targetSdkVersion="19" />

    <supports-screens
        Android:anyDensity="true"
        Android:largeScreens="true"
        Android:normalScreens="true"
        Android:smallScreens="true"
        Android:xlargeScreens="true" />

    <uses-permission Android:name="com.Android.launcher
                                   .permission.INSTALL_SHORTCUT" />
    <uses-permission Android:name="Android
                                   .permission.KILL_BACKGROUND_PROCESSES" />
    <uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission Android:name="Android.permission.ACCESS_SUPERUSER" />

    <!-- required for admob: -->
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission Android:name="Android.permission.INTERNET" />

    <!-- required for in-app billing . -->
    <uses-permission Android:name="com.Android.vending.BILLING" />
    <!-- needed for payload of in-app billing -->
    <uses-permission Android:name="Android.permission.GET_ACCOUNTS" />

    <application
        Android:name="XXX.XXX.XXX"
        Android:allowBackup="true"
        Android:description="@string/app_description"
        Android:hardwareAccelerated="true"
        Android:icon="@drawable/app_icon"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >

        <activity
            Android:name="XXX.XXXActivity"
            Android:clearTaskOnLaunch="true"
            Android:configChanges="keyboard|keyboardHidden|orientation|
                                   screenLayout|uiMode|screenSize|
                                   smallestScreenSize"
            Android:finishOnTaskLaunch="true"
            Android:icon="@drawable/app_icon"
            Android:label="@string/XXX"
            Android:launchMode="singleTask"
            Android:screenOrientation="fullSensor" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
     ... (other activities and services)

質問

何が起こっている?

どうすればこれを克服できますか?

26

Androidシステムアイコンアクティビティアイコンとして(つまり、マニフェストに<activity ... Android:icon="@Android:drawable/...が含まれている)を使用している場合は、問題がある可能性があります。使用している場合は、コピーしてみてくださいこれらのアイコンをプロジェクトに組み込みます。バッジはそれらに影響を与えないため、他の場所で使用しても問題はありません。

16

私にとっては、次のような透明なアイコンを配置しようとしたという事実でした。

Android:icon="@Android:color/transparent"

13
Alberto M

私は正しい答えがあることを知っています、しかし私は私の経験が誰かを助けることができると信じています...

だから私は同じエラーを受け取ります:

'Android:icon'属性の取得中にエラーが発生しました:属性は文字列値ではありません

しかし、私の問題はアイコンとは関係ありませんでした!!!

このエラーが発生する理由は次のとおりです。

Android:label = "@ string/app_name"

私のプロジェクトには3つの異なる言語がありますが、メインのstring.xmlには@ string/app_nameがありませんでした...これが理由です!

ので注意してください!

2
Stan Malcolm

私の場合、問題は単に、アプリの依存関係の1つが、ドローアブルを使用する代わりに、マニフェストでAndroid:icon = "@ color/black"を使用するアクティビティの1つを宣言したことでした。コンパイルエラーは発生せず、アプリは問題なく動作します。 aaptツールのみがエラーを報告します(またはPlaystoreにアップロードします)。ライブラリはAndroid:iconを宣言する必要さえありませんが(インストール可能なアプリではありません!)、AndroidStudioはすべてのプロジェクトをデフォルトでマニフェストで宣言しているようです。

2
Deepers

コンピュータの電源を切ってからもう一度入れてみましたか?

アプリケーションで指定されたアイコンにフォールバックするため、アクティビティからAndroid:icon="@drawable/app_iconを削除してみてください。

Proguardを使用しないようにしてください。

0
FunkTheMonk

私が推測するすべてを試したようです。アイコンを変えてみませんか? :)私は左があなたのアイコンである可能性だけを意味します。

0
user666

私の場合、常にデフォルトのresフォルダー、つまりvalues、values-es、values-caを使用して解決しました。

0
nrikee

私の場合、リリース前にパッケージ名を変更し、ディレクトリ名の変更を忘れたために問題が発生していました。プロジェクトはまだコンパイル中でしたが、グーグルプレイでリリースすることは不可能でした。

エラーのある赤い下線付きのパッケージ名がある場合は、Javaファイルをチェックインしてください

'パッケージ名xxx.yyy.zzzはファイルパス' xxx.eee.zzz 'に対応していません。

0
RadekJ

画面サイズごとに別々のレイアウトを作成してみてください。フォルダにres/layoutおよびres/layout-largeという名前を付けます

0
Akshat Agarwal

今日も同じ問題が発生していましたが、@ Rahl_Prydeのソリューションは小さな変更を加えるだけで問題なく機能しました。

私の場合、問題はいくつかのアクティビティアイコンのAndroid透明解像度の色でした。しかし、ローカルの透明色に変更しても問題は解決しません。

アイコンを透明色から2x2透明pngに変更したときに修正されました。

0
RubensBrilhante

私の場合、アプリアイコンに使用するpngを「drawable-nodpi」フォルダーにコピーすると、Playストアがapkを受け入れました。 nodpiフォルダーがない場合は、バケットサイズに関連するドローアブルフォルダーからコピーして、ベースフォルダー「ドローアブル」に貼り付ける必要があります。

今日までこのエラーを見たことがないので、これは最近のPlayストアの要件のようです。 androiddeveloperのコメントにも注意してください。

0
whyoz

XMLドローアブルをアイコンとして使用しようとしたときに(PNG画像にパディングなどを追加するために)、この問題(または同様の問題)に見舞われたと思います。 PNGファイルを直接参照しているように見えるので、問題は同じではないと思います。

試すべきいくつかの提案(消去法によって問題を追跡するため):

  • res/drawable-mdpi/app_icon.pngファイルを削除して、別のエラーが発生したかどうかを確認します。
  • マニフェストのすべてのAndroid:icon属性を削除し、それでもエラーが発生するかどうかを確認します。
  • プロジェクト内のapp_iconという名前の他のリソースの名前を別の名前に変更します。

他のすべてが失敗した場合、エラーがそれらのいずれかによってトリガーされたかどうかを確認するために、外部JARとライブラリプロジェクトを削除し始めます(そしておそらくそれらを参照するコードに一時的にコメントします)。または、最低限のAndroidManifest.xmlから始めて、一度に1つのアイテムを追加することもできます。

もう1つのアイデアは、aaptがエラーを生成している理由を理解することです。たぶん、ソースをダウンロードしてデバッグしてみてください。

0
Joe

場合によっては、値に@nullを使用したことが問題です。それを完全に削除すると修正されます。 Android:iconに@nullを入れた場合も同じことが起こります。

0
deathemperor