多くのマニフェストの属性は、文字列への参照として指定することはできません - 彼らは、明示的な文字列値として指定する必要があります。フレームワーク/ベース/コア/ジャワ/アンドロイド/コンテンツ/ PM/PackageParser.java:マニフェストを解析
コードはです。このクラスは、とりわけgetNonConfigurationString()とgetNonResourceString()(frameworks/base/core/java/android/content/res/TypedArray.javaで実装されています)を呼び出します。
getNonConfigurationString()として自身を説明:
Retrieve the string value for an attribute, but only if that string comes from an immediate value in an XML file. That is, this does not allow references to string resources, string attributes, or conversions from other types. As such, this method will only return strings that come from attributes in an XML file.
PackageParserリソースから、または異なる構成から採取されることを可能にしないマニフェスト属性:
getNonResourceStringは()としての地位を説明します以下にリストされています。
これらの属性は、正式名称に「_」のmanifest.xml要素は、名前は通常、最後の後の名前の一部である属性com.android.internal.R.styleableで定義されています。たとえば、manifest.xmlの要素のandroid:authorities属性は、AndroidManifestProvider_authoritiesまたはcom.android.internal.R.styleable.AndroidManifestProvider_authoritiesです。 (以下の属性名のリスト中の数字は、PackageParserのバージョン4.1.1の関連するコードの行番号です。Java)のgetNonConfigurationStringで読み取る
属性:getNonResourceStringで読み取り
917: AndroidManifest_versionName
922: AndroidManifest_sharedUserId
2057: AndroidManifestActivity_parentActivityName
2071: AndroidManifestActivity_permission
2079: AndroidManifestActivity_taskAffinity
2247: AndroidManifestActivityAlias_targetActivity
2330: AndroidManifestActivityAlias_permission
2336: AndroidManifestActivityAlias_parentActivityName
1672: AndroidManifestApplication_name
1683: AndroidManifestApplication_manageSpaceActivity
1697: AndroidManifestApplication_backupAgent
1795: AndroidManifestApplication_permission
1800: AndroidManifestApplication_taskAffinity
1815: AndroidManifestApplication_process
3005: AndroidManifestData_mimeType
3017: AndroidManifestData_scheme
3023: AndroidManifestData_host
3025: AndroidManifestData_port
3031: AndroidManifestData_path
3037: AndroidManifestData_pathPrefix
3043: AndroidManifestData_pathPattern
2527: AndroidManifestGrantUriPermission_path
2533: AndroidManifestGrantUriPermission_pathPrefix
2539: AndroidManifestGrantUriPermission_pathPattern
2579: AndroidManifestPathPermission_permission
2581: AndroidManifestPathPermission_readPermission
2586: AndroidManifestPathPermission_writePermission
2615: AndroidManifestPathPermission_path
2622: AndroidManifestPathPermission_pathPrefix
2629: AndroidManifestPathPermission_pathPattern
2434: AndroidManifestProvider_authorities
2441: AndroidManifestProvider_permission
2443: AndroidManifestProvider_readPermission
2454: AndroidManifestProvider_writePermission
2713: AndroidManifestService_permission
2832: AndroidManifestMetaData_name
1225: AndroidManifestOriginalPackage_name
1981: (parsePackageItemInfo -- I can't tell list of all names)
3258: (Component constructor args.nameres -- I can't tell list of all names)
属性:
1806: AndroidManifestApplication_taskAffinity
1821: AndroidManifestApplication_process
1632: AndroidManifestInstrumentation_targetPackage
2891: AndroidManifestPackageVerifier_name
2894: AndroidManifestPackageVerifier_publicKey
1512: AndroidManifestPermission_permissionGroup
1200: AndroidManifestProtectedBroadcast_name
1927: AndroidManifestUsesLibrary_name
1054: AndroidManifestUsesFeature_name
1004: AndroidManifestUsesPermission_name
3308: (Component constructor args.processRes -- I can't tell list of all names)
ので、Manifest.xmlファイル内の属性の多くは、明示的な文字列値として指定する必要があります(つまり、引用符で囲んで)、strings.xml内の文字列への参照ではありません。
私はちょうどこの問題に直面しました。もちろん、誰かが2.1以前でこれを動作させる方法を指摘すれば、素晴らしいことでしょう。 – dmon
私は文字列に移動しましたが、もっと新しいAPIをビルドターゲットとして使用して、アンドロイド:minSdkVersionを7に設定するか、targetTargetを何に設定しても、appsToSdを2.1をサポートするアプリケーションにコンパイルするのと同様です。 – HaMMeReD
私はそれが動作するとは思えません。実際の電話はインストール時に文句を言うので、コンパイルすると失敗しません。私は文字列をMavenで "手動で"置き換えることになりました。それは吸うが、それは今のところうまくいく。 2.1が終わると、私はそれを取り戻すことができると思います:) – dmon