androir打包工具----java压缩成apk问题

打包工具流程:

1.在eclipse中到处未签名的apk

2.用java将其解压

3.修改一些文件,

4.用java压缩成apk

5.对apk签名

整个流程在压缩这一环出现了问题,java将文件压缩成apk时在每个文件下多了一个无名且文件大小为0的文件,签名安装后,打开程序报xml文件找不到。

试过手动删除无效文件再签名,一切OK

压缩方法如下:

//对文件进行压缩

publicstaticvoidzip(StringsourceDir,StringzipFile){

OutputStreamos;

try{

os=newFileOutputStream(zipFile);

BufferedOutputStreambos=newBufferedOutputStream(os);

ZipOutputStreamzos=newZipOutputStream(bos);

Filefile=newFile(sourceDir);

StringbasePath=null;

if(file.isDirectory()){

basePath=file.getPath();

}else{

basePath=file.getParent();

}

zipFile(file,basePath,zos);

zos.closeEntry();

zos.close();

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

System.out.println(".......文件压缩成功");

FileUtil.deleteDirectory(sourceDir);

}

privatestaticvoidzipFile(Filesource,StringbasePath,

ZipOutputStreamzos){

File[]files=newFile[0];

if(source.isDirectory()){

files=source.listFiles();

}else{

files=newFile[1];

files[0]=source;

}

StringpathName;

byte[]buf=newbyte[BUFFER];

intlength=0;

try{

for(Filefile:files){

if(file.isDirectory()){

pathName=file.getPath().substring(basePath.length()+1)+"\\";

zos.putNextEntry(newZipEntry(pathName));

zipFile(file,basePath,zos);

}else{

pathName=file.getPath().substring(basePath.length()+1);

InputStreamis=new[/size]FileInputStream(file);

BufferedInputStreambis=newBufferedInputStream(is);

zos.putNextEntry(newZipEntry(pathName));

while((length=bis.read(buf))>0){

zos.write(buf,0,length);

}

is.close();

}

}

}catch(Exceptione){

e.printStackTrace();

}

}

希望大神们看下什么问题导致的[/size]

apk

相关推荐