2016-11-15 146 views
0

我試圖將else狀態的代碼複製到if語句中。 在這裏我看到if-eqz作爲if條件,但我不知道其他條件在這裏。有人可以幫我找到其他條件,以便我可以將它複製成if代碼。將else語句複製到if語句

我也想知道哪裏是起點和else語句體

if-eqz v1, :cond_1 

.line 103 
:goto_1 
return-object v0 

.line 82 
:cond_0 
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; 

move-result-object v0 

invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; 

move-result-object v0 

.line 83 
new-instance v2, Ljava/lang/StringBuilder; 

invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V 

invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

const-string v2, "/Android/data/" 

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

sget-object v2, Lcom/lingren/game/MonoJavaHelper;->s_Application:Landroid/app/Application; 

invoke-virtual {v2}, Landroid/app/Application;->getPackageName()Ljava/lang/String; 

move-result-object v2 

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

const-string v2, "/files/Res/AssistObj/" 

invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v0 

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 

move-result-object v0 

.line 84 
const-string v2, "MonoJavaHelper" 

new-instance v3, Ljava/lang/StringBuilder; 

invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V 

const-string v4, "ExternalStorageState Not UseAble:" 

invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v3 

invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v1 

invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 

move-result-object v1 

invoke-static {v2, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I 

goto :goto_0 

.line 95 
:cond_1 
:try_start_1 
invoke-virtual {p0}, Landroid/app/Activity;->getApplicationContext()Landroid/content/Context; 

move-result-object v1 

invoke-virtual {v1}, Landroid/content/Context;->getFilesDir()Ljava/io/File; 

move-result-object v1 

invoke-virtual {v1}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; 

move-result-object v0 

.line 96 
new-instance v1, Ljava/lang/StringBuilder; 

invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V 

invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v1 

const-string v2, "/Res/AssistObj/" 

invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; 

move-result-object v1 

invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; 
:try_end_1 
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0 

move-result-object v0 

goto :goto_1 
+1

可能重複[如果修改其他人](http://stackoverflow.com/questions/40585903/smali-else-to-if-modification) – JesusFreke

+0

請不要發佈重複的問題。在這種情況下,您應該使用新信息編輯您的原始問題。 – JesusFreke

回答

0

你的例子似乎不完全結束。例如它有goto :goto_0但不包含:goto_0標籤。無論如何,下面的例子應該可以幫助你弄清楚如何處理你的案例。 Smali如下代碼:

if-nez v0, :cond_0 

const-string v2, "hello 1" 

:goto_0 
return-void 

:cond_0 
const-string v2, "hello 2" 
goto :goto_0 

對應的Java代碼,如:

if (i == 0) { 
    s = "hello 1"; 
} 
else { 
    s = "hello 2"; 
} 
return; 

goto語句和分支的確切位置取決於編譯器。此外,對於不同的情況,您可能會看到if-nezif-eqz或其他一些聲明。