我有一个要添加日志的smali代码。由于我不懂smali,因此需要您的帮助。
原始的Java代码是:
static HttpURLConnection createHttpURLConnection(String linkURL) {
try {
HttpURLConnection urlConnection = (HttpURLConnection) new URL(linkURL).openConnection();
urlConnection.setRequestProperty("Accept-Encoding", HTTP.IDENTITY_CODING);
urlConnection.setDoInput(true);
return urlConnection;
} catch (Exception e) {
Log.e("URLConnection exception", e.toString());
return null;
}
}
我得到的smali代码如下:
.method static createHttpURLConnection(Ljava/lang/String;)Ljava/net/HttpURLConnection;
.locals 5
.param p0, "linkURL" # Ljava/lang/String;
.prologue
.line 64
:try_start_0
new-instance v1, Ljava/net/URL;
invoke-direct {v1, p0}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
.line 65
.local v1, "url":Ljava/net/URL;
invoke-virtual {v1}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v2
check-cast v2, Ljava/net/HttpURLConnection;
.line 67
.local v2, "urlConnection":Ljava/net/HttpURLConnection;
const-string/jumbo v3, "Accept-Encoding"
const-string/jumbo v4, "identity"
invoke-virtual {v2, v3, v4}, Ljava/net/HttpURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 68
const/4 v3, 0x1
invoke-virtual {v2, v3}, Ljava/net/HttpURLConnection;->setDoInput(Z)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
.line 74
.end local v1 # "url":Ljava/net/URL;
.end local v2 # "urlConnection":Ljava/net/HttpURLConnection;
:goto_0
return-object v2
.line 69
:catch_0
move-exception v0
.line 70
.local v0, "e":Ljava/lang/Exception;
const-string/jumbo v3, "URLConnection exception"
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 71
const/4 v2, 0x0
goto :goto_0
.end method
我要添加此行(以Java显示):
Log.e("creating new connection to", linkURL);
作为函数的第一行,位于try
在smali代码中看起来如何?
谢谢!
答案 0 :(得分:1)
这是在尝试块的第一行中添加了日志的smali代码。您也可以使用java2smali在线工具将Java代码转换为smali。
.method static createHttpURLConnection(Ljava/lang/String;)Ljava/net/HttpURLConnection;
.locals 5
.param p0, "linkURL" # Ljava/lang/String;
.prologue
.line 64
:try_start_0
const-string v0, "creating new connection to"
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
new-instance v1, Ljava/net/URL;
invoke-direct {v1, p0}, Ljava/net/URL;-><init>(Ljava/lang/String;)V
.line 65
.local v1, "url":Ljava/net/URL;
invoke-virtual {v1}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection;
move-result-object v2
check-cast v2, Ljava/net/HttpURLConnection;
.line 67
.local v2, "urlConnection":Ljava/net/HttpURLConnection;
const-string/jumbo v3, "Accept-Encoding"
const-string/jumbo v4, "identity"
invoke-virtual {v2, v3, v4}, Ljava/net/HttpURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
.line 68
const/4 v3, 0x1
invoke-virtual {v2, v3}, Ljava/net/HttpURLConnection;->setDoInput(Z)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
.line 74
.end local v1 # "url":Ljava/net/URL;
.end local v2 # "urlConnection":Ljava/net/HttpURLConnection;
:goto_0
return-object v2
.line 69
:catch_0
move-exception v0
.line 70
.local v0, "e":Ljava/lang/Exception;
const-string/jumbo v3, "URLConnection exception"
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 71
const/4 v2, 0x0
goto :goto_0
.end method