安装Android应用程序时出现“parsing错误:parsing软件包时出现问题”
我在安装android应用程序时出现这个错误( Parse Error : There is a problem parsing the package.
)。 我做了以下步骤。
-
我第一次安装应用程序,它工作正常。
-
我对现有应用程序进行了更改,并更改了清单文件中的版本号。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
-
然后我导出应用程序并完成代码签名过程。 为此,请右键单击您的项目节点>select导出。 在那里你会看到一个巫师。 按照步骤完成代码签名。
-
我得到了ARDemo.apk文件,然后将其名称更改为ARDemo1.apk
-
然后我把这个apk文件发送到手机SD卡,并开始安装我得到了上述错误。
我GOOGLE了,他们说解体清单文件的问题。
谁能告诉我什么可能是我的错?
你说,你第一次安装的应用程序工作正常。
这两个版本之间概括的步骤唯一的区别是:
- 版本号(我假设这没有参与破坏任何东西)
- 代码
- .apk文件的名称
尝试将ARDemo1.apk文件重命名为ARDemo.apk(确保备份旧版本),看看是否有帮助。 我的猜测是它与apk的名字有关。
如果还是不行,那么你可以把apk文件的名字作为问题的来源,并开始调查2)重build你的旧版本,看看你是否还有同样的问题。 如果旧代码的重build版本不存在问题,那么你知道它必须与你的代码有关。
我希望能把你带到某个地方
干杯,约瑟夫
至less在以下情况下,安装可能会给出指定的错误:
- 包裹名称在签字后被改变 :使用确切的名字作为被签署的包裹(相反,在Manifest调整名字)
- 包是针对更高API级别编译的 :更正Manifest文件中的API级别
- 从SD卡执行包 :从手机内存中运行(安装)apk文件或使用adb命令进行安装
我只看到parsing错误,当设备上的Android版本低于应用程序编译的版本。 例如,如果应用程序编译为Android操作系统v2.2和您的设备只有Android操作系统v2.1,你会得到一个parsing错误,当你尝试安装应用程序。
原因是apk没有签名。 一旦apk签名,问题将被解决。 http://ionicframework.com/docs/guide/publishing.html请使用指示链接签署apk。;
如果您正在编译和导出SDK 2.1版下的apk文件,它将不会在您的SDK导出“2.1”之下的任何Android版本上工作。 Android软件是向前兼容的,不向后兼容。 例如,如果您使用Android NDK(annad附加到android SDK)包进行编程,该包允许在C / C ++系列中进行开发,这仅与android 2.3兼容,android 2.2和更低版本仅支持java构build。 因此,您将重新编译“parsing软件包时出现问题”错误。
在尝试从电子邮件安装.apk软件包时,出现同样的错误(parsing错误,parsing软件包时出现问题)。 我能够通过安装第三方软件包安装程序ApKatcher解决这个问题:
http://www.addictivetips.com/mobile/install-android-apps-from-gmail/
ApKatcher不是唯一的解决scheme。 我的一个同事通过安装Astro文件pipe理器解决了这个问题。
您可以在Android Marketplace中find这两个应用程序。
检查您的设备是否支持您在AndroidManifest.xml中的minSdkVersion中指定的版本。 如果不指定较低的版本,请重试
类似的问题,使用这个“借来的”,稍作修改的代码:
Intent intent = new Intent(Intent.ACTION_VIEW); File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk"); intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); result = true;
需要将文件创build更改为此(逗号,而不是在文件构造函数加号,在下载目录后缺less'/'):
File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");
另一种可能是您已将apk文件保存到应用程序的PRIVATE文件夹中,然后尝试安装(通过从您的代码开始一个意图)。 在这种情况下,当你开始意图的时候,你会得到错误parsing包。 在这种情况下,引发的错误是关于权限问题。 重点是将文件保存到私人文件夹不是一个好的做法,但是如果你真的想这样做,你应该在下载时在MODE_WORL_READABLE中写入文件。 请认为MODE_WORLD_READABLE已被弃用,并且此解决scheme不是最好的,因为它有一些安全问题。 最好的方法是将文件保存在外部存储器中。
我在清单文件中有一个错误的标签对。
<meta-data> </meta-data>
基本上,当我从Payu的PDF文件复制一个不好的meta-data
示例代码。 废话。
导致此错误的另一个问题可能是从受限制的SD /mnt/media_rw/MicroSD
安装APK。
使用不受限制的安装点/Removable/MicroSD
。
只是为了帮助新读者,另一个原因可能是清单文件中的错误。 我错误键入android:service
作为android.service
并遇到相同的错误…
对于任何有这个问题的人,唯一一次我得到这个错误的时候,你的Android Buildconfiguration中的API版本与物理设备上的内容不匹配。
进入Eclipse并右键单击您的项目并转到属性。 selectAndroid – 让你进入机器人构build目标。 调整你的目标,以匹配设备,看看是否可以解决这个问题。
我有这个问题,即使我指定了正确的minSDK和targetSDK版本。 我的问题是,我正在使用"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
在Jellybean设备上的启动器活动中。当我删除这个属性时,它工作。
一个原因可能是,您的activity'name没有在清单中定义
<activity android:name="" ...> </activity>
上面的代码与我创build相同的问题
正如其他一些答案所述,从SD卡安装时可能会出现问题。 在我的情况下,我通过电子邮件附件分发我的应用程序,它通常工作正常。 只要打开电子邮件并下载附件(它显然是去SD卡),再次点击它,它被安装。
但有一天它没有工作,事实certificate,这是因为我的手机通过USB连接到我的开发电脑,并将SD卡置于不同的模式或东西。 因此,解决scheme只需将手机与PC断开连接,然后再次发送电子邮件并再次下载附件。 否则将USB连接置于“仅充电”模式,以使SD卡不与PC“连接”。
您可能还需要检查设备上的日志,以查看它是否像权限问题一样简单。 您可以使用adb
从主机/debugging计算机上检查日志:
adb logcat
或者,如果您有权访问控制台(或者使用Android-x86通过inputAlt + F1来获取控制台),则可以使用logcat
命令检查日志:
logcat
我有使用从android Tools > Export
的apk文件相同的问题。 我使用bin文件夹中的apk文件,而它的工作!
第一次在eclipse中运行应用程序后,创buildPS文件夹的bin文件夹。
我遇到了与我签名的APK一样的“parsing错误:parsing软件包时出现问题”错误消息,但是我怀疑它可能是由不同的原因造成的。
为了testing这个我做了以下:
安装Windows 8.1 Eclipse ADT Build:v22.6.2-1085508
我生成了一个典型的新Helloworld应用程序接受所有的默认值。
我在模拟器和现场设备上成功运行了应用程序。
然后我卸载并安装了apk到我的现场设备并成功运行。
它已经在bin文件夹中生成了一个大小为782 KB的apk。
然后,我将Helloworld应用程序导出到同一个bin文件夹中,该文件夹从我以前成功使用的密钥存储区中签署应用程序,以便推送到Google Play。
它创build了一个大小为385 KB的APK(replace原来的apk)。
我将apk文件加载到我的设备上,当我去安装它时,出现“parsing错误:parsing软件包时出现问题”(这是与非导出格式完全相同的软件包)。