代码之家  ›  专栏  ›  技术社区  ›  Phazor

play_licensing使用downloader_library引发AIDL错误,用于使用Gradle进行APK扩展

  •  7
  • Phazor  · 技术社区  · 11 年前

    我尝试使用APK扩展库zip_file和downloader_library(这需要play_licensing)。zip_file工作得很好,因为它没有依赖关系,但是当我尝试Gradle同步时,play_licensing会抛出一个错误。

    Android Studio会弹出以下错误日志:

    Information:Gradle tasks [:app:generateGoogleDebugSources, :app:libs:downloader_library:generateDebugSources, :app:libs:play_licensing:generateDebugSources, :app:libs:zip_file:generateDebugSources]
    Information:/Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/aidl/ILicenseResultListener.aidl:21 interface ILicenseResultListener should be declared in a file called com/android/vending/licensing/ILicenseResultListener.aidl.
    Information:2 errors
    Information:0 warnings
    Information:See complete output in console
    /Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/aidl/ILicensingService.aidl
    Error:(19) couldn't find import for class com.android.vending.licensing.ILicenseResultListener
    Error:(19) Execution failed for task ':app:libs:play_licensing:compileReleaseAidl'.
    > com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Users/faiz/Projects/Android/android-sdk-macosx/build-tools/19.0.3/aidl -p/Users/faiz/Projects/Android/android-sdk-macosx/platforms/android-19/framework.aidl -o/Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/build/source/aidl/release -I/Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/aidl -I/Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/src/release/aidl -d/var/folders/y6/g0d5m3f94rxdvq5myp53d9k80000gn/T/aidl662748145109587430.d /Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/aidl/ILicensingService.aidl
    
    Error Code:
      1
    
    Output:
    /Users/faiz/Projects/Android/TogetherTime/app/libs/play_licensing/aidl/ILicensingService.aidl:19: couldn't find import for class com.android.vending.licensing.ILicenseResultListener
    

    我没有修改任何库,但由于它们不是为Gradle构建的,所以我从另一个项目复制了build.Gradle并相应地修改了它们。

    下载器库/build.gradle

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.9.+'
        }
    }
    
    apply plugin: 'android-library'
    
    dependencies {
        compile 'com.android.support:support-v4:+'
        compile project(':app:libs:play_licensing')
    }
    
    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"
    
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                res.srcDirs = ['res']
            }
        }
    
        defaultConfig {
            minSdkVersion 4
            targetSdkVersion 19
        }
        buildTypes {
            release {
                runProguard false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    }
    

    play_licensing/build.gradle

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.9.+'
        }
    }
    
    apply plugin: 'android-library'
    
    dependencies {
        compile 'com.android.support:support-v4:+'
    }
    
    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.3"
    
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                res.srcDirs = ['res']
                aidl.srcDirs = ['aidl']
            }
        }
    
        defaultConfig {
            minSdkVersion 3
            targetSdkVersion 19
        }
    
        buildTypes {
            release {
                runProguard false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    }
    

    我目前正在使用Android Studio 0.5.1和gradle 0.9.0以及构建工具19.0.3

    1 回复  |  直到 11 年前
        1
  •  10
  •   makovkastar    11 年前

    我遇到了同样的问题,并找到了解决方法 com.android.vending.licensing aidl 文件夹并将aidl文件移动到那里:

    enter image description here

    另外,您还必须添加空 <application /> 标记到 AndroidManifest.xml 播放许可和下载库模块。和 compile project(':PlayLicensing') 的依赖项标记 build.gradle 下载器库的