2016-11-15 9 views
0

else 상태 코드를 if 문에 복사하려고합니다. 여기에 if 조건으로 if-eqz이 표시되어 있지만 else 조건이 여기에 있는지 모르겠습니다. 다른 사람이 내가 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 

에 해당합니다 자바 코드 등 :

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

goto 제표 및 지점의 정확한 위치는 컴파일러에 따라 달라집니다. 또한 조건에 따라 if-nez 또는 if-eqz 또는 기타 진술을 볼 수 있습니다.