&引用;分析错误:分析包时出现问题;安装Android应用程序时

&引用;分析错误:分析包时出现问题;安装Android应用程序时,android,Android,我在安装android应用程序时遇到此错误(解析错误:解析包时出现问题。)。我执行了以下步骤 我第一次安装该应用程序时,它工作正常 我对现有应用程序进行了更改,并在清单文件中更改了版本号 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:ve

我在安装android应用程序时遇到此错误(
解析错误:解析包时出现问题。
)。我执行了以下步骤

  • 我第一次安装该应用程序时,它工作正常

  • 我对现有应用程序进行了更改,并在清单文件中更改了版本号

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
    
    <meta-data>
    </meta-data>
    
    
    
  • 然后我导出应用程序并完成代码签名过程。 为此,右键单击项目节点>选择导出。在那里你会看到一个向导。按照步骤完成代码签名

  • 我得到了ARDemo.apk文件,然后我把它的名字改成了ARDemo1.apk

  • 然后我将这个apk文件发送到mobiles SD卡并开始安装,我发现了上面的错误

  • 我在谷歌上搜索过,他们说解包清单文件有问题

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
    
    <meta-data>
    </meta-data>
    

    有人能告诉我我有什么问题吗?

    您说第一次安装应用程序时,它工作正常

    您在两个版本中概述的步骤的唯一区别是:

  • 版本号(我假设是 这并没有参与其中 打破任何东西)
  • 代码
  • .apk文件的名称
  • 尝试将ARDemo1.apk文件重命名回ARDemo.apk(确保备份旧版本),看看是否有帮助。我猜这和apk的名字有关

    如果仍然不起作用,那么您可以消除apk文件的名称作为问题的根源,并开始调查2)通过重建旧版本,查看是否再次出现相同的问题。如果旧代码的重建版本不存在问题,那么您知道这一定与您的代码有关

    我希望你能有所收获

    干杯,
    Joseph

    我只在设备上的android版本低于编译应用程序的版本时看到解析错误。例如,如果应用程序是为android OS v2.2编译的,而您的设备只有android OS v2.1,则在尝试安装应用程序时会出现解析错误。

    如果您在SDK版本2.1下编译和导出apk文件,则在SDK导出“2.1”下的任何android版本上都无法运行。Android软件是向前兼容的,而不是向后兼容的。例如,如果您正在使用android NDK(安卓SDK的安卓附加组件)软件包进行编程,该软件包允许在C/C++系列中进行开发,那么它仅与安卓2.3、安卓2.2及以下版本兼容,仅支持java版本。因此,您将看到“解析软件包时出现问题”错误。

    安装程序至少在以下情况下会给出指定的错误:

    • 签名后更改包的名称:使用与已签名包相同的确切名称(改为在清单中调整名称)
    • 根据更高的API级别编译包:更正清单文件中的API级别
    • 从SD卡执行软件包:从手机内存运行(安装)apk-文件或使用adb命令进行安装
    在尝试从电子邮件安装.apk程序包时,我遇到了相同的错误(解析错误,解析程序包时出现问题)。我通过安装第三方软件包安装程序ApKatcher解决了这个问题:

    阿普卡特并不是唯一的解决方案。我的一位同事通过安装Astro File Manager解决了这个问题


    您可以在Android Marketplace中找到这两个应用程序。

    对于其他任何有此问题的人,我唯一一次出现此错误是当您的Android构建配置中的API版本与物理设备上的不匹配时


    进入Eclipse,右键单击您的项目并转到属性。选择Android——这将带您进入Android构建目标。调整您的目标以匹配设备,并查看这是否解决了问题

    检查您的设备是否支持您在AndroidManifest.xml的minSdkVersion中指定的版本。如果未指定较低版本,请重试

    我遇到了与其他人一样的“解析错误:解析包时出现问题”错误消息,但我怀疑这可能是由不同的原因造成的

    为了测试这一点,我做了以下工作:

    设置 Windows 8.1 日食 ADT构建:v22.6.2-1085508

    我生成了一个典型的接受所有默认值的新Helloworld应用程序

    我在模拟器和实时设备上成功运行了应用程序

    然后我将apk侧向加载并安装到我的实时设备上,并成功运行了它

    它在bin文件夹中生成了一个大小为782kb的apk

    然后,我将Helloworld应用程序导出到同一个bin文件夹中,并从我的密钥存储中为该应用程序签名,该应用程序过去曾成功用于推广到Google Play

    它创建了一个大小为385 KB的APK(替换原来的APK)


    我将apk侧向加载到我的设备上,当我去安装它时,我得到了错误“Parse error:There a problem Parse the package”(这是作为非导出表单侧向加载和安装的同一个包)@android:style/Theme.NoTitleBar.Fullscreen“在Jellybean设备上的launcher活动中。当我删除此属性时,它起作用了。

    类似的问题,使用此“借用”和稍加修改的代码:

                    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;
    
    需要将文件创建更改为此(文件构造函数中的逗号而不是加号,下载目录后缺少“/”):

    另一种可能
    adb logcat
    
    logcat
    
    adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk
    
    adb devices
    
    minSdkVersion 14
    targetSdkVersion 28
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                if (!packageManager.canRequestPackageInstalls()) {
                        startActivityForResult(
                            Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                                Uri.parse(String.format("package:%s", packageName))
                            ), requestCodeqInstallPackage
                        )
                    } else {
                        canInstallPackage = true
                    }
    
            }
    
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
                if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                    if (packageManager.canRequestPackageInstalls()) {
                        canInstallPackage = true
                    }
                } else {
                    canInstallPackage = false
                    Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                        .show()
                }
        }
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       if(canInstallPackage){
          doInstallAppProcess()
       }else{
            // generate error message
       }
    }
    
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-key.keystore app-release-unsigned.apk myappkeyalias
    zipalign -v 4 app-release-unsigned.apk MyApp.apk