Dji-SDKを使用しています。最近、SDKをバージョン4.2から4.3.2に移行しました。 libsフォルダーのdji-sdk.aarを変更した後、マニフェストのマージの問題のためにビルドできません。ビルドでマージされたマニフェストは次のように作成されています。
...
<uses-permission Android:name="Android.permission.USE_CREDENTIALS" />
<receiver
Android:name="dji.logic.receiver.DJIPilotStartupReceiver"
Android:exported="true"
Android:permission="dji.permission.sdk.wifi" >
<intent-filter>
<action Android:name="dji.pilot.STARTUP" />
<action Android:name="dji.go3.STARTUP" />
<action Android:name="dji.go4.STARTUP" />
</intent-filter>
</receiver>
<application
Android:name="com.sample.app.LinkApplication"
...
receiver
タグがapplication
タグの下にあるはずです。しかし、マージされたマニフェストでは、タグはuses-permission
タグとエラーを示しています。それはSdkエラーですか、それとも私の側で間違っていますか?エラーは
Error:(71) unknown element <receiver> found
これがbuild.gradleです。
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.getkeepsafe.dexcount'
apply plugin: 'me.tatarka.retrolambda'
Android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.sample.app"
minSdkVersion 21
targetSdkVersion 25
versionCode 7
versionName "4.0.2"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
}
}
vectorDrawables {
useSupportLibrary = true
}
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
multiDexEnabled true
retrolambda {
javaVersion JavaVersion.VERSION_1_6
incremental true
}
buildConfigField "boolean", "DRONE_DEBUG", property('DRONE_DEBUG')
buildConfigField "String", "BASE_URL", property('BASE_URL')
buildConfigField "String", "LINK_DRONE_URL", property('LINK_DRONE_URL')
buildConfigField "String", "LINK_SENSOR_URL", property('LINK_SENSOR_URL')
resValue "string", "api_key_dji_sdk", "################"
resValue "string", "app_name", "Link"
dimension "default"
applicationId = "com.sample.app"
}
buildTypes {
debug {
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "default"
lintOptions {
checkReleaseBuilds false
}
dataBinding {
enabled = true
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
repositories {
flatDir {
dirs 'libs'
}
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
testImplementation 'junit:junit:4.12'
testImplementation 'com.squareup.leakcanary:leakcanary-Android-no-op:1.5'
debugImplementation 'com.squareup.leakcanary:leakcanary-Android:1.5'
releaseImplementation 'com.squareup.leakcanary:leakcanary-Android-no-op:1.5'
implementation 'com.Android.support:appcompat-v7:25.4.0'
implementation 'com.Android.support:design:25.4.0'
implementation 'com.Android.support:cardview-v7:25.4.0'
implementation 'com.Android.support:multidex:1.0.2'
implementation 'com.google.Android.gms:play-services-location:11.0.2'
implementation 'com.google.Android.gms:play-services-maps:11.0.2'
implementation 'com.google.dagger:dagger:2.10'
annotationProcessor 'com.google.dagger:dagger-compiler:2.10'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
implementation 'io.reactivex.rxjava2:rxjava:2.1.1'
implementation('com.squareup.retrofit2:retrofit:2.3.0')
implementation('com.squareup.retrofit2:converter-gson:2.3.0') {
exclude group: 'com.google.code.gson', module: 'gson'
}
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
implementation 'com.jakewharton.timber:timber:4.5.1'
implementation 'me.grantland:autofittextview:0.2.1'
implementation 'com.squareup:otto:1.3.8'
implementation('org.jscience:jscience:4.3.1', {
exclude group: 'org.javolution', module: 'javolution'
})
//implementation 'com.dji:dji-sdk:4.3.2' (i have tried this too after removeing the dji-sdk.aar)
implementation('com.crashlytics.sdk.Android:crashlytics:2.6.8@aar') {
transitive = true;
}
}
使っています
AAPT2
ファイルにAndroid.enableAapt2=false
を追加して、gradle.properties
を無効にしてみてください。
AAPT2が有効になっていると、ビルドが失敗する場合があります。さらに、AAPT2は現在Robelectricと互換性がありません。 AAPT2リソース処理の問題が原因でビルドが失敗した場合、またはRoboelectricを使用したい場合は、
Android.enableAapt2=false
ファイルでgradle.properties
を設定し、./gradlew --stop
を実行してGradleデーモンを再起動することで、AAPT2を無効にできます。コマンドライン。
参考: ここ
Android studio 3.0 beta 5を使用していましたが、AAPT2
を無効にしてエラーを解決しました。
UPDATE:
Jay が言及したように、別の解決策はupdate Android Studio to 3.1.1
です。更新することで問題が解決したため、クロスチェックしていません。