您的位置:首页 > 移动开发 > Android开发

Android 新建Android应用修改默认包名com.example

2015-06-05 15:43 525 查看
这几天公司让整一套自己的Android开发模版,于是到网上找相关的资料,看完后发现做一个简单的Android模版还是好弄一点(不过要了解一点freemarker),按教程试了下做了几个简单的Activity模版(当然没有那么复杂,只是简单的试验),后来看到在new 一个Android新工程的时候发现,默认的包名是com.example,如图下图所示:



能不能把默认的包名改成我们想要的呢,答案是肯定的。于是乎我在Android的模版里面去找相关的com.example字样,最后在AndroidLib中找到了,但显然不是想要的,继续在网上查资料。发现有人写了博客,而且修改成功了,但是com.example字样的不在我们的sdk包中,而是在ADT插件的jar包中,于是下载了相关的工具(jd-gui)进行反编译,并且在他人的博文中发现了com.example字样的路径,只可惜在这里是不能修改啊,这个博客里面也没有说道怎么整,于是功亏一篑。(我这里是修改成功)



直接将要修改的文件NewProjectPage.class文件反编译后的java文件在dos中编译,当然这是通不过的,因为这个文件还依赖了其他的文件,其他文件还会依赖另一些文件,总之这样是搞不定的。实在不行直接将所有的jar包反编译,然后建立一个java工程,将src文件全部复制进来。发现这货也依赖了很多的包,从eclipse和sdk中拷贝了很多的jar文件,结果总会报错。后来找了另一个工具JClassLib,安装完成后打开,将我们要修改的NewProjectPage.class托出来,放到某一目录下通过JClassLib工具打开该文件,如图:


因为我们要修改的内容是字符串,肯定是在字符串常量池中的,一个个的找,找到第18行发现我们要修改的内容了


然后在eclipse中建立一个java工程,并复制一下内容:

String filePath = "f:\\NewProjectPage.class";

FileInputStream fis = new FileInputStream(filePath);

DataInput di = new DataInputStream(fis);

ClassFile cf = new ClassFile();

cf.read(di);

CPInfo[] infos = cf.getConstantPool();

int count = infos.length;

for (int i = 0; i < count; i++) {

if (infos[i] != null) {

System.out.print(i);

System.out.print(" = ");

System.out.print(infos[i].getVerbose());

System.out.print(" = ");

System.out.println(infos[i].getTagVerbose());

if(i == 18){

ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];

uInfo.setBytes("com.cqt.".getBytes());

infos[i]=uInfo;

}

}

}

cf.setConstantPool(infos);

fis.close();

File f = new File(filePath);

ClassFileWriter.writeToFile(f, cf);

我这里是将com.example替换成了com.cqt。编译完成后把NewProjectPage.class再放回到adt插件的jar中,重启eclipse即可达到我们想要的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: