0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Eclipse+ADT(build:Maven2)で作ったAndroidアプリをAndroid Studio(build:gradle)に移行した記録

Last updated at Posted at 2020-07-05

マシンスペック

  • Mac mini 2018
  • macOS Catalina(10.15.x)
  • Intel Core-i7 3.2GHz 6コア
  • メモリ 32GB
  • SSD 512GB

今までの開発環境

  • DELL XPS 13
  • Windows 10 Home
  • Intel Core-i7
  • メモリ 8GB
  • SSD 256GB
  • Eclipse 4.5(だったかな?)
  • ADT最新版

やること

  • 開発環境をEclipse+ADT → Android Studioへ移行
  • ビルド環境をMaven2 → gradleへ移行

何故やるか?

  • AdMobの広告ポリシー違反で広告を止められ、広告収入がゼロになった
  • 推定2年放置してたが、再審査の改修が必要なので、開発環境をMacに移行する
  • せっかくなので、モダンな開発環境にしたい

移行するアプリ

どんなアプリか?

  • バス接近情報をスクレイピングして、スマホで通知する
  • バス時刻表を表示する

環境を移行する

今までの開発環境

スクリーンショット 2020-06-15 3.15.43.png Windows環境はBootcampに作ってるけど、Bootcamp起動するの面倒なので、Bitbucketのスクショにて。

Eclipse+ADTをAndroid Studioでインポートする

ほほう、Eclipse+ADTインポートできるみたい!
スクリーンショット 2020-06-15 3.20.43.png

インポートしてみた。

スクリーンショット 2020-06-15 3.18.44.png

あれ?、、、ソースは!?

うーむ、、、無理か、、、手動で移行するしか術がないな。。。

Eclipse環境をAndroid Studioに手動で移行する

スクリーンショット 2020-06-15 3.32.13.png 何か、テンプレート沢山ある!? とりあえず「基本アクティビティ」で新規プロジェクトを作ってみる。 スクリーンショット 2020-06-15 3.30.26.png

ここに旧環境のソースを手動で移動してみる。

スクリーンショット 2020-07-04 18.48.58.png

コンパイルエラーは「Google Play Service」と「org.apache.http.〜」が無いから。
あと、「AndroidManifest.xml」で、幾つかエラー出てる。
それ以外は大丈夫そう。

コンパイルエラー修正

Google Play Serviceの導入

メニューの「ツール」→「SDK マネージャー」を開いて、「Google Play services」をインストール。
スクリーンショット 2020-07-04 19.09.02.png

build.gradle(app直下)に追加。

app/build.gradle
dependencies {
    implementation 'com.google.android.gms:play-services:+'
}

※参考
Google Play Services SDK のセットアップ(Android Studio)

org.apache.http対応

build.gradle(app直下)に追加。

