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

本文介绍了如何根据公司的需求创建自定义的Android开发模板。在尝试过程中,作者注意到新建Android工程时的默认包名为com.example,并分享了如何改变这一设置的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      这几天公司让整一套自己的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即可达到我们想要的效果。




### 如何在 Android Studio 中设置或多模块项目中划分包名的最佳实践 #### 设置单模块项目包名 对于单一模块的应用程序,通常会在`manifests/AndroidManifest.xml`文件中的`<manifest>`标签下指定应用程序的包名。此属性定义了整个应用的基础包路径。 ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> </manifest> ``` 该包名为反向域名风格命名[^4]。 #### 多模块项目结构下的包名管理 当处理更复杂的多模块架构时,推荐的做法是让每个模块拥有独立但又相互关联的包空间。例如: - 如果主应用模块位于 `com.example.appname`, 那么其他支持库或特性模块可以采用类似的模式,比如 `com.example.appname.feature.login` 或者 `com.example.appname.library.utils`. 这种层次化的组织方式不仅有助于保持代码清晰度,而且便于团队成员理解各个组件之间的关系及其作用范围[^3]. #### 实现细节 为了实现上述建议,在创建新Java/Kotlin类的时候应当遵循所选定的包结构。假设正在构建一个多模块项目,并希望为登录功能建立一个新的特征模块,则可以在新建模块的过程中通过配置其根级build.gradle文件来设定默认源集位置: ```groovy android { ... sourceSets { main.java.srcDirs += 'src/main/kotlin/com/example/appname/feature/login' } } ``` 这使得IDE能够自动识别并按照预设好的包路径放置新增加的源码文件[^1]. 另外值得注意的是,尽管可以通过这种方式自定义源代码的位置,但是资源(res)和其他元数据(manifest等)仍然应该放在标准目录内以确保工具链正常工作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值