2015/10/21

[android]Android Studio1.5βでADTをインポートして疲れた

あきらめて、AndroidでBLEアプリを作り始めよう。

ネットで検索したが、さすがスマホとあって、nRF51822とは比にならないくらいたくさん出てきた。
ここまで出てくると、一から作ろうという気がなくなってきますな。。
あと、iOSに比べると今ひとつらしいことがどの記事からもうかがえる。
みんなそう言っているので、そうなんだろうね。
iOSはやるつもりがないので、使うときになって考えよう。

 

Android5.0〜でBLEを使う(Central編) - vaguely

こちらの下の方に、Bluetooth Developerにもサンプルコードがあるとのこと。
せっかくなので、そちらを試してみよう。

Bluetooth Smart Developers | Bluetooth Development Portal

フォームに入力すると、ダウンロード先のメールが送られてきた。
今日(2015年10月)ではApplication_Accelerator_v1.0.1.zipだった。

image

今回はPDFを読まず、Androidを見る。
中はADTでできているので、Android Studioにインポートした。
android-18がないと怒られた。
いまさらインストールしたくないので、変更。
タイピングなどのメモ:Android StudioでAPIレベルを変更する - livedoor Blog(ブログ)
何も考えずに、API23にしておく。Nexus7で使いたくなったら、下げよう。

今度は「Gradle DSL method not found: 'android()'」と出てきた。
Solving the “gradle DSL method not found: android()” issue in Android Studio — Medium
なんかわからんけどbuild.gradleにandroidという関数ができるから、消せばよいよ、と。
確かに、あった。
消すと・・・またandroid-18がないと怒られた。
え-、これがだめなのー。

ではどうしたらよいのか・・・。
さっきはFlavorsタブで設定したので、違うところで試す。
PropertiesのCompile Sdk VersionをAPI23にする・・・またbuild.gradleにandroidができた。

image

Errorの括弧に書いてある数字は、build.gradleの行数なのだね。
それはともかく、設定を書くと、build.gradleファイルが更新されるようだ。
そして、Androidに関するものはandroidの中に書かれるのだろう。

めんどうなのでAPI18をインストールしたくなるが、時間があるので我慢だ。
もう一度エラーを見ると、リンクしてそうなのがあるではないか。
Open Gradle wrapper fileをクリックすると、ファイルが開かれた。

#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

こんなの見せられてもねぇ。
AndroidStudioでプロジェクトインポートしたときのsyncエラー - Qiita
こちらは、gradle-wrapper.propertiesが変だったというお話だ。
む、では前回ウィザード経由で作ったときのファイルを見てみよう。

#Mon Oct 19 10:07:13 JST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

むむ、これか?ということで置き換えた。
が、まだエラーが出る。
出ているメッセージは同じなのだが、さっきはwrapperファイルへのリンクだったが、今度はGradle settingsへのリンクになった。

image

そのパスにファイルはあるんだけど・・・。
OKすると、Project JDKのnot specifiedだとか。
クリックすると、Project Structureのダイアログが出てきて、Project Settings>Projectが表示された。
たしかに、Project SDKが<No SDK>になってる。
これをAPI23にして、Try Againすると・・・またDSL android()が見つからないになった。
きー!

Import an Android project to Android Studio
build.gradleに、プラグインの設定を追加したらよかった、とのこと。
あ、確かにない。
ウィザードで作ったものは、ファイルの先頭に「apply plugin: 'com.android.application'」だったので、コピー。
おお、エラーが変わった。

今度は、buildToolsVersionが指定されていない、と。
リンクは出ていないが、慣れてきたので、File>Project Structureを選択。
やはり、あった。Propertiesタブだ。一番新しそうな22.0.1を選択。
OKすると・・・また「android-18」・・・。

 

腹が立ってきたので、プロジェクトのトップとsrcにあるbuild.gradleを、それぞれウィザードで作成したときのbuild.gradleとファイルごと置き換えた。
あれ・・・build.gradleって2つあるの??

 

もう一度、インポートからやり直そう。
まず、gradle/wrapper/gradle-wrapper.propertiesを編集。

次に、app/build.gradleを編集。
build.gradleはプロジェクトのトップとappの中にあり、android-18うんぬんは appにあるbuild.gradleなのだ。

image

ウィザードで作ったものとの差分はこんな感じ。

image

「android-18が無いからSDKをインストールせよ」じゃなくて、こっちのbuild.gradleへのリンクも示してほしかったな・・・。

これだけで、syncが成功した。
やれやれ・・・。


今回得たAndroid Studio対策は、

ウィザードで新規アプリを作り、その設定をまねせよ

でした。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。