一个项目的多个AndroidManifest.xml文件?

时间:2011-05-26 05:14:39

标签: android compatibility android-manifest

在过去的几个月里,我一直在开发针对Cupcake的Android应用程序(Android 1.5,API Lvl 3),一切都运行良好(总体来说它是一个相当简单的应用程序)。

然而,最近我注意到我想做两件事:

  1. 限制仅使用Internet的权限(使用API​​ Lvl 3,尽管只在清单xml中定义了Internet权限,但它使用了2个其他权限)
  2. 让用户将应用移动到SD卡/外部存储
  3. 这些变化都非常简单 - AndroidManifest.xml

    中的几行

    我找到的解决方案是:

    1. 要限制权限,请添加:<uses-sdk android:minSdkVersion="4"/> http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
    2. 要允许用户将应用移至SD卡,请添加(manifest标记):android:installLocation="auto" http://developer.android.com/guide/topics/manifest/manifest-element.html
    3. 但是,#1的解决方案需要API Lvl 4(Android 1.6),#2的解决方案需要API Lvl 8(Android 2.2)!

      这是否意味着如果我想要上面列出的#1和#2,我的应用只会与Android 2.2+兼容?

      或者,有没有办法为一个项目提供多个AndroidManifest.xml文件? (我知道该应用程序的实际代码适用于Android 1.5,并且在清单文件中仅仅为了几个额外的行排除它们似乎是浪费)

      谢谢!

3 个答案:

答案 0 :(得分:2)

关于将您的应用移至SD卡。它不是之前。当引入android 1.5时,没有这种类型的概念。这是Android 1.5的新概念

我认为你可以为android 1.5提供此功能

由于 迪帕克

答案 1 :(得分:1)

添加android:installLocation="auto"不会对向后兼容性产生负面影响 - 旧版Android会忽略它。

设置<uses-sdk android:minSdkVersion="4"/>会阻止应用在Android 1.5设备上的Market上安装或显示。这是它的全部目的。

如果您需要为不同的SDK版本拥有不同的权限集,那么很遗憾,您需要两个单独的项目和两个单独的市场列表。您可以通过将android:maxSdkVersion="3"添加到<uses-sdk>代码来阻止您的应用的Cupcake版本显示更新的设备。

答案 2 :(得分:1)

使用Android程序包重命名以获得两个不同的程序包,即在一个项目中具有不同AndroidManifest.xml文件的同一应用程序。见https://stackoverflow.com/a/4426654/1173350

相关问题