我收到消息
> Installation failed with message Failed to establish session.
因此,在对问题做出一些反应之后,我禁用了Instant Run,并且开始获取
> Installation failed with message Error: android.os.ParcelableException: java.io.IOException: Requested internal only, but not enough space.
我尝试过重建,清理项目,禁用和启用Instant Run以及构建APK,但没有任何方法可以解决问题。
这是我的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'
}
这是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
}
这是在我修改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);
}
}
}
答案 0 :(得分:3)
如果您正在使用手机,则会由于存储空间不足而出现此错误。 腾出一些空间,然后再试一次。
答案 1 :(得分:1)
问题在于正在运行的设备上的存储空间。尝试安装清除空间或将其安装在模拟器上。
答案 2 :(得分:1)
这只是虚拟设备空间不足。每次运行应用程序时,虚拟设备上的每次安装都会占用一些空间。随着时间的推移,空间会填满,直到全部用完。您可以按照一些答案的建议增加空间 - 最初会起作用,但最终该空间也会用完。
从虚拟设备的“设置”应用中,您可以查看剩余空间。在这里你可以看到几乎一整 GB 都用完了,但应用本身只使用了 132MB,显然有些不对劲。
转到 AVD 管理器,在您设备的操作中有“擦除数据”选项 - 这样做。
返回“设置”应用,您现在可以看到空间已释放,并且您的应用有空间可以安装 - 直到下次空间用完时,您只需重复此过程即可。
答案 3 :(得分:0)
该文件系统没有空间:
java.io.IOException: Requested internal only, but not enough space.
问题是:
android:installLocation="internalOnly"
将其删除,或替换为:
android:installLocation="preferExternal"
或者甚至通过卸载或删除某些内容在设备/仿真器上留出空间。
答案 4 :(得分:0)
我将AVD Manager的SD卡更改为1000MB,它可以正常工作
答案 5 :(得分:0)
在Android Studio中,打开AVD管理器并编辑有问题的模拟器。在编辑屏幕中,您可能需要单击“显示高级设置”。向下滚动并增加内部存储器和SD卡存储器。完成此操作后,我可以再次安装我的应用程序。
答案 6 :(得分:0)
将此行放在app/build.gradle
内:
defaultConfig {
...
android:installLocation="auto"
....
}
答案 7 :(得分:0)
我卸载了所有运行的应用程序,并将其安装在虚拟设备上,错误消失了。
答案 8 :(得分:0)
您的应用正在尝试安装在虚拟设备的内部空间上,并且空间不足。如果您运行仿真器,请转到config / storage,您会发现没有空间。
有时候,模拟器是使用800Mb的内部空间创建的,而Android Oreo(例如)占用了所有空间,因此无法安装任何东西。
此外,即使将应用程序配置为“首选外部”,该应用程序仍会尝试在内部存储上进行安装,因此您无法解决该问题。
对我而言唯一有效的解决方案是增加模拟器的内部空间,您可以通过选择以下选项之一来实现:
A)转到Android SDK-> ADV Manager,找到您的模拟器,编辑首选项并增加空间,复制它或您想要的内容。
B)转到具有仿真器配置的文件夹(在Windows C:/Users/your_user/.android/avd/your_emulator中)并编辑* .ini文件,您可以看到与空间,内存,等等,只需增加该值并保存。
Visual Studio 2017与Android SDK / ADV Manager进行了出色的集成,因此您需要100%手动进行此操作,此外,在发生错误时您不会收到任何信息或说明,因此修复它确实很烦人: (对于99%的Xamarin问题,情况总是一样!