Принудительное закрытие из-за отсутствия Android String Resource с использованием APKtool - но строка присутствует - PullRequest
1 голос
/ 18 января 2012

Надеюсь, вы можете помочь - я охотился повсюду и впал в отчаяние, так как мои рейтинги Android Market сильно пострадали от этого.Здесь идет - спасибо заранее.

Я использовал APKtool, чтобы декомпилировать тему для GOContacts.Отредактировал все необходимые файлы и перекомпилировал.После загрузки на рынок тема работает на большинстве устройств, но принудительно закрывается с этой ошибкой на других устройствах.

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jbapps.contact.theme.steampunk/com.jbapps.contact.theme.steampunk.GOContactsInstallDialog}: android.content.res.Resources$NotFoundException: String resource ID #0x7f040019
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f040019
at android.content.res.Resources.getText(Resources.java:221)
at android.content.Context.getText(Context.java:173)
at android.app.Dialog.setTitle(Dialog.java:475)
at com.jbapps.contact.theme.steampunk.GOContactsInstallDialog.onCreate(GOContactsInstallDialog.java:46)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more

Идентификатор строкового ресурса # 0x7f040019 указывает на имя строки

* 1007.*

Который присутствует во всех моих файлах res \ values ​​\ strings на всех доступных языках, как показано ниже:

\res\values-ko\strings.xml

<string name="dialog_title">다운로드 GO 연락처</string>

\res\values-ru\strings.xml



  <string name="dialog_title">Скачать GO Контакты</string>

\res\values-zh-rCN\strings.xml

\res\values-zh-rHK\strings.xml

\res\values-zh-rTW\strings.xml

<string name="dialog_title">下载 GO联系人</string>

Насколько я вижу, учитываются все строковые ресурсы.Другой файл, в котором упоминается строка, - это GOContactsInstallDialog.smali, который я выделил ниже.

    .class public Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;
.super Landroid/app/Activity;
.source "GOContactsInstallDialog.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;
    }
.end annotation


# instance fields
.field private mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;


# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 15
    invoke-direct {p0}, Landroid/app/Activity;-><init>()V

    return-void
.end method

.method private isExistSkin(Ljava/lang/String;)Z
    .locals 2
    .parameter "packageName"

    .prologue
    .line 78
    .line 79
    const/4 v1, 0x2

    .line 78
    :try_start_0
    invoke-virtual {p0, p1, v1}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context;
    :try_end_0
    .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_0} :catch_0

    .line 83
    const/4 v1, 0x1

    :goto_0
    return v1

    .line 80
    :catch_0
    move-exception v0

    .line 81
    .local v0, e:Landroid/content/pm/PackageManager$NameNotFoundException;
    const/4 v1, 0x0

    goto :goto_0
.end method


# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
    .locals 4
    .parameter "savedInstanceState"

    .prologue
    .line 34
    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

    .line 37
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->requestWindowFeature(I)Z

    .line 38
    const/high16 v0, 0x7f03

    invoke-virtual {p0, v0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->setContentView(I)V

    .line 40
    const-string v0, "com.jbapps.contactpro"

    invoke-direct {p0, v0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->isExistSkin(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_0

    .line 41
    invoke-virtual {p0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->finish()V

    .line 68
    :goto_0
    return-void

    .line 45
    :cond_0
    new-instance v0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    invoke-direct {v0, p0, p0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;-><init>(Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;Landroid/content/Context;)V

    iput-object v0, p0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    .line 46
    iget-object v0, p0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    const v1, 0x7f040019

    invoke-virtual {v0, v1}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;->setTitle(I)V

    .line 47
    iget-object v0, p0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    invoke-virtual {p0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->getResources()Landroid/content/res/Resources;

    move-result-object v1

    const v2, 0x7f04001a

    invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;->setMessage(Ljava/lang/CharSequence;)V

    .line 48
    iget-object v0, p0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    const/4 v1, -0x1

    invoke-virtual {p0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->getResources()Landroid/content/res/Resources;

    move-result-object v2

    **const v3, 0x7f040018**

    invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v2

    new-instance v3, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$1;

    invoke-direct {v3, p0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$1;-><init>(Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;)V

    invoke-virtual {v0, v1, v2, v3}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;->setButton(ILjava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V

    .line 67
    iget-object v0, p0, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog;->mDialog:Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;

    invoke-virtual {v0}, Lcom/jbapps/contact/theme/steampunk/GOContactsInstallDialog$CustomAlertDialog;->show()V

    goto :goto_0
.end method

.method protected onDestroy()V
    .locals 1

    .prologue
    .line 72
    invoke-super {p0}, Landroid/app/Activity;->onDestroy()V

    .line 73
    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result v0

    invoke-static {v0}, Landroid/os/Process;->killProcess(I)V

    .line 74
    return-void
.end method

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...