3

Android Studio セットアップを 1.3 (2015 年 8 月 31 日現在の最新の安定版) に更新したばかりで、最新の NDK 統合を使用する必要があります。私の以前の Android Studio バージョンは 1.2.1 でした (同様に安定しています)。

Google Migration to Gradle Experimental Guideに従って、さまざまな gradle スクリプトを簡単に適応させることができました。

ただし、Gradle Sync は次のエラーで失敗します。

Error:No such property: android for class: com.android.build.gradle.managed.ProductFlavor

[更新 1 -> 以下を参照、エラーが更新されました]

プロジェクトを実行しようとするとMake、もう少し詳細なエラーが表示されます:

Error:(17, 1) A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: model.android
   > No such property: android for class: com.android.build.gradle.managed.ProductFlavor

アプリとは、メインのアプリケーション コード (アクティビティなどを含む) を指します。

機能を使用して、プロジェクトからスクリプトをF4 > Jumping to Source開きます。build.gradleapp

これは前述のスクリプトの内容です:

apply plugin: 'com.android.model.application' // experimental

model {
    android {
        compileSdkVersion = 21
        buildToolsVersion = '22.0.1'

        defaultConfig.with {
            applicationId = "company.com.myapplication"
            minSdkVersion.apiLevel = 10
            targetSdkVersion.apiLevel = 21
            versionCode = 1
            versionName = "1.0"

            // NDK
            android.ndk {
                moduleName = "MyAwesomeJNILib"
                cFlags "-std=c99"
            }
        }
        android.buildTypes {
            release {
                minifyEnabled = false
                proguardFiles += file('proguard-rules.pro')
            }
        }
        android.productFlavors {
            // for detailed abiFilter descriptions, refer to "Supported ABIs" @
            // https://developer.android.com/ndk/guides/abis.html#sa
            create("arm") {
                ndk.abiFilters += "armeabi"
            }
            create("arm7") {
                ndk.abiFilters += "armeabi-v7a"
            }
            create("arm8") {
                ndk.abiFilters += "arm64-v8a"
            }
            create("x86") {
                ndk.abiFilters += "x86"
            }
            create("x86-64") {
                ndk.abiFilters += "x86_64"
            }
            create("mips") {
                ndk.abiFilters += "mips"
            }
            create("mips-64") {
                ndk.abiFilters += "mips64"
            }
            // To include all cpu architectures, leaves abiFilters empty
            create("all")
        }

        packagingOptions {
            exclude 'LICENSE.txt'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.squareup.okhttp:okhttp-android-support:2.4.0'
    compile project(':bluetoothmanager')
    compile 'joda-time:joda-time:2.8.1'
    // Units Testing
    //androidTestCompile 'junit:junit:4.12'
    compile 'junit:junit:4.12' // experimental
}

ご覧のとおり、ここにはあまり派手なものはありません。しかし、いくつかの単体テストのセットアップがあることに気付くかもしれません:

// Units Testing
//androidTestCompile 'junit:junit:4.12'
compile 'junit:junit:4.12' // experimental

androidTestCompileGradleExperimentalcompileへの移行中に解決できなかったので、解決策に従って変更しました (申し訳ありません) androidTestCompile。これはエラーでした:

Error:(71, 0) Gradle DSL method not found: 'androidTestCompile()'

前述のガイドで提供され、ここで入手できるhello-jiniGoogle の NDK サンプル (たとえば)の 1 つを比較しようとしました。

を除いて、packagingOptions私の失敗の原因となる違いは見つかりませんでした。削除しようとしましpackagingOptionsたが、まったく変更がありませんでした。

[更新 1]

より詳細なエラー メッセージには、ネイティブ ビルド設定を宣言する行 #17 にあることが示されていることがわかります。cFlagsに変更する必要があるエラーを修正し、Gradle の新しいバージョンで必要に応じてCFlags追加しました。=これは役に立ちました。エラーは表示されなくなりましたが、次のように変更されました。

Error:No such property: android for class: com.android.build.gradle.managed.AndroidConfig
4

1 に答える 1