Я создаю приложение, и оно работает на эмуляторе. Он работает на debug apk на устройстве, но когда я его создаю с помощью сгенерированного подписанного приложения, он не работает? Что не так, и как я могу его отладить на устройстве на подписанном языке?Приложение для Android не работает после опубликования его, сгенерировав подписанное приложение
ответ
В моем проекте не запускается подписанное приложение. Я изменил значение minifyEnabled с true на false, тогда проблема решена. это плохое решение. Я ищу лучший способ.
build.gradle:
buildTypes {
release {
shrinkResources true
minifyEnabled false //true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
После отключения minifyEnabled он работает правильно, но мне это нужно в моем проекте –
Я нашел progard имеет проблемы с модифицированной interfce
Образец интерфейса:
import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
public interface AClient {
// For register device for specific package
@GET("/api/initiate/{packageId}")
Call<InitiateModel> GetInitiateInfo(
@Path("packageId") int packageId
);
}
добавить -dontwarn retrofit2 ** в progard файле.. Что не так?
Я нашел проблему и решил ее. Я должен держать модели в запутывании, которые используют модификацию. После использования ниже кода мое приложение корректно работает в minifyEnabled:
-keep com.xxx.xxx.models. ** {*; }
Для изменения свойств необходимо модифицировать свойства класса.
Спасибо, что каждое тело попытается мне помочь.
Вы используете ProGuard? Проверьте -dontwarns. –
Да, я использую ProGuard. Что такое -dontwarns? –
см. Эту страницу http://stackoverflow.com/questions/21123835/how-to-use-dontwarn-in-proguard –