AIDL couldn't find import for class

2024-04-04 12:18
文章标签 import find class aidl couldn

本文主要是介绍AIDL couldn't find import for class,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近正在研究aidl,出现了以下错误: couldn't find import for class 无法导入类!

 

IMyService.aidl  如图:

工程目录:

Student.java

[java]  view plain copy
  1.  private int age;  
  2.     private String name;  
  3.     public int getAge() {  
  4.         return age;  
  5.     }  
  6.     public void setAge(int age) {  
  7.         this.age = age;  
  8.     }  
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.     public void setName(String name) {  
  13.         this.name = name;  
  14.     }  
  15. //    public static final Parcelable.Creator<Student> CREATOR = new Creator<Student>() {  
  16. //  
  17. //        @Override  
  18. //        public Student[] newArray(int size) {  
  19. //            // TODO Auto-generated method stub  
  20. //            return new Student[size];  
  21. //        }  
  22. //  
  23. //        @Override  
  24. //        public Student createFromParcel(Parcel source) {  
  25. //            // TODO Auto-generated method stub  
  26. //            return new Student(source);  
  27. //        }  
  28. //  
  29. //        
  30. //    };  
  31.     public Student() {  
  32.     }  
  33.     public Student(Parcel pl) {  
  34.         age = pl.readInt();  
  35.         name = pl.readString();  
  36.     }  
  37.       
  38.     public int describeContents() {  
  39.         // TODO Auto-generated method stub  
  40.         return 0;  
  41.     }  
  42.       
  43.     public void writeToParcel(Parcel dest, int flags) {  
  44.         // TODO Auto-generated method stub  
  45.         dest.writeInt(age);  
  46.         dest.writeString(name);  
  47.     }  
 

后来在网上查询了一下。问题终于解决了,其实还要感谢这位大哥!http://blog.csdn.net/jackyu613/archive/2010/11/16/6011564.aspx

具体解决办法如下:

 

 参考《Android/OPhone开发完全讲义》第8章里的一段叙述:
“AIDL服务只支持有限的数据类型,因此,如果用AIDL服务传递一些复杂的数据就需要做更一步处理。AIDL服务支持的数据类型如下:

Java的简单类型(int、char、boolean等)。不需要导入(import)。

String和CharSequence。不需要导入(import)。

List和Map。但要注意,List和Map对象的元素类型必须是AIDL服务支持的数据类型。不需要导入(import)。

AIDL自动生成的接口。需要导入(import)。

实现android.os.Parcelable接口的类。需要导入(import)。

其中后两种数据类型需要使用import进行导入,将在本章的后面详细介绍。

传递不需要import的数据类型的值的方式相同。传递一个需要import的数据类型的值(例如,实现android.os.Parcelable接口的类)的步骤略显复杂。除了要建立一个实现android.os.Parcelable接口的类外,还需要为这个类单独建立一个aidl文件,并使用parcelable关键字进行定义。”

其实我们只要在新建一下Student.aidl文件对 Student这个类进行定义,就可以了。代码如下:

[c-sharp]  view plain copy
  1. /* //device/java/android/android/content/Intent.aidl 
  2. ** 
  3. ** Copyright 2007, The Android Open Source Project 
  4. ** 
  5. ** Licensed under the Apache License, Version 2.0 (the "License");  
  6. ** you may not use this file except in compliance with the License.  
  7. ** You may obtain a copy of the License at  
  8. ** 
  9. **     http://www.apache.org/licenses/LICENSE-2.0  
  10. ** 
  11. ** Unless required by applicable law or agreed to in writing, software  
  12. ** distributed under the License is distributed on an "AS IS" BASIS,  
  13. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  14. ** See the License for the specific language governing permissions and  
  15. ** limitations under the License. 
  16. */  
  17. package com.android.aidl;  
  18. parcelable Student;  
 

在这里切记 parcelable必须为小写,到此问题得到解决,这时目录结构如下:

 

补充一句,网上有一种“办法”,说是在frameworks/base/Android.mk中的LOCAL_AIDL_INCLUDES := $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)前加上LOCAL_AIDL_INCLUDES := 欲import的类所在位置。其实这种“办法”也是受上面所说的import规则限制的。一个没有实现Parcelable接口的类,这种“办法”也是无能为力的。


这篇关于AIDL couldn't find import for class的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/875759

相关文章

ImportError: cannot import name ‘print_log‘ from ‘logging‘

mmcv升级到2.+后删除了很多 解决 查FAQ文档,找到 添加到mmcv.utils下即可

类型信息:反射-Class

在说反射前提一个概念:RTTI(在运行时,识别一个对象的类型) public class Shapes {public static void main(String[] args) {List<Shape> shapes = Arrays.asList(new Circle(), new Square(), new Triangle());for (Shape shape : shapes

UserWarning: mkl-service package failed to import

安装完成anaconda,并设置了两个环境变量  之后再控制台运行python环境,输入import numpy as np,提示错误 D:\InstallFolder\Anaconda3\lib\site-packages\numpy\__init__.py:143: UserWarning: mkl-service package failed to import, therefore

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

C++及AIDL服务间通信相关

只做细节展示,没有什么逻辑,陆续补充中

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

The import com.google cannot be resolved

The import com.google cannot be resolved,报错: 第一感觉就是缺少jar包,因为项目用maven管理,所以在pom.xml中添加: <dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.3.1</ver

泛型参Class、Class、Class的对比区别

1.原文链接 泛型参Class、Class、Class的对比区别 https://blog.csdn.net/jitianxia68/article/details/73610606 <? extends T>和<? super T> https://www.cnblogs.com/drizzlewithwind/p/6100164.html   2.具体内容: 泛型参数Class、

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this