app/build.gradle
android {
    ・・・
    useLibrary "org.apache.http.legacy"

    defaultConfig {

※参考
【Android Studio】「パッケージorg.apache.http.clientは存在しません」が発生した時の対処法

コンパイルエラーが消えた!
スクリーンショット 2020-07-04 19.30.34.png

AndroidManifest.xmlのエラー修正

ERROR: The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.

AndroidManifest.xmlのversionCode、versionName、minSdkVersion、targetSdkVersionは、build.gradle(app直下)へ移動する。

app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
		android:versionCode="24"
		android:versionName="1.2.7">

	<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17" />

targetSdkVersionを26以上にしろと怒られたので、28 に変更。

app/build.gradle
defaultConfig {
    minSdkVersion 9
    targetSdkVersion 28
    versionCode 24
    versionName "1.2.7"
}

※参考
僕たちはいつまでこんな楽しいAndroid Studio設定をし続けるのか? Android Studio 3.x時代の設定不足解消メモ

あと3箇所がエラーになってる。

<uses-permission android:name="android.permission.READ_LOGS" />
<application android:debuggable="false">
<activity android:screenOrientation="portrait">

android.permission.READ_LOGSのエラー

Permission is only granted to system apps

Android Studioの設定を変更。
スクリーンショット 2020-07-04 21.39.02.png

※参考
[Android]Permission is only granted to system apps

android:debuggable="false"のエラー

Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one

昔はandroid:debuggable="true"フラグをつけないとDebug実行ができませんでしたが、SDKのバージョンアップ(SDKr8, 2010.12)で自動的に付くようになったのでdebuggableフラグの指定は不要になりました。

との事なので、「android:debuggable="false"」を削除。

※参考
android:debuggableでデバッグログ切り替えはやめた方がいい

android:screenOrientation="portrait"のエラー

Expecting android:screenOrientation="unspecified" or "fullSensor" for this activity so user can use the application in any orientation and provide a great experience on Chrome OS devices

縦向き固定はダメらしい。
applicationタグに「tools:ignore="LockedOrientationActivity"」を追加したが警告は消えなかったので、デフォルトの「unspecified」を設定。

※参考
Expecting android:screenOrientation=“unspecified”...の対処法

build.gradleのエラー修正

build.gradle(app直下)でエラー

app/build.gradle
dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
}

build.gradle(プロジェクト直下)にGoogle Mavenリポジトリを追加。

build.gradle
buildscript {
    repositories {
        ・・・
        maven {
            url 'https://maven.google.com/'
        }
    }
    ・・・
}

allprojects {
    repositories {
        ・・・
        maven {
            url 'https://maven.google.com/'
        }
    }
}

build.gradle(app直下)に、support-v4、animated-vector-drawable、mediarouter-v7を追加。

app/build.gradle
dependencies {
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:animated-vector-drawable:28.0.0'
    implementation 'com.android.support:mediarouter-v7:28.0.0'
}

※参考
解決に失敗しました:com.Android.support:appcompat-v7:28.0
All com.android.support libraries must use the exact same version specification

ビルドエラー修正

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:extractDeepLinksDebug'.
> org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 途中でファイルの末尾に達しました。

上記ビルドエラーの原因が分からず2日間ハマる、SAXだからXMLなんだろうけども。。。
以前の環境がWindowsの為、改行コードがCRLFだったのでLFに修正、でもエラー消えず。。。
BOM付きUTF-8!?、、、かと思ったが違った。。。
関係ないだろうけど、旧ビルドファイル(Maven、Ant)など不要ファイルを削除、もちろんエラー消えず。。。

res配下の未使用ディレクトリを削除してみた。
スクリーンショット 2020-07-05 13.00.42.png

おっ、別のエラー出た!?
res配下に空ディレクトリを置いちゃダメらしい。

Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 14 declared in library [com.google.android.gms:play-services:12.0.1] /Users/satoshi/.gradle/caches/transforms-2/files-2.1/dd50b5c4da9d853295d7932aef6bc7b9/play-services-12.0.1/AndroidManifest.xml as the library might be using APIs not available in 9
	Suggestion: use a compatible library with a minSdk of at most 9,
		or increase this project's minSdk version to at least 14,
		or use tools:overrideLibrary="com.google.android.gms.play_services" to force usage (may lead to runtime failures)

minSdkVersionを14にしろという事らしいので、build.gradle(app直下)を修正。

app/build.gradle
defaultConfig {
    minSdkVersion 14
    ・・・
}

新たなビルドエラー。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
     The number of method references in a .dex file cannot exceed 64K.

build.gradle(app直下)を修正。

app/build.gradle
defaultConfig {
    ・・・
    multiDexEnabled true
}

※参考
【Flutter】エラー解決: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:

スクリーンショット 2020-07-05 13.21.16.png

やったー!!

実行する

メニューの「ツール」→「ADV マネージャー」を開いて、仮想デバイスを作成して実行する。
スクリーンショット 2020-07-05 23.21.37.png

実行したらエラー、、、うーむ。。。

PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

Java8をインストールして、環境変数を設定する。

$ vim ~/.bash_profile
★点線内を追記
---
export JAVA_HOME=/usr/bin/javac
export ANDROID_HOME=/Users/xxx/Library/Android/sdk
export ANDROID_SDK_ROOT=/Users/xxx/Library/Android/sdk
export ANDROID_AVD_HOME=/Users/xxx/.android/avd
---
:wq
$ source ~/.bash_profile

※参考
Mac OS X にJDK 1.8をインストール
How to install ANDROID_SDK_ROOT on Mac OS?

スクリーンショット 2020-07-06 1.23.13.png

キタコレ!!

以上で開発環境は完成〜、さて広告違反の改修をするかな。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?