【问题标题】:signed APK: Failure [INSTALL_FAILED_DEXOPT].. Updated已签名的 APK:失败 [INSTALL_FAILED_DEXOPT].. 已更新
【发布时间】:2015-05-15 07:42:57
【问题描述】:

生成的“app-release.apk”...在我的设计中不起作用,但“app-debug.apk”运行良好,

更新:

转到我的应用程序的上一版本后:

在我的MainActivity 我有这个字符串:

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();

从此活动中删除字符串 1 到 107(teamNames、teamOpponent、teamdate)后,应用程序在我的设备上运行良好

为了解释更多我的MainActivity变成了:

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();

怎么了?如何在不删除字符串的情况下解决此问题?

当我尝试通过终端在我的设备上安装 app-release.apk 时出现的错误日志:

Failure [INSTALL_FAILED_DEXOPT]  

当我尝试在“构建变体:发布”的设计上安装时,我得到了这个:

安装失败,因为设备可能包含与当前版本不匹配的陈旧 dexed jar(dexopt 错误)。为了继续,您必须卸载现有的应用程序。 警告:卸载将删除应用程序数据! 是否要卸载现有应用程序?

确定或取消我得到了:

Failure [INSTALL_FAILED_DEXOPT]

注意:在模拟器上一切正常

【问题讨论】:

  • 为什么要用空的productFlavors?
  • 你的 buildTypes{ } 是空的吗?
  • 我的意思是 productFlavors{} 你的闭包是空的。为什么?
  • @konrad-krakowiak 我应该在其中添加什么?
  • @mohit-singh 是的空

标签: android android-studio gradle apk


【解决方案1】:

如果您使用的是模拟器,请关闭模拟器。运行 AVD Manager 并点击编辑按钮擦除模拟器的数据。 在 android studio 中,您可以通过右键单击模拟器轻松擦除模拟器。

如果它在您的真实设备中。然后转到设置>>应用程序>> 然后搜索您的应用并做 2 件事。

  1. 清除数据
  2. 卸载

现在运行您的应用程序。它应该可以工作。

【讨论】:

  • 还是问题,我什至对我的手机进行了硬重置,也就是格式化缓存/数据
【解决方案2】:

你必须在build.gradle顶部添加这个插件

apply plugin: 'com.android.application'

首先,如果您想通过密钥对应用程序进行签名,您应该在构建类型中添加此密钥,如下所示:

buildTypes {
    release {
        signingConfig android.signingConfigs.config

    }
}

第二个你使用空的productFlavors,你不需要它,请删除它。

当你通过方法调用assembleRelease task表单控制台时:

./gradlew task assembleRelease

您将在{your_project}/{your_module[propadbly apk]}/build/outputs/apk/ 中拥有apk 文件

最后,您要确保使用正确的密钥。你的日志说:

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

这意味着密钥不存在,或者您在配置中犯了一些错误

【讨论】:

  • 我有'BUILD FAILED'
  • @MounirElfassi 这是你的完整构建 gradle 吗?
  • 尝试添加新的 productFlavors{} 它可以用新的 applicationId 来生产你知道怎么做吗?如果不通知我,我会告诉你
【解决方案3】:

在 build.gradle 中 更改编译并构建到最新版本。它对我有用。

=================

android {
    compileSdkVersion 22
    buildToolsVersion "22"

【讨论】:

    【解决方案4】:

    尝试使用adb 卸载您的应用。像这样:adb uninstall <package_name>。你用其他手机试过吗?

    【讨论】:

    • 还是问题,我什至对我的手机进行了硬重置,也就是格式化缓存/数据
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2021-03-30
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多