安装失败并显示消息 Error: android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/54461288/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Installation failed with message Error: android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space
提问by Gabriel Vicente Albasini Garau
I was getting the message
我收到了消息
> Installation failed with message Failed to establish session.
so following some responses to the problem I disabled Instant Run and I started getting
所以在对这个问题的一些回应之后,我禁用了 Instant Run 并且我开始得到
> Installation failed with message Error: android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space.
I′ve tried rebuilding, cleaning the project, to disable and enable Instant Run and to build APK but nothing solves the problem.
我试过重建、清理项目、禁用和启用 Instant Run 以及构建 APK,但没有解决问题。
This is my build.gradle (Module:app).
这是我的 build.gradle (Module:app)。
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.gabriel.justmeet"
minSdkVersion 21
targetSdkVersion 28
versionCode 9
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.volley:volley:1.1.0'
}
and this is the build.gradle(Project)
这是 build.gradle(Project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'http://repo1.maven.org/maven2' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
This started when I modified my RegisterActivity, so it might help
这是在我修改我的 RegisterActivity 时开始的,所以它可能会有所帮助
package com.example.gabriel.paska;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.HashMap;
import java.util.Map;
public class RegisterActivity extends AppCompatActivity {
public static final String REGISTER_URL ="http://justmeet.000webhostapp.com/php/register.php";
public static final String KEY_USERNAME ="username";
public static final String KEY_PASSWORD="password";
public static final String KEY_NAME ="name";
public static final String KEY_AGE="age";
public static final String REGISTER_SUCCESS ="RegisterSuccess";
public static final String SHARED_PREF_NAME="tech";
public static final String USERNAME_SHARED_PREF="username";
public static final String LOGGEDIN_SHARED_PREF="loggedin";
private boolean loggedIn=false;
EditText etAge;
EditText etName;
EditText etPassword;
EditText etUsername;
Button bRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etAge = findViewById(R.id.etAgeR);
etName = findViewById(R.id.etNameR);
etPassword = findViewById(R.id.etPwordR);
etUsername = findViewById(R.id.etUsernameR);
bRegister = findViewById(R.id.btRegister);
bRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
register();
}
});
}
private void register() {
final String name = etName.getText().toString().trim();
final String password = etPassword.getText().toString().trim();
final String username = etUsername.getText().toString().trim();
final String age = etAge.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.trim().equalsIgnoreCase(REGISTER_SUCCESS)){
SharedPreferences sharedPreferences = RegisterActivity.this.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(LOGGEDIN_SHARED_PREF, true);
editor.putString(USERNAME_SHARED_PREF, name);
editor.apply();
Intent intent = new Intent(RegisterActivity.this, UserActivity.class);
startActivity(intent);
}else{
Toast.makeText(RegisterActivity.this, "Register Failed" + response.trim(), Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> prams = new HashMap<>();
prams.put(KEY_USERNAME, username);
prams.put(KEY_PASSWORD, password);
prams.put(KEY_NAME, name);
prams.put(KEY_AGE, age);
return prams;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREF_NAME,Context.MODE_PRIVATE);
loggedIn = sharedPreferences.getBoolean(LOGGEDIN_SHARED_PREF, false);
if(loggedIn){
Intent intent = new Intent(RegisterActivity.this, UserActivity.class);
startActivity(intent);
}
}
}
回答by Martin Zeitler
that file-system has no space:
该文件系统没有空间:
java.io.IOException: Requested internal only, but not enough space.
the issue is:
问题是:
android:installLocation="internalOnly"
either remove it, or replace it with:
要么删除它,要么替换为:
android:installLocation="preferExternal"
or make some space on the device / emulator by uninstalled or deleting something -
或通过卸载或删除某些内容在设备/模拟器上腾出一些空间 -
or simply assign some more megabytes to the virtual SD card.
或者只是为虚拟 SD 卡分配更多兆字节。
回答by instanceof
In Android Studio, open the AVD Manager and edit the problematic emulator. Inside the edit screen, you might need to click on 'Show Advanced Settings'. Scroll down and increase internal memory and SD card memory. After I did this I could install my app again.
在 Android Studio 中,打开 AVD 管理器并编辑有问题的模拟器。在编辑屏幕内,您可能需要单击“显示高级设置”。向下滚动并增加内存和 SD 卡内存。完成此操作后,我可以再次安装我的应用程序。
回答by Vishwanath Pandey
If you are using phone this error comes due to less storage. Make some space and try again it should work.
如果您使用的是手机,则此错误是由于存储空间较少造成的。腾出一些空间,然后再试一次,它应该可以工作。
回答by Patrick Prakash
The problem is with your storage space on your device which it is running. Try Installing Clearing the space or install it on an emulator.
问题在于您正在运行的设备上的存储空间。尝试安装 清除空间或将其安装在模拟器上。