Логи:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: tat.example.ildar.seer, PID: 17683
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lokio/Buffer;
at okhttp3.ResponseBody.create(ResponseBody.java:208)
at okhttp3.internal.Util.<clinit>(Util.java:48)
at okhttp3.internal.Util.immutableList(Util.java:187)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:122)
at tat.example.ildar.seer.Main_Activity$Regphp.doInBackground(Main_Activity.java:243)
at tat.example.ildar.seer.Main_Activity$Regphp.doInBackground(Main_Activity.java:240)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: Didn't find class "okio.Buffer" on path: DexPathList[[
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-support-annotations-24.2.1_921263f425e80c99f3a405d276c705f3df584449-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_9-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_8-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_7-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_6-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_5-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_4-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_3-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_2-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_1-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-slice_0-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-okhttp-3.6.0_27506a713ba55ebb67789dc1f499cd6c909a78f4-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-internal_impl-24.2.1_e31882dafd2edb2910271ed3e857ee54d73cdcc6-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-internal_impl-24.2.1_d0da5686ba7c1ce3ea5c4220100e850658c94309-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-internal_impl-24.2.1_ad845bc93a84a324ba5f9eba1bfb6c7887bc86db-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-internal_impl-24.2.1_a09c4788066e9c6f2c59f5f4e39634ab15ce12ff-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-internal_impl-24.2.1_6f30e1ee9d9653acc66256d266351779c810a4df-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-com.google.android.gms-play-services-tasks-9.6.1_5f4a68b5294ff8c54e09f704b6a9d515d9e761b4-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-com.google.android.gms-play-services-maps-9.6.1_3280708189ffe5997521fbbf87bf80bbc49189a2-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-com.google.android.gms-play-services-basement-9.6.1_486175a14c2eff04778956c8bad8fbf498bf1903-classes.dex",
dex file "/data/data/tat.example.ildar.seer/files/instant-run/dex/slice-com.google.android.gms-play-services-base-9.6.1_78892452a35c73124774018df7422a21aad72209-classes.dex"
...
Код Regphp:
class Regphp extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
OkHttpClient clientReg = new OkHttpClient();
RequestBody formBodyReg = new FormBody.Builder()
.add("reg_id", numReg)
.add("prog_vers", progVers)
.build();
Request requestReg = new Request.Builder()
.url("http://***-***-**-***.***.***.regruhosting.ru/reg.php")
.post(formBodyReg)
.build();
try {
Response responseReg = clientReg.newCall(requestReg).execute();
if (!responseReg.isSuccessful())
throw new IOException("Unexpected code " + responseReg);
body = responseReg.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return body;
}
@Override
protected void onPostExecute(String strJsonReg) {
super.onPostExecute(strJsonReg);
try {
JSONArray ip_connect = new JSONArray(new JSONTokener(strJsonReg));
ip_adress = new String[ip_connect.length()];
for (int i = 0; i < ip_connect.length(); i++) {
JSONObject ip = ip_connect.getJSONObject(i);
ip_adress[i] = ip.getString("ip");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Как писал в прошлом вопросе, до этого все запускалось и работало, после релиза перестало работать и в дебаг и в релиз версии, может ли это быть связано с переименованием пакета? Хотя если бы дело было в это то на эмуляторе бы тоже не запускался.
240 строка это соответственно 1-ая по счету строка в отрезке кода.
Ip
адрес в url
закрыл звездочками на всякий случай. В программном коде там все норм.
Код build.gradle(Module: app):
apply plugin: 'com.android.application'
android {
signingConfigs {
}
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "tat.example.ildar.seer"
minSdkVersion 14
targetSdkVersion 24
versionCode 3
versionName "0.25"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.android.gms:play-services-maps:9.6.1'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.android.support:multidex:1.0.1'
testCompile 'junit:junit:4.12'
}
Это не является полным решением данной проблемы, но это альтернатива неправильному построению логики запроса.
public class NetworkManager{
private static NetworkManager instance;
private static OkHttpClient client;
public static NetworkManager open() {
if (instance == null){
synchronized (NetworkManager.class){
if (instance == null){
instance = new NetworkManager();
client = new OkHttpClient();
}
}
}
return instance;
}
private void callServerApi(Request request, Callback callback){
client.newCall(requestReg).enqueue(callback);
}
public void cancel(Object tag) {
for (Call call : client.dispatcher().queuedCalls()) {
if ((call.request().tag()).equals(tag)) call.cancel();
}
for (Call call : client.dispatcher().runningCalls()) {
if ((call.request().tag()).equals(tag)) call.cancel();
}
}
}
Вызов Api
:
RequestBody formBodyReg = new FormBody.Builder()
.add("reg_id", numReg)
.add("prog_vers", progVers)
.build();
Request requestReg = new Request.Builder()
.url("http://***-***-**-***.***.***.regruhosting.ru/reg.php")
.tag(/*принимает Object*/)/*опциональный параметр,
необходим для использования метода cancel*/
.post(formBodyReg)
.build();
Callback callback = new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!responseReg.isSuccessful()){
Log.e("callServerApi", "Unexpected code " + response);
return;
}
String strJsonReg = response.body().string();
try {
JSONArray ip_connect = new JSONArray(new JSONTokener(strJsonReg));
ip_adress = new String[ip_connect.length()];
for (int i = 0; i < ip_connect.length(); i++) {
JSONObject ip = ip_connect.getJSONObject(i);
ip_adress[i] = ip.getString("ip");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
NetworkManager.open().callServerApi(requestReg, callback);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Работаю в Intellij IDEA делаю desktop приложениеРеализую удаление компонента по кнопке delete через addKeyListener и метод keyPressed внутри метода алгоритм по удалению
Что делает метод notifyItemChange() у класса RecyclerViewAdapter?
Разобрал стандартные примеры с JTreeСобственно возник вопрос, возможно ли заменить элементы JTree на другой компонент, что бы при разворачивании,...