Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

signed APK: Failure [INSTALL_FAILED_DEXOPT].. Updated

the "app-release.apk" generated ... is not working on my devise, but the "app-debug.apk" is working perfectly,

Update:

after going to the previous version of my App:

in my MainActivity i have this strings:

public class MainActivity extends ActionBarActivity {

 @Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     final String PREFS_NAME = "MyPrefsFile";

     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

     if (settings.getBoolean("my_first_time", true)) {
         //the app is being launched for first time, do something

         TeamModel pm;
         DBHelper db;

         String teamNames1= "Los Angeles Lakers";
         String teamOpponent1= "Golden State Warriors";
         String teamDate1= "2015-03-16 22:30";

         String teamNames2= "Atlanta Hawks";
         String teamOpponent2= "Sacramento Kings";
         String teamDate2= "2015-03-16 20:00";

         .
         .

         String teamNames348= "Charlotte Hornets";
         String teamOpponent348= "Utah Jazz";
         String teamDate348= "2015-03-16 21:00";


         db = new DBHelper(getApplicationContext());
         db.getWritableDatabase();
         pm = new TeamModel();



         pm.teamname=       teamNames1;
         pm.teamopponent=teamOpponent1;
         pm.teamdate=        teamDate1;

         db.addTeam(pm);

         pm.teamname=       teamNames2;
         pm.teamopponent=teamOpponent2;
         pm.teamdate=        teamDate2;

         db.addTeam(pm);
         .
         .
         pm.teamname=       teamNames348;
         pm.teamopponent=teamOpponent328;
         pm.teamdate=        teamDate348;

         db.addTeam(pm);

         Log.d("Comments", "First time");
         settings.edit().putBoolean("my_first_time", false).commit();

After deleting Strings 1 to 107 (teamNames, teamOpponent, teamdate) from this Activity the App worked fine on my device

to explain more my MainActivity became:

public class MainActivity extends ActionBarActivity {

 @Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     final String PREFS_NAME = "MyPrefsFile";

     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

     if (settings.getBoolean("my_first_time", true)) {
         //the app is being launched for first time, do something

         TeamModel pm;
         DBHelper db;

         String teamNames107= "Los Angeles Lakers"; !!!
         String teamOpponent107= "Golden State Warriors"; !!!
         String teamDate107= "2015-03-16 22:30"; !!!

         String teamNames108= "Atlanta Hawks";
         String teamOpponent108= "Sacramento Kings";
         String teamDate108= "2015-03-16 20:00";

         .
         .

         String teamNames348= "Charlotte Hornets";
         String teamOpponent348= "Utah Jazz";
         String teamDate348= "2015-03-16 21:00";


         db = new DBHelper(getApplicationContext());
         db.getWritableDatabase();
         pm = new TeamModel();



         pm.teamname=       teamNames107;
         pm.teamopponent=teamOpponent107;
         pm.teamdate=        teamDate107;

         db.addTeam(pm);

         pm.teamname=       teamNames108;
         pm.teamopponent=teamOpponent108;
         pm.teamdate=        teamDate108;

         db.addTeam(pm);
         .
         .
         pm.teamname=       teamNames348;
         pm.teamopponent=teamOpponent328;
         pm.teamdate=        teamDate348;

         db.addTeam(pm);

         Log.d("Comments", "First time");
         settings.edit().putBoolean("my_first_time", false).commit();

what's wrong? how can i fix this without deleting Strings?

My error log when i try to install app-release.apk on my device by terminal:

Failure [INSTALL_FAILED_DEXOPT]  

When i try to install on the devise on 'build variant: release' i got this:

enter image description here

Installation failed since the device possibly has stale dexed jars that don't match the current version (dexopt error). In order to proceed, you have to uninstall the existing application. WARNING: Uninstalling will remove the application data! Do you want to uninstall the existing application?

on OK or cancel i got:

Failure [INSTALL_FAILED_DEXOPT]

NB: on Emulator everything is fine

like image 422
Mounir Elfassi Avatar asked Mar 12 '15 22:03

Mounir Elfassi


People also ask

What is APK and signed APK?

A Keystore is basically a binary file that contains a set of private keys. Every App that we install using the Google Play App Store needs to be signed with a Keystore. The signed apk is simply the unsigned apk that has been signed via the JDK jarsigner tool.


2 Answers

If you are using Emulator then close the emulator. Run AVD Manager and Wipe data of the emulator clicking on edit button. In android studio you can easily wipe you emulator by right clicking on the emulator. enter image description here

If it is in your real device. Then go to Settings>>Applications>> Then search your app and do 2 things.

  1. Clear data
  2. Uninstall

enter image description here

Now run you application. It should work.

like image 74
Mohammad Arman Avatar answered Sep 30 '22 13:09

Mohammad Arman


You have to add this plugin in the top of build.gradle

apply plugin: 'com.android.application'

As first if you want to sign your application by your key you should add this key in build types as is shown below:

buildTypes {
    release {
        signingConfig android.signingConfigs.config

    }
}

As the second you use empty productFlavors you don't need it please remove it.

When you do this call assembleRelease task form console by method:

./gradlew task assembleRelease

You will have apk file in {your_project}/{your_module[propadbly apk]}/build/outputs/apk/

And as last you make sure that you use proper key. Your logs says:

Failed to read key bbalarmkey from store "/Users/XXXXXXX/key.jks": Keystore was tampered with, or password was incorrect

this mean that the key doesn't exist or you make some wrong in your config

like image 34
Konrad Krakowiak Avatar answered Sep 30 '22 12:09

Konrad Krakowiak