[Android Studio] .jar ファイルをインポートする
Android Studio で外部ライブラリ(.jar)をインポートするのに手間取ったのでメモします。インポートしたのは、Asynchronous Http Client という非同期通信を行えるライブラリ。
動作環境:Android Studio (I/O Preview) AI-130.687321
.jar ファイルをインポートする方法
1. libs に .jar ファイルを置く
プロジェクトファイル(プロジェクト名+Project)/プロジェクト名/libs/ に、外部ライブラリを置く。置くと自動的に、Android Studio のプロジェクトから見れるようになる。
2. build.gradle に記述する
build.gradle に、先ほど追加したライブラリへのパスを記述する。build.gradle は、プロジェクトの作成時に 2 つ生成されるが、プロジェクトファイル(プロジェクト名+Project)/プロジェクト名/build.gradle を編集する。
dependencies に compile files(‘libs/android-async-http-1.4.3.jar’) を記述した。
dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/android-async-http-1.4.3.jar')
}
3. クリーンビルドする
このままでは、ライブラリを見つけてくれないようなので、クリーンビルドを行う。「Sync Project with Gradle Files」と表示されるアイコンをクリックする。ウィンドウが表示されて、処理が走る。
4. ライブラリを使用する
後は、ライブラリをインポートして、処理を書いていく。
package com.example.sampleapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import com.loopj.android.http.*;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://rakuishi.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
このライブラリの問題だが、何故か Android Studio では onSuccess が呼ばれないようだ。他にオーバーライドできる onStart, onFinish は呼ばれるのに。何故だろう。
参考:Request not callback onSuccess() handler · Issue #86 · loopj/android-async-http · GitHub
追記:AndroidManifest.xml にインターネットの使用許可を出せば、OK でした。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>