質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.37%

  • Java

    15107questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4113questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

OneDrive APIの組込後、ビルドするとエラーが出て困っています

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 936

rafiene3249

score 39

前提・実現したいこと

OneDrive APIの組込をして、ビルドでエラーが出ないようにしたいのです。
OneDrive APIの組込自体はFile>New>Import Moduleして組み込んであります。
また、[com.onedrive.sdk]を参照出来るようにはしてあります。(自作したプロジェクトにOneDriveSDK APIを紐付けてあります)

発生している問題・エラーメッセージ

OneDrive APIの組込後、ビルドするとAndroidManifestのマージでエラーが出てビルドに失敗するので困っています。

【Gradle Consoleに表示されているエラー内容】

C:\AndroidStudioProjects\StaffCalendar\app\src\main\AndroidManifest.xml:27:9-31 Error:
    Attribute meta-data#android.support.VERSION@value value=(25.3.1) from [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31
    is also present at [com.android.support:support-v4:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value=(26.0.0-alpha1).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:34 to override.

該当のソースコード

【元々のAndroidManifest.xml】(一部抜粋&まずい所は伏せてあります)

行
18        <activity
19            android:name=".MainActivity"
20            android:screenOrientation="portrait"
21            >
22            <intent-filter>
23                <action android:name="android.intent.action.MAIN" />
24                <action android:name="xxx.xxxxxxxxxxxxxxxxx.staffcalendar" />
25
26                <category android:name="android.intent.category.LAUNCHER" />
27
28                <action android:name="android.intent.action.VIEW" />
29                <category android:name="android.intent.category.DEFAULT" />
30                <category android:name="android.intent.category.BROWSABLE" />
31
32                <!--Add in your scheme/host from registered redirect URI-->
33                <!--By default, the scheme should be similar to 'msal[appId]' -->
34                <data android:scheme="xxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
35                    android:host="auth" />
36            </intent-filter>
37        </activity>

試したこと

【自分なりの訳】
属性 meta-dataの「android.support.VERSION@value」が「25.3.1」でAndroidManifest.xmlの27行で定義されていて
[com.android.support:support-v4:26.0.0-alpha1]のAndroidManifest.xmlの27行では、
「android.support.VERSION@value」が「26.0.0-alppha1」になっている
提案:オーバーライドする為にAndroidManifest.xmlの25行の<meta-data>の要素に「tools:replace="android:value"」を追記しろ

上記の様に解釈したので、以下の様に修正し、リビルドしてみたのですが

【修正後のAndroidManifest.xml】(一部抜粋)


22            <intent-filter>
23                <action android:name="android.intent.action.MAIN" />
24                <action android:name="xxx.xxxxxxxxxxxxxxxxx.staffcalendar" />
25                <!--追記 ここから-->
26                <meta-data tools:replace="android:value" />
27                <!--ここまで-->
28
(~~~(省略)~~~)
39            </intent-filter>

下記のエラーが出ました。

【Gradle Consoleに表示されているエラー内容】

C:\AndroidStudioProjects\StaffCalendar\app\src\main\AndroidManifest.xml:26:17-60 Error:
Missing 'name' key attribute on element meta-data at AndroidManifest.xml:26:17-60
C:\AndroidStudioProjects\StaffCalendar\app\src\main\AndroidManifest.xml:26:17-60 Error:
tools:replace specified at line:26 for attribute android:value, but no new value specified

【自分なりの訳】
AndroidManifest.xmlの26行の要素 meta-dataのキー 'name' が無い
AndroidManifest.xmlの26行に属性「android:value」の為の「tools:replace 」が定義されているが、
新しい値が定義されていない

ええと、つまりこう直せばいいのか?と、以下の様に修正してリビルドしました。

【修正後のAndroidManifest.xml】(一部抜粋)


25                <!--追記後の修正 ここから-->
26                <meta-data tools:replace="android:value"
27                    android:name="android.support.VERSION"
28                    android:value="25.3.1" />
29                <!--ここまで-->

すると下記のエラーが出ました。

【Gradle Consoleに表示されているエラー内容】

C:\AndroidStudioProjects\StaffCalendar\app\src\main\AndroidManifest.xml:28:21-43 Error:
Attribute meta-data#android.support.VERSION@value value=(25.3.1) from AndroidManifest.xml:28:21-43
is also present at [com.android.support:support-v4:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value=(26.0.0-alpha1).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:34 to override.

【自分なりの訳】
AndroidManifest.xmlの28行で属性 meta-dataのandroid.support.VERSIONの値が(25.3.1)だが、
[com.android.support:support-v4:26.0.0-alpha1]のAndroidManifest.xmlの27行では(26.0.0-alpha1)となっている
提案:オーバーライドする為にAndroidManifest.xmlの25行の<meta-data>の要素に「tools:replace="android:value"」を追記しろ

えーと・・・? じゃぁこれでどう?と、以下の様に変更してリビルド

<!--追記後の修正 ここから-->
<meta-data tools:replace="android:value"
android:name="android.support.VERSION"
android:value="26.0.0-alpha1" />
<!--ここまで-->

【Gradle Consoleに表示されているエラー内容】

C:\AndroidStudioProjects\StaffCalendar\app\src\main\AndroidManifest.xml:28:21-50 Error:
Attribute meta-data#android.support.VERSION@value value=(25.3.1) from AndroidManifest.xml:28:21-50
is also present at [com.android.support:support-v4:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value=(26.0.0-alpha1).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:34 to override.

あれ? valueの値変えてみたのにエラーの内容に変化がない。 だめだ、よく分からない、お手上げだ。
と言った次第です。

補足情報(言語/FW/ツール等のバージョンなど)

Android Studio 2.3.3 (Java)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

+1

自己解決しました(長文失礼)

module appの所のbuild.gradleを開いて
dependenciesの compile 'com.android.support:appcompat-v7:25.3.1' に赤線が
カーソル合わせると赤い風船が出る

メッセージ出てたのでちょっと長いけど転記:

All com.android.support libraries must use the exact same version specification(mixing version can lead to runtime crashes.)Found versions 26.0.0-alpha,25.3.1.Examples include
com.android.support:support-compat:26.0.0-alpha and com.android.support:animated-vector-drawble:25.3.1 les...(Ctrl+F1)

There are some combination of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support
libraries that is not the latest version(or in particular, a version lower than your targetSDKVersion.)

試しに There are ~ your targetSDKVersion.) でググってみたら以下のHPを発見

Android アプリ開発時のライブラリバージョン競合対策

これは・・当たりか!?ということで、上記HPの内容を元にTerminalから下記コマンドを実行

gradlew -q dependencies app:dependencies --configuration compile

実行結果
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1 -> 26.0.0-alpha1
|    +--- com.android.support:support-v4:25.3.1 -> 26.0.0-alpha1
|    |    +--- com.android.support:support-compat:26.0.0-alpha1
|    |    |    \--- com.android.support:support-annotations:26.0.0-alpha1
|    |    +--- com.android.support:support-media-compat:26.0.0-alpha1
|    |    |    +--- com.android.support:support-annotations:26.0.0-alpha1
|    |    |    \--- com.android.support:support-compat:26.0.0-alpha1 (*)
|    |    +--- com.android.support:support-core-utils:26.0.0-alpha1
|    |    |    +--- com.android.support:support-annotations:26.0.0-alpha1
|    |    |    \--- com.android.support:support-compat:26.0.0-alpha1 (*)
|    |    +--- com.android.support:support-core-ui:26.0.0-alpha1
|    |    |    +--- com.android.support:support-annotations:26.0.0-alpha1
|    |    |    \--- com.android.support:support-compat:26.0.0-alpha1 (*)
|    |    \--- com.android.support:support-fragment:26.0.0-alpha1
|    |         +--- com.android.support:support-compat:26.0.0-alpha1 (*)
|    |         +--- com.android.support:support-core-ui:26.0.0-alpha1 (*)
|    |         \--- com.android.support:support-core-utils:26.0.0-alpha1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1 -> 26.0.0-alpha1
|    |    \--- com.android.support:support-compat:25.3.1 -> 26.0.0-alpha1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)
+--- com.android.support.constraint:constraint-layout:1.0.2
|    \--- com.android.support.constraint:constraint-layout-solver:1.0.2
\--- project :onedrivesdk
+--- com.microsoft.services.msa:msa-auth:0.8.4
+--- com.microsoft.aad:adal:1.1.7
|    +--- com.android.support:support-v4:[18,) -> 26.0.0-alpha1 (*)
|    \--- com.google.code.gson:gson:2.3.1
\--- com.google.code.gson:gson:2.3.1

対象となるのが3つだったのでappのbuild.gradleを下記の様に書き換えた

【書換前のbuild.gradle】

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    // ↓ ここを
    compile 'com.android.support:appcompat-v7:25.3.1'
    // ↑
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile project(':onedrivesdk')
}

【書換後のbuild.gradle】

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    // ↓ この様に書き換えた
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile 'com.android.support:support-vector-drawable:26.0.0-alpha1'
    compile 'com.android.support:animated-vector-drawable:26.0.0-alpha1'
    // ↑
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile project(':onedrivesdk')
}

リビルド実行・・・通った!! ということで自己解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    15107questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4113questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。