2015-06-02 4 views
1

Я написал приложение и установить его на свой телефон через USB режим отладки, все работает гладко, но когда я произвожу подписанную APK и установить его на свой телефон, два вопроса происходит:Android Studio генерировать APK вопрос

  1. установить сбой и записать «тот же пакет». Поэтому я удалил «приложения через usb» и переустановил: проблема исправлена. НО! имя пакета должно быть таким же, как и приложения через приложение usb, и должно быть возможно установить «обновления», а не устанавливать сбой?

  2. после установки apk и запуска приложения, он разбился где-то там, где он не разбился с приложением, установленным «через-usb», и не только с одной ошибкой, но с множеством!

Может ли кто-нибудь сказать мне, что мне делать? Раньше я использовал Eclipse, и этот проект Android Studio создан из других, которые требуют от меня реализации, поэтому я начинаю использовать Android Studio. И, конечно, я создаю для себя новый ключ.

[обновление]

Я просто установить ключ разблокировки как отладочный ключ, то генерировать APK (отладки) работать гладко, как и USB-один, но я обнаружил, что APK (выпуск) может установить, но по-прежнему происходит предыдущий, существует ли какая-либо разница между debug и release apk рядом с ключом?

первый журнал ошибок:

06-05 10:15:08.700 28362-28362/? E/WindowManager﹕ Activity com.ababab.ui.activity.LoginActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42901978 G.E..... R.....ID 0,0-1026,288} that was originally added here

ответ

0
  1. отладки сборки автоматически подписаны для Вас more info. Когда вы пытаетесь установить выпуск APK, он имеет тот же идентификатор приложения, но другой ключ подписи. Android не позволит вам обновить приложение до APK с помощью другого ключа в качестве меры безопасности.

  2. Сообщите об ошибках в logcat/console.

UPDATE

только установить ключ разблокировки как отладки ключа

Я не уверен, почему это не работает.

Если вы хотите иметь возможность легко установить обе версии, я бы порекомендовал с использованием другого идентификатора приложения для сборки отладки.

debug { 
    applicationIdSuffix ".debug" 
    ... 
} 

Это позволит вам установить обе версии бок о бок (потребуется несколько дополнительных шагов, если вы определили контент-провайдеров)

теперь и версия будет иметь то же имя в вашей пусковой установки. Это можно зафиксировать, определяя строковые строки.

// app/src/main/res/values/strings.xml 
<string name="app_name">MyApp</string> 


// app/src/debug/res/values/strings.xml 
<string name="app_name">MyApp.DEBUG</string> 

И, наконец, используя это значение в AndroidManifest, чтобы установить имя пусковой установки.

<application 
    android:label="@string/app_name" 
    .... 

UPDATE 2 Недавно я обнаружил, что есть лучший способ определения имени приложения для различных версий сборки. Вместо отдельного файла string.xml вы определяете строку app_name в своем файле gradle.

release { 
    resValue "string", "app_name", "MyApp" 
} 

debug { 
    applicationIdSuffix ".debug" 
    resValue "string", "app_name", "MyApp.Debug" 
} 
+0

Я только что установил ключ освобождения в качестве отладочного ключа, тогда сгенерируйте apk (debug), работайте гладко, как и usb, но я обнаружил, что apk (release) может установить, но все еще встречается в предыдущем , существует ли какая-либо разница между отладкой и выпуском apk рядом с ключом? – Kennett

0

Задача 1): имя пакета является то же самое. Подпись отличается (приложение, установленное через usb из Android Studio, вероятно, является версией отладки, подписанной с вашим ключом отладки).

Удаление отладочной версии до установки версии выпуска - это способ решить проблему.

Задача 2): разместите свой логарифм с первыми ошибками.

Есть ли какие-либо отличия между отладкой и выпуском apk рядом с подписью?

Это зависит от раздела buildTypes в вашем build.gradle. Но по умолчанию сборка отладки отлаживается, а релиз - нет. Другая общая разница в том, что ProGuard работает только для создания сборки выпуска (но это зависит от вашего build.gradle, без него мы можем только сделать предложения)

+0

Я просто установить ключ разблокировки как отладочный ключ, то генерировать APK (отладки) работает плавной так же, как USB один, но я обнаружил, что APK (выпуск) может установить, но все еще имеет место предыдущая, есть ли какие-либо различия между debug и release apk рядом с ключом? – Kennett

+0

@ Kennet see my edit – ben75