0

我嘗試使用帶有gradle-experimental的android模型插件來組裝NDK應用與Firebase雲消息傳遞。當我打電話Ndk使用gradle實現的android模型插件構建會導致java.lang.IllegalStateException:名稱爲[DEFAULT]的FirebaseApp不存在。

FirebaseInstanceId.getInstance().getToken() 

應用程序調用

java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. 

如果我切換到com.android.application插件從com.android.model.application插件然後一切工作正常,但不幸的是我需要建立NDK項目與雲消息傳遞。你有什麼想法如何解決這個問題? 搖籃文件:

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

model { 
    android { 
     compileSdkVersion = 24 
     buildToolsVersion = "24.0.2" 

     /* defaultConfig { 
     applicationId = "com.myapppackage.myappname" 
     minSdkVersion.apiLevel = 14 
     targetSdkVersion.apiLevel = 24 
     versionCode = 1 
     versionName = "1.0" 
     testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" 
    }*/ 
    defaultConfig { 
     applicationId = "com.myapppackage.myappname" 
    } 

    buildTypes { 

     release { 
      minifyEnabled = true 
      useProguard = true 
      proguardFiles.add(file('proguard-rules.pro')) 
      ndk.with { 
       debuggable = false 
      } 
     } 
     debug { 
      minifyEnabled = true 
      useProguard = true 
      debuggable = true 
      proguardFiles.add(file('proguard-rules.pro')) 
      ndk.with { 
       debuggable = false 
      } 
     } 
    } 


    compileOptions.with { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 

    ndk { 
     platformVersion = "14" 
     moduleName = "testndk" 
     toolchain = "clang" 
     ldLibs.add("log") 
    } 


    sources { 
     main { 
      jni { 
       source { 
        srcDirs.removeAll() 
        srcDirs.add('src/main/jni/netguard') 
       } 
       exportedHeaders { 
       } 
      } 
     } 
    } 

    productFlavors { 
     create("all") { 
      versionName = "1.00" 
      minSdkVersion.apiLevel = 14 
      targetSdkVersion.apiLevel = 24 
      versionCode = 100 
      archivesBaseName = "MyAppName-v$versionName" 
     } 
     create("lollipop-and-later") { 
      versionName = "1.00" 
      minSdkVersion.apiLevel = 20 
      targetSdkVersion.apiLevel = 24 
      versionCode = 100 
      archivesBaseName = "MyAppName-v$versionName" 
     } 
     create("kitkat-and-earlier") { 
      versionName = "1.00" 
      minSdkVersion.apiLevel = 14 
      maxSdkVersion = 19 
      targetSdkVersion.apiLevel = 24 
      versionCode = 100 
      archivesBaseName = "MyAppName-v$versionName" 
     } 
    } 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    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:24.2.0' 
    compile 'com.google.android.gms:play-services:9.4.0' 
    compile 'com.google.firebase:firebase-messaging:9.4.0' 
    compile 'com.google.firebase:firebase-core:9.4.0' 
    compile 'com.google.firebase:firebase-ads:9.4.0' 
    testCompile 'junit:junit:4.12' 
} 

而且proguard-rules.pro文件:

-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
-dontobfuscate 
-dontoptimize 
-keep class android.support.v7.widget.** { *; } 
-dontwarn android.support.v4.** 
-keep public class com.google.android.gms.** {*;} 
-dontwarn com.google.android.gms.** 
-keep public class com.google.firebase.** {*;} 
-dontwarn com.google.firebase.** 

回答

2

在時間來建立這樣的應用程序時產生IllegalStateException異常(FirebaseApp名稱爲[默認]的gradle-實驗沒有按」將溶液t存在)是通過該示例構建實驗本地模塊作爲庫並使用Firebase在穩定的gradle模塊中:

Android Native Library Module (and Debug)

相關問題