首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译AIDL时出错

编译AIDL时出错
EN

Stack Overflow用户
提问于 2016-12-12 21:44:01
回答 3查看 9.9K关注 0票数 12

我试图编译.aidl并生成.java,但是:

代码语言:javascript
运行
复制
Error:Execution failed for task ':library:compileReleaseAidl'.
> java.lang.RuntimeException: com.android.ide.common.process.ProcessException:
Error while executing 'C:\Users\Michele\AppData\Local\Android\sdk\build-tools\25.0.0\aidl.exe'
with arguments {-pC:\Users\Michele\AppData\Local\Android\sdk\platforms\android-25\framework.aidl
-oC:\Users\Michele\workspace\AndroidLib\library\build\generated\source\aidl\release
-IC:\Users\Michele\workspace\AndroidLib\library\src
-IC:\Users\Michele\workspace\AndroidLib\library\src\release\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\appcompat-v7\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-v4\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-fragment\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-media-compat\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-core-ui\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-core-utils\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\animated-vector-drawable\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-vector-drawable\25.0.1\aidl
-IC:\Users\Michele\workspace\AndroidLib\library\build\intermediates\exploded-aar\com.android.support\support-compat\25.0.1\aidl
-dC:\Users\Michele\AppData\Local\Temp\aidl3070615992051288022.d
C:\Users\Michele\workspace\AndroidLib\library\src\IRemoteShortcutService.aidl}

我使用这个build.gradle

代码语言:javascript
运行
复制
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'

group='com.github.michelelacorte'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.0'

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 2
        versionName "0.2.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    sourceSets {
        main {
            aidl.srcDirs = ['src/main/aidl']
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.code.gson:gson:2.8.0'
}

而这个根build.gradle

代码语言:javascript
运行
复制
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我读过关于构建工具的问题,但是我没有发现任何关于API 25的东西

编辑:

我用params发布了aidl.exe,它返回了:

代码语言:javascript
运行
复制
aidl.exe E  2236 13884 aidl_language.cpp:224] Error while opening file for parsing: 'C:\Users\Michele\workspace\AndroidLib\library\src\IRemoteShortcutService.aidl'

编辑2:

Shortcut.aidl

代码语言:javascript
运行
复制
// Shortcut.aidl
package it.michelelacorte.androidshortcuts;

parcelable Shortcuts;

IRemoteShortcutService.aidl

代码语言:javascript
运行
复制
// IRemoteShortcutService.aidl
package it.michelelacorte.androidshortcuts;

interface IRemoteShortcutService {

    void addShortcuts(int shortcutsImage, String shortcutsText);

    Shortcuts getShortcuts();
}

.aidl位于src/main/aidl文件夹中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-17 23:30:51

您是尝试添加详细选项到gradle,还是使用相同的参数手动执行相同的aidl.exe?

可能有来自aidl.exe的解释性错误代码或消息,而gradle没有显示。

根据错误,aidl无法打开文件。检查那里是否存在文件,内容是否有效。

尝试更改为新的默认布局:

/src/main/aidl中放置aidl文件

build.gradle:

代码语言:javascript
运行
复制
...
    sourceSets {
        main {
            aidl.srcDirs = ['src/main/aidl']
        }
    }

(不过,通常情况下,如果文件在/src/main/aidl中,它应该在没有aidl.srcDirs条目的情况下工作)

不要忘记,aidl文件应该在包文件夹下,比如java。例如,如果包是it.michelelacorte.testaidl,那么aidl文件应该在src/main/aidl/it/michelelacorte/testaidl下面。

在最近版本的Android中,如果项目包设置正确,New/AIDL/AIDL File项目菜单应该已经将文件放在正确的文件夹下。

票数 7
EN

Stack Overflow用户

发布于 2018-02-16 09:01:37

在对java包进行重构之后,aidl文件也改变了包的结构,但是它忽略了文件本身中的包。

确保aidl指定的包(.aidl中的第一行)与它所在的文件夹相同。

票数 4
EN

Stack Overflow用户

发布于 2017-04-17 13:54:34

请添加

代码语言:javascript
运行
复制
import it.michelelacorte.androidshortcuts.Shortcuts;

IRemoteShortcutService.aidl文件中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41110128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档