参考文献
用<activity-alias/>让配置WXEntryActivity更爽
Android中applicationId与package name的区别
Android Studio中manifest文件中的package包名和module中的build.gradle中applicationId的区别
需求1
公司需要我拿最基础的Anroid的版本来做修改,改成另外的一个项目,改项目避免不了修改文件名称、包名
操作步骤(不配置WXEntryActivity的方式)
比如我最基础的Android包名为com.gaobaseshop.mall,我android文件夹的名字为java/com/gaobaseshop/mall
注意一点,包名,可以跟文件夹的名字不同,建议最好保持统一,
我需要将包名com.gaobaseshop.mall,替换为com.gaoabc.hahaha
1、关闭andriod Studio,打开文件夹,比如D:/androidData/xxxxComproject/app/src/main/java/com.gaobaseshop.mall,我们将加粗的部分进行替换为com.gaoabc.hahaha
2、进入android Studio,打开build.gradle修改applicationId为com.gaoabc.hahaha,修改清单文件里面的package为com.gaoabc.hahaha
3、项目切换到Project形式,右键项目找到Replace in Path ,出现一个弹窗,第一栏写入
com.gaobaseshop.mall,第二栏写入com.gaoabc.hahaha,点击replace All按钮
4、继续替换xml里面的包名,找到src目录,右键找到Replace in Path,步骤又继续同3一样了
注意点
1、注意xml里面自定义View的路径是否跟文件夹的路径相同
2、注意R文件,需要跟清单文件和applicationId里面的package是相同的
3、清单文件里面的Activity路径,最好用绝对路径
4、注意清单文件里面的FileProvider,需要使用 ${applicationId}.fileprovider
需求2
需要发多个APK,每个APK的包名都要不同,然后我们还需要微信的授权登录功能
蛋疼的地方
如果我们每个APK都采用最原始的方式,更换包名、路径名、各种引用控件的地址、这耗时。。。恐怖的一批,而且还不敢保证某个地方是否替换到。
解决办法(配置WXEntryActivity的方式)
1、我们只更改build.gradle里面的applicationId为新的包名
2、继续保持AndroidManifest.xml 里面的package不变,路径不变,对于要唤醒微信我们使用别名的方式
<!-- 微信分享-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar.Transparent" >
</activity>
<!--编写别名-->
<activity-alias
android:name="${applicationId}.wxapi.WXEntryActivity"
android:exported="true"
android:targetActivity=".wxapi.WXEntryActivity" />
注意点
1、微信第一次授权成功后,不会再次弹出授权界面,因为微信那边有缓存了
2、我们在配置WXEntryActivity的时候,都会这样写
网友评论