0

我对某事有点困惑。

我编写了一个应用程序并在具有以下规格的 LG Ally 上对其进行了测试:

安卓版本: 2.2.2

内核版本: 2.6.32.9

内部编号:FRG83G

现在我正在尝试在具有以下规格的 HTC 上安装它(通过 adb install AppName.apk):

安卓版本:2.3.3

内核版本:2.6.35.10-gc0a661b HTC-kernel@and 18-2#1

内部版本号:4.24.651.1 CL61076

我收到类似“错误解析包”的错误

这就是我感到困惑的地方。我想尝试重复这个问题。所以我创建了一个具有以下规格的模拟器 AVD:

安卓版本:4.0.3

内核版本: 2.6.29-g46b05b2 vchtchetkine@vc-irv #28

内部版本号: google_sdk-eng 4.0.4 MR1 302030 测试密钥

而且....我可以使用不会在 HTC 上安装应用程序的 adb install 命令成功安装我的应用程序。

我不明白为什么我可以使用“adb install”将它放在 LG Ally 和模拟器上,但我在 HTC 上收到解析错误。

我以为我可能需要在 AndroidManifest 中,但是为什么没有它我可以在模拟器上安装呢?

我的清单如下(为简洁起见,我删除了活动定义):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.mj.molepatrol"
  android:versionCode="1"
  android:versionName="1.0">


  <application android:icon="@drawable/icon" android:label="@string/app_name">

      <uses-library android:name="com.google.android.maps" />

  </application>

      <uses-permission
      android:name="android.permission.READ_CALENDAR">
      </uses-permission>

  <uses-permission
       android:name="android.permission.WRITE_CALENDAR">
  </uses-permission>

  <uses-permission
       android:name="android.permission.EDIT_CALENDAR">
  </uses-permission> 

  <uses-permission android:name="android.permission.INTERNET" />

      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
4

2 回答 2

1

尝试使用

<uses-sdk android:minSdkVersion="10">

它会解决你的问题。因为,我阅读了有关 uses-sdk 的文档,

注意如果你不声明这个 (uses-sdk android:minSdkVersion) 属性,系统假定默认值为“1”,这表明你的应用程序兼容所有版本的 Android。如果您的应用程序不兼容所有版本(例如,它使用 API 级别 3 中引入的 API)并且您没有声明正确的 minSdkVersion,那么当安装在 API 级别低于 3 的系统上时,应用程序将在运行期间崩溃尝试访问不可用的 API 时的运行时。因此,请务必在 minSdkVersion 属性中声明适当的 API 级别。

来源:Android 开发者网站

于 2012-06-18T02:20:43.927 回答
0

可能的问题是您正在使用设备不可用的功能。例如相机或 NFC。

你只有设置minSdkVersiontargetSdkVersion正确吗?

清单中会有一些 htc 不喜欢的内容,请发布您的AndroidManifest.xml文件,以便我们查看细节并为您解决

于 2012-06-18T00:38:43.630 回答