清单中原始包的用途是什么

时间:2015-10-29 18:38:47

标签: android attributes android-manifest manifest

有人知道清单中原始包的确切用途是什么?

我刚从manifest attr链接获得了以下评论。但是不知道如何使用,何时使用?

  

私有标记,用于声明此包的原始包名称        基于。仅用于系统映像中安装的软件包。如果        给定的,不同于实际的包名和给定的        原始软件包以前安装在设备上但是新的        一个不是,那么旧的数据将被重命名为        对于新包装。

如果有人知道,请详细解释一下?

3 个答案:

答案 0 :(得分:0)

来自docs:

  

私有标记声明此包的原始包名   是       基于。仅用于系统映像中安装的软件包。如果        给定的,不同于实际的包名和给定的        原始软件包以前安装在设备上但是新的        一个不是,那么旧的数据将被重命名为        对于新包装。

Eg:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.deskclock"
    android:versionCode="301" android:versionName="3.0.0">

       <original-package android:name="com.android.alarmclock" />
       <original-package android:name="com.android.deskclock" />

答案 1 :(得分:0)

假设它是您的应用的ID,并且没有其他应用可以拥有相同的包名称。每个应用程序应该是唯一的。它主要用于安装时检测是否是相同的应用程序,也用于将其上传到Google Play。

答案 2 :(得分:0)

简而言之,这是属性的属性,适用于系统包。即如果系统软件包由于某种原因想要更改软件包名称作为维护版本的一部分,那么这是可行的方法。

更多详情:

< original-package /> // original-package Should notify PackageManager to do the replacement  

Per Packageparser.java

if (tagName.equals("original-package")) {
            sa = res.obtainAttributes(attrs,
com.android.internal.R.styleable.AndroidManifestOriginalPackage);
String orig =sa.getNonConfigurationString(                             
com.android.internal.R.styleable.AndroidManifestOriginalPackage_name, 0);
if (!pkg.packageName.equals(orig)) {
   if (pkg.mOriginalPackages == null) {
               pkg.mOriginalPackages = new ArrayList<String>();
               pkg.mRealPackage = pkg.packageName;
             }
        pkg.mOriginalPackages.add(orig);
      }
    sa.recycle();
    XmlUtils.skipCurrentTag(parser);
}

私有标记,用于声明此包的原始包名称 基于。仅用于系统映像中安装的软件包。如果 给定的,不同于实际的包名和给定的 原始软件包以前安装在设备上但是新的 一个不是,那么旧的数据将被重命名为 对于新包装。 #AndroidManifest清单标记。

<declare-styleable name="AndroidManifestOriginalPackage"parent="AndroidManifest">
<attr name="name" />
</declare-styleable>`