安卓:安装APK时出现错误

57

我正在尝试在Android Studio中完成一些简单的任务。以下应用程序已在模拟器上安装,没有任何错误。但是当我尝试将其安装在真实设备Redmi 3S上时,发生了以下错误:

Unknown failure (Failure - not installed for 0)
Error while Installing APKs

我看到了类似的问题,但是那些情况下错误是由于没有启用调试或不允许应用程序安装。然而,我已经允许调试并且我还尝试在 Studio 中安装其他一些应用程序,它运行正常

所以问题可能是代码哪里出了问题。

MainActivity.java

package tlacitko.button;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view) {
        new Thread(new Runnable() {
            public void run() {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            URL url = new URL("http://147.32.186.51:8080");
                           // HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                            InputStream is = url.openStream();
                            BufferedReader br = new BufferedReader(new
                                    InputStreamReader(is));
                            String s = "";
                        }catch(MalformedURLException ex){

                        }catch(IOException e){
                        }
                    }
                });
            }
        }).start();
    }
}

并且这是xml代码:

activity_main.xml

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Try to connect the server."
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="7dp"
        android:layout_marginTop="16dp"
        android:onClick="sendMessage"
        android:text="Conncect"
        app:layout_constraintLeft_toRightOf="@+id/editText"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</android.support.constraint.ConstraintLayout>

请检查是否存在相同的包名应用程序,如果是,请卸载后重试。 - Shanto George
2
重建并运行 - asissuthar
我在上述代码中没有看到任何明显的问题,请验证您的应用程序manifest.xml文件不是应用程序无法安装的原因,确保所有最低版本都设置为您的设备版本,并且该设备允许安装未知的apk文件。 - diegeelvis_SA
@diegeelvis_SA 已解决。谢谢。XML 没有问题,未知 APK 允许。 - Lucie P.
我遇到了类似的错误。重新构建解决了它。 - 林果皞
显示剩余3条评论
18个回答

114

按照以下步骤解决问题:

  1. 断开与系统连接的所有设备,并关闭在系统上运行的所有模拟器。
  2. 从设置中关闭“即时运行”功能。
  3. 进行一次清理构建。
  4. 从设置中打开“即时运行”功能。
  5. 再次进行一次清理构建。
  6. 连接设备/启动模拟器,并确保它在线。
  7. 通过选择设备/模拟器来运行项目。

注意:

1) 系统上不应运行不同实例的Android Debug Bridge(adb)。

2) 如果使用Genymotion,则确保您在Genymotion设置中使用了自定义的sdk路径,并在Android Studio设置中提到了该路径。

这些步骤很可能会解决您的问题,但也有可能是由于Android版本的问题造成的。


我正在使用Genymotion。其他应用程序都可以正常工作。但是只有一个应用程序无法安装。虚拟设备是Android 8.0。出现的错误是在安装APK时出错。 - anju jo
清理构建和重新构建解决了安装apk失败的问题。谢谢! - Agent 0
谢谢!按照这些步骤,我现在能够构建和使用即时运行功能了。那就是问题所在,缓存。谢谢! - wilmerlpr
在我的情况下,是手机内存不足的问题。我释放了一些空间,然后它就正常工作了。如果对某人有用的话.. - Bogojob
我在哪里可以找到“即时运行”功能/选项? - Kamlesh
谢谢@Bogojob - 这也是我的问题 :) 清理一些内存解决了它 - eh21

54

关闭Android Studio中的Instant Run。请按照以下步骤操作:

  1. 文件(File) >> 设置(Settings) >> 构建、执行、部署(Build, Execution, Deployment)。

  2. 点击Instant Run,取消勾选"在部署时通过热替换代码/资源更改启用即时运行"。

  3. 点击"应用(Apply)"和"确定(OK)"。

尝试再次运行应用程序。现在应该能够安装该应用程序。您随时可以重新启用Instant Run。

编辑(Android Studio 3.0)

禁用 Instant Run (Android 文档)

禁用 Instant Run 的方法如下:

  1. 打开设置(Settings)首选项(Preferences)对话框。(对于 Mac,选择Android Studio -> Preferences)
  2. 导航至构建、执行、部署(Build, Execution, Deployment) > Instant Run
  3. 取消选中旁边的启用 Instant Run复选框。

7
对我而言,这解决了我的问题。在Android Studio中原本的错误信息是Unknown failure (at android.os.Binder.execTransact(Binder.java:565) - Yoav Feuerstein
1
我尝试了第一和第二个答案,然后发现Android Studio显示我的模拟器设备内部空间不足,我调整了大小并重新启动设备,现在它可以工作了。 - Sarah0050

9

对于红米和小米设备,请关闭MIUI优化并重新启动手机。

设置 > 其他设置 > 开发者选项 > MIUI 优化

在这里查看答案


9
对我来说,我只是对应用程序进行了一次“清理”,然后一切都正常工作了。

在我的情况下,我只是压缩了现有项目,而没有删除 build 文件夹,然后将其复制到另一台笔记本电脑上并在模拟器中执行。结果出现了问题。我按照这个答案执行了 clean 操作,现在一切正常运行。 - wonsuc

6

我现在面临这个问题,我已经卸载了apk,现在我想使用Android Studio 3.0将apk运行到小米MIX 2(Android 7.1.1,API 25),但是失败了。

$ adb shell pm install -t -r "/data/local/tmp/com.package"
Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]

Android Studio告诉我:“如果存在apk,则卸载现有版本可能会解决此问题,然后重新安装。”但我已经卸载了这个apk。Android Studio弹出信息我点击“确定”按钮,但仍然失败。
$ adb shell pm uninstall com.package
Unknown failure (at android.os.Binder.execTransact(Binder.java:565))
Error while Installing APK

最终,我找到了解决这个问题的方法。我没有打开“通过 USB 验证应用程序”,因为现在这个设备在登录小米帐户之前不能打开它,并且这是一个尚未登录的新设备。
步骤 1:进入“设置”→ 找到“系统中”的“开发人员选项”,然后单击。
步骤 2:在调试部分中打开“通过 USB 验证应用程序” 步骤 3:再次尝试在 Android Studio 中“运行应用程序”!

5

在尝试以上所有建议之前,请检查设备上是否有足够的内存空间。这也可能是导致此问题的原因。

错误:android.os.ParcelableException:java.io.IOException:请求仅限内部,但空间不足

编码愉快 :)


4

可能是Android Studio版本2.3和Gradle插件版本2.3.0与小米设备的兼容性存在问题,无法使用即时运行功能。

adb multiple-install分割的APK返回错误。

您可以关闭即时运行功能,或者在设置 -> 开发人员选项中,将打开MIUI优化关闭,以便同时使用即时运行功能。


2
我曾经清理了项目并解决了这个问题。 构建-> 清理项目。

2

可能是您的设备存储已满。如果您正在测试物理设备,请确保也检查存储空间是否可用。否则,您需要关闭即时运行。


1

我也遇到了同样的问题,但我的问题是设备空间不足。

尝试这个: 在您的设备上转到“设置” -> “设备维护” -> “立即优化”

一旦完成此操作,请再试一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接