解决maven项目在eclipse中循环构建的问题
在关注m2eclipse集成android的eclipse插件bug提到了maven项目在eclipse中会出现循环构建的问题。
我订阅了该bug的跟帖邮件,这样有人在这个bug下发表评论,就可以通知到邮件中。上上周吧,已经有人手工解决了这个问题。上周观察了几个人的回复,应该是没有副作用的。
这周按照上面提到的手工解决方法,哈哈,eclipse清静了,不会每改动一个代码,就不停的构建了。
方法很简单,把根目录下的.project文件中的以下部分屏蔽或者删除掉:
复制代码
大致原因是,maven本身也调用ApkBuilder做构建了,这里的eclipse也做,重复了。比如maven的ApkBuilder做过构建,会修改某些文件,被eclipse中的ApkBuilder任务监听触发,再做了一次,这样造成循环。
虽然需要手工做一下屏蔽,但是已经比较简单了。
这里再说一下从创建android eclipse项目到成为maven项目的步骤,这里假定你已经:
剩下的步骤就很简单了:
在其他应用中使用自定义的Content Provider
在 编写最简单的Content Provider中,是应用内部调用自定义的Content Provider,因此可以做到类似的写法:
其实,如果编写调用android系统自带的比如通讯录的Content provider,也可以有类似的写法。因为你的应用可以引用到这些类。
如果是自己的Content provider要让其他应用使用,那不可能让人家把自己的包导入进来的。怎么办呢?可以直接把这些常量的值写出来即可。这也要求,如果你想共享自己的Content provider,需要告诉人家这些常量:
这是在另外一个应用中使用,代码如下:
--------------------------------------------------------------
编写简单的zip压缩单个文件示例写了个简单的zip压缩单文件的示例,应该可以用在android环境下。主要用于对日志文件的压缩,方便上传。
在关注m2eclipse集成android的eclipse插件bug提到了maven项目在eclipse中会出现循环构建的问题。
我订阅了该bug的跟帖邮件,这样有人在这个bug下发表评论,就可以通知到邮件中。上上周吧,已经有人手工解决了这个问题。上周观察了几个人的回复,应该是没有副作用的。
这周按照上面提到的手工解决方法,哈哈,eclipse清静了,不会每改动一个代码,就不停的构建了。
方法很简单,把根目录下的.project文件中的以下部分屏蔽或者删除掉:
- <buildCommand>
- <name>com.android.ide.eclipse.adt.ApkBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
虽然需要手工做一下屏蔽,但是已经比较简单了。
这里再说一下从创建android eclipse项目到成为maven项目的步骤,这里假定你已经:
- maven;
- eclipse adt;
- eclipse m2eclipse插件;
- m2eclipse和adt集成的插件。
剩下的步骤就很简单了:
- 在eclipse中创建android项目,通过adt插件;
- 然后创建maven的pom文件,可以参考这个pom.xml文件,它比较简明;
- 通过m2eclipse插件菜单“enable dependency management”
- 将项目根目录中.project文件上述部分屏蔽或者删除。
在其他应用中使用自定义的Content Provider
在 编写最简单的Content Provider中,是应用内部调用自定义的Content Provider,因此可以做到类似的写法:
01
|
Cursor cursor = managedQuery(MyContentProvider.CONTENT_URI,
null
,
null
,
null
,
null
);
|
其实,如果编写调用android系统自带的比如通讯录的Content provider,也可以有类似的写法。因为你的应用可以引用到这些类。
如果是自己的Content provider要让其他应用使用,那不可能让人家把自己的包导入进来的。怎么办呢?可以直接把这些常量的值写出来即可。这也要求,如果你想共享自己的Content provider,需要告诉人家这些常量:
01
02
03
04
|
MyContentProvider.CONTENT_URI
MyContentProvider.NAME
MyContentProvider.START_YEAR
MyContentProvider.DYNASTY
|
![](http://www.eoeandroid.com/data/attachment/forum/201211/01/145912j46jm8ycgvs859eu.png)
这是在另外一个应用中使用,代码如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package
com.easymorse.usecp;
import
android.app.Activity;
import
android.database.Cursor;
import
android.net.Uri;
import
android.os.Bundle;
import
android.widget.TextView;
public
class
UseCpActivity
extends
Activity {
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView =
new
TextView(
this
);
textView.setText(getContentProviderValues());
this
.setContentView(textView);
}
private
CharSequence getContentProviderValues() {
StringBuilder builder =
new
StringBuilder();
Cursor cursor = managedQuery(Uri
.parse(
"content://com.easymorse.cp.mycp"
),
null
,
null
,
null
,
null
);
while
(cursor.moveToNext()) {
builder.append(cursor.getString(cursor.getColumnIndex(
"name"
)))
.append(
" | "
).append(
cursor.getString(cursor
.getColumnIndex(
"start_year"
))).append(
" | "
).append(
cursor.getString(cursor.getColumnIndex(
"dynasty"
)))
.append(
"\n"
);
}
return
builder.toString();
}
}
|
--------------------------------------------------------------
编写简单的zip压缩单个文件示例写了个简单的zip压缩单文件的示例,应该可以用在android环境下。主要用于对日志文件的压缩,方便上传。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package
com.easymorse.gallery;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipOutputStream;
public
class
ZipDemo {
public
static
void
main(String[] args)
throws
Exception {
zipFile(
new
File(
"a.log"
),
new
File(
"a.zip"
));
}
public
static
void
zipFile(File source, File target)
throws
IOException {
byte
[] buffer =
new
byte
[
1024
];
ZipOutputStream outputStream =
new
ZipOutputStream(
new
FileOutputStream(target));
outputStream.putNextEntry(
new
ZipEntry(source.getName()));
InputStream inputStream =
new
FileInputStream(source);
for
(
int
i = inputStream.read(buffer); i >
0
; i = inputStream
.read(buffer)) {
outputStream.write(buffer,
0
, i);
}
inputStream.close();
outputStream.close();
}
}
|