Android Studio开发环境建立aidl 自动生成文件,怎么生成相应的java文件

android笔记(16)
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卓学腾
链接:/question//answer/
来源:知乎
我也遇到了这个问题,按照stackoverflow的方法没解决,上两个我找到的方法吧,
1.链接在此:,先在main目录下新建一个文件夹,命名为aidl,再在该目录下新建一个包,包名跟AndroidManifest中的package同名,然后在该包下创建aidl文件,创建完之后在build/generated/source/aidl/debug下就可以见到自动生成的java文件
2.链接在此:,在app目录下的build.gradle中指定aidl的目录,比如设为src/main/java,那么在该包下新建的aidl文件都会自动生成对应的java文件
需要rebuild project
另外,在aidl文件中必须指定好package,否则会编译出错
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:25431次
排名:千里之外
原创:10篇
转载:41篇
(1)(1)(1)(6)(17)(4)(1)(4)(4)(1)(3)(2)(1)(3)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'查看: 4510|回复: 5
Android Studio创建AIDL文件没有自动生成java接口
该用户从未签到主题帖子e币
附件: 您需要
才可以下载或查看,没有帐号?
签到天数: 29 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
没有设置自动编译吧,你在setting中compile设置为自动编译,然后删除gen下的文件,相关文件会自动生成的
[attachimg]139655[/attachimg]
这个样子叫做自动编译吗&
该用户从未签到主题帖子e币
没有设置自动编译吧,你在setting中compile设置为自动编译,然后删除gen下的文件,相关文件会自动生成的 ...
这个样子叫做自动编译吗
本帖子中包含更多资源
才可以下载或查看,没有帐号?
make project automacically&
该用户从未签到主题帖子e币
不好意思没有用过!
签到天数: 29 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
这个样子叫做自动编译吗
make project automacically
该用户从未签到主题帖子e币
跟楼主同样的问题, 我照楼上大哥的说法做了,可是还没生成. 楼主呢?
QQ已认证,此人靠谱
社区认证会员
社区认证会员
推荐阅读热门话题
61887420384328284281261252226214208204201192715
1&小时前1&小时前2&小时前11&小时前昨天&23:55昨天&21:13昨天&20:00昨天&13:59昨天&10:37昨天&09:04前天&23:45前天&23:31前天&23:29前天&13:35前天&12:58前天&11:37
Powered byAndroid Studio开发环境建立aidl文件,怎么生成相应的java文件? - 知乎70被浏览31741分享邀请回答274 条评论分享收藏感谢收起5349人阅读
android(32)
新建Aidldemo项目
选中APP-右键-new-AIDL-AIDL file
会出现一个aidl目录,但是注意此时还没有生成对应的java文件,如下图所示
点击Build-Clean Project(Rebuild 也可以),aidl对应的java文件就会出现了
写个加法计算器
更改aidl目录下的aidl文件如下:
interface IAdditionService {
int add(in int x, in int y);
在MainActivity同级目录下,创建一个Service
更改代码如下:
public class AdditionService extends Service {
public AdditionService() {
public IBinder onBind(Intent intent) {
IAdditionService.Stub mBinder = new IAdditionService.Stub() {
public int add(int x, int y) throws RemoteException {
return x +
写个简单的布局,输入两个加数,点击按钮相加,并输出结果
&LinearLayout xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="example.guanhang.aidldemo.MainActivity"
tools:showIn="@layout/activity_main"&
android:id="@+id/et_num1"
android:layout_width="180dp"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:id="@+id/et_num2"
android:layout_width="180dp"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="add"
android:text="相加"
&LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"&
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="相加结果为:"
android:id="@+id/tv"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content"
&/LinearLayout&
&/LinearLayout&
修改MainActivity的代码
public class MainActivity extends AppCompatActivity {
IAdditionService mS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
Intent intentService = new Intent(this,AdditionService.class);
bindService(intentService, mConnection, Context.BIND_AUTO_CREATE);
ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IAdditionService.Stub.asInterface(service);
public void onServiceDisconnected(ComponentName name) {
public void add(View view) throws RemoteException {
EditText et1 = (EditText) findViewById(R.id.et_num1);
EditText et2 = (EditText) findViewById(R.id.et_num2);
TextView tv = (TextView) findViewById(R.id.tv);
int x = Integer.parseInt(et1.getText().toString());
int y = Integer.parseInt(et2.getText().toString());
int result = mService.add(x, y);
tv.setText(result +"");
新建另一个项目,来启动这个远程服务
新建StartAdd 项目,在该项目启动Aidldemo中的加法服务,布局照抄上面那个项目
不过这个项目因为没有Service的类,所以要在之前的那个项目中,加上隐式启动服务的过滤器
注意:该项目新建的aidl要和之前项目的aidl包名以及文件内容要一模一样,所以这时不能右键新建AIDL file了(因为,这样默认的包名是当前项目的包名,和之前的aidl的文件的package是不符的)。因此要:
新建一个包,名字和上面项目Aidl所在的包名一致
把上面那个项目的aidl文件直接拷到这个包里面
Clean Project ,自动生成相应的java文件
修改MainActivity:
public class MainActivity extends AppCompatActivity {
IAdditionService mS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
Intent intent = new Intent();
intent.setAction("com.guanhang.add");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName name, IBinder service) {
mService = IAdditionService.Stub.asInterface(service);
public void onServiceDisconnected(ComponentName name) {
public void add(View view) throws RemoteException {
EditText et1 = (EditText) findViewById(R.id.et_num1);
EditText et2 = (EditText) findViewById(R.id.et_num2);
TextView tv = (TextView) findViewById(R.id.tv);
int x = Integer.parseInt(et1.getText().toString());
int y = Integer.parseInt(et2.getText().toString());
int result = mService.add(x, y);
tv.setText(result +"");
运行结果:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:177365次
积分:3274
积分:3274
排名:第10669名
原创:150篇
转载:18篇
评论:14条
(1)(4)(1)(1)(1)(1)(2)(3)(6)(10)(3)(27)(20)(42)(13)(21)(10)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 aidl无法生成java文件 的文章

 

随机推荐