smali 코드 분석
java :
public void payFailed(Map paramMap, int paramInt)
{
Log.d("cocos2d-x debug info", "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex]);
Log.d("cocos2d-x debug info", "FaildCode == " + paramInt);
GameJni.OderFinish(this.this$0.curPayIndex, 0);
IAPListener.iapHandler.sendMessage(Message.obtain(IAPListener.iapHandler, 10005, IAPListener.DX_PAYCODES[this.this$0.curPayIndex]));
}
대응하는 smali 문:
.method public payFailed(Ljava/util/Map;I)V
.locals 5
.param p1, "params" # Ljava/util/Map;
.param p2, "arg1" # I
.prologue
.line 208
const-string v0, "cocos2d-x debug info"
#1.new instance
new-instance v1, Ljava/lang/StringBuilder;
#2
invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
# log.d
const-string v2, "Failed DX_payCode2 == "
#3. append
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
# DX_PAYCODES
sget-object v2, Lcom/payCom/org/IAPListener;->DX_PAYCODES:[Ljava/lang/String;
iget-object v3, p0, Lcom/payCom/org/IAPListener$1;->this$0:Lcom/payCom/org/IAPListener;
iget v3, v3, Lcom/payCom/org/IAPListener;->curPayIndex:I
# v2 v3 v2
aget-object v2, v2, v3
# v1.append(v2), 20/73
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
# invoke v1,
# v1
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 209
const-string v0, "cocos2d-x debug info"
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
const-string v2, "FaildCode == "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 210
iget-object v0, p0, Lcom/payCom/org/IAPListener$1;->this$0:Lcom/payCom/org/IAPListener;
iget v0, v0, Lcom/payCom/org/IAPListener;->curPayIndex:I
const/4 v1, 0x0
invoke-static {v0, v1}, Lcom/payCom/org/GameJni;->OderFinish(II)V
.line 211
sget-object v0, Lcom/payCom/org/IAPListener;->iapHandler:Lcom/payCom/org/IAPHandler;
sget-object v1, Lcom/payCom/org/IAPListener;->iapHandler:Lcom/payCom/org/IAPHandler;
const/16 v2, 0x2715
sget-object v3, Lcom/payCom/org/IAPListener;->DX_PAYCODES:[Ljava/lang/String;
iget-object v4, p0, Lcom/payCom/org/IAPListener$1;->this$0:Lcom/payCom/org/IAPListener;
iget v4, v4, Lcom/payCom/org/IAPListener;->curPayIndex:I
aget-object v3, v3, v4
invoke-static {v1, v2, v3}, Landroid/os/Message;->obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/payCom/org/IAPHandler;->sendMessage(Landroid/os/Message;)Z
.line 212
return-void
.end method
.method public payFailed(Ljava/util/Map;I)V
:.method
은 이것이 방법이라는 것을 나타낸다. payFailed
은 방법 이름이고 (Ljava/util/Map;I)
은 함수 안의 형참인 v
을 반환값으로 하고 반환값은 비어 있다. 여기 .locals 5
은 국부 변수 레지스터 .param p1, "params"
을 정의한다. 성명 매개 변수params는 p명칭방식 .param p2, "arg1"
성명 매개 변수arg1 .prologue
은 함수 시작 .end method
은 함수 끝을 나타낸다.const-string v0, "cocos2d-x debug info"
은 문자열의 상수 변수 "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex]
을 정의했다. 이것은 "Failed DX_payCode2 == "
이 문자열이 다른 문자열과 합쳐져 긴 문자열이 되었다는 것을 나타낸다."Failed DX payCode2 =="은(는) 개체를 ""저장""해야 하므로 개체를 먼저 new(인스턴스)"그리고 구조 함수를 호출한다.new-instance v1, Ljava/lang/StringBuilder:
new 실례를 하나 제시하기;invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
: 구조 호출;const-string v2, "Failed DX_payCode2 == "
의 문자열을 정의하여 "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex]
을 준비합니다.invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder
: append라는 함수를 호출하여 "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex]
을 실시한다.move-result-object v1
에서 방금 얻은 값을 v1에 넣기;sget-object v2, Lcom/payCom/org/IAPListener;->DX_PAYCODES:[Ljava/lang/String;
Lcom/payCom/org/IAPlistener 클래스의 대상 DX 획득PAYCODES iget-object v3, p0, Lcom/payCom/org/IAPListener$1;->this$0:Lcom/payCom/org/IAPListener;
호출(수령) 대상은 사실this$0(내부 클래스)(즉 .this$0
) iget v3, v3, Lcom/payCom/org/IAPListener;->curPayIndex:I
인덱스(정형)를 찍는 것이다.aget-object v2, v2, v3
수조 v2(두 번째 v2)의 세 번째 요소 v2(첫 번째 v2) 가져오기invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
호출 허위 방법 v1.append(v2), 주의, 여기 v1에 이미 "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex]
이 있습니다. 여기에 append`` 함수를 호출하면 v2를 추가하고 싶습니다.move-result-object v1
에서 얻은 값을 v1에 넣기;invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
에서 허함수를 호출하여 마지막 문자열을 얻기;move-result-object v1
의 작용이 같다.invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
은 정적 방법을 호출하는데 v0은 함수 내의 국부 변수 const-string v0, "cocos2d-x debug info"
을 가리킨다. 마지막으로 이 함수는 Log.d("cocos2d-x debug info", "Failed DX_payCode2 == " + IAPListener.DX_PAYCODES[this.this$0.curPayIndex])
에 해당한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.