Android Studioで古いプロジェクトを動かす際の注意点

#はじめに

Androidで古いプロジェクトをGitHubから落としたときにエラーが出まくったため覚書として残しておきます。

#環境・前提条件

移そうとしたプロジェクトは下記のプロジェクトです。これをインストールしたばかりのAndroidStudioで開いたところから始まります。
https://github.com/tdicola/BTLETest

Android Studioのバージョン0.53から3.4.1へのコンバートのようです。

#移行作業
##SDKの設定
APP>java>MainActivityｔ開いて中のソースを見るとエラーたっぷり。
まず、Android SDKの設定が抜けているようです。
![SDK設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/78cef897-8a49-d88f-8c5f-03ce46dff4f4.png)
上記Setup SDKを選択してSDKを選択。
![SDK選択.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/6092a4d6-ec26-e93d-83d1-6abc7966ddc7.png)
開発したいアンドロイドのバージョンを選んで選択しましょう。今回は自分の端末(Android8.0)で使いたいので、Android API 25(Android 7.1.1に対応)を選びます。

それでもまだMainActivityでエラーを吐いている。プロジェクト自体に対応するAndroidのバージョンが設定されていないようだ。
![API選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/c6a1e23a-3b7f-af59-856f-fcfb9f4e758a.png)

Fileメニュー>Project Structureを選択。
Modulesを選択肢、Default Configをクリックすると対象とするAPIレベルを選択できる。
先程と同様に、Target SDK VersionとMin SDK Versionを25に設定。
![Project SDK選択.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/223e6789-656f-05ee-db1a-8a98ba0c766c.png)

でもまだエラーが起こる。この設定だけではダメそうなので、続いてエラーを吐いているgradleの設定を確認する。

##Gradleの設定
軽く調べた感じだと、プロジェクトとアプリのビルド設定(build.gradle)が古いようだ。
エラーで検索したところ、[古いバージョンでの移行時の記事](http://tsmsogn.hateblo.jp/entry/2017/03/21/172036)を発見。
![ProjectのGradle.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/262e5eea-0d11-b90c-eb32-b22d814a7960.png)
上記画像のエラーを吐いている部分をAndroid Studioのバージョンに合わせれば良いようだ。
[Gradleのバージョンについての記事](https://qiita.com/izuki_y/items/3c20cd1c655fc4fc6127)をQiita上に発見。そこからリンクをたどり、2019/06/21時点でのバージョンを調べた。とりあえず、現時点のbuild.gradleおよびgradle-wrapper.propertiesは下記のようになるようだ。

「minifyEnabled」が重要。古いプロジェクトをインポートする際はこれに変更する必要があるようだ。
参考：https://stackoverflow.com/questions/27233800/android-studio-could-not-find-method-runproguard-for-arguments

```gradle:build.gradle(app)
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig {
        minSdkVersion 25
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}


```

```gradle:build.gradle(BTLETTest)
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
    }
}
```


```gradle:gradle-wrapper.properties
#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-5.1.1-all.zip
```

##動作確認
上記までの設定でビルドが通るようになり、SDKやらなんやらが古いとかで何度か必要なファイルをダウンロードし、Android Studioに勧められるまま結局SDKを28にアップロードして、コンパイルが通りました。

最終的にちゃんとビルドし、自分のAndroid上で動くことを確認しました。
![Screenshot_20190621-115412.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/bf65c5ac-42c7-9191-4e63-859d37fa0788.jpeg)