安卓常见错误
1:同一部手机同时安装两个同样的app。
第一种解决方法:
因为安卓是根据不同app的包名来区分是不是同一个app的,包名不同,手机就认为,两个app是完全不同的两个app,修改包名就可以。
有时候我们是同一套代码,打一个测试包debug和release包,原先是装在两个不同的手机上,一边看测试版本,一遍看正式版本,现在就有一个需求,一个手机同时装上这两个版本确实方便了很多,但是,我们写代码总不能来回修改包名吧,不现实。
第二种解决方法:
安卓给我们提供了一个applicationid,如果没有手动写这个id,默认是包名,如果自己写了一个与包名不同的id,app包名默认就是这个id,安卓还给我们提供了一个applicationIdSuffix,就是在buildtype下面的debug里面加上applicationIdSuffix值为“.XX”就可以了,这个后缀会添加到applicationid,这样app的debug包就是com.xx.xx.xxx.XX了,这样就跟release版本的包是两个不同的app了
代码如下:
buildtype{
release{
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
debug{
applicationIdSuffix ".debug"
}
}
4:如果安装不上,提示同一个内容观察者冲突,就根据网上说的,修改一下provider的authorities值,这个provider在清单文件里面配置的,直接搜,authorities默认情况下是包名,修改成动态的就可以了
```
android:name="com.rd.epinggu.util.MyProviderUnq"
android:authorities="${applicationId}.provider.MyProviderUnq"
android:exported="false"
android:grantUriPermissions="true">
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
```
这个搜一下网上全是解决方案,但是没能解决我的问题,what,纠结了好几天,网上也没有其他解决方案,全是让修改authorities值的,但是我debug和release两个包的authorities是不一样的啊,我还特意用android studio打开两个apk,对比了两个清单文件,并确定是不一样的,最终解决方案:
```
其实上面的已经可以解决90%以上的问题了,之所以没解决我的问题,是因为我这里代码的原因,因为我是接手别人的代码,他的buildtype下面的 release和debug下面分别配置了manifestPlaceholders,并且在厘main配置了
JPUSH_PKGNAME “com.test.xxx”,而且debug和release的JPUSH_PKGNAME参数值是一样的,修改了一下,卧槽,这的可以同时安装两个了
```
代码如下:
```
buildTypes {
release {
minifyEnabled false
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
manifestPlaceholders = [
JPUSH_PKGNAME:"com.rdg.epg",
JPUSH_APPKEY :"12121212121212",//JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL:"developer-default",//暂时填写默认值即可.
app_name:'@string/app_name_release',
app_icon:'@drawable/logo'
]
resValue"string","app_name","@string/app_name_release"
buildConfigField"Boolean","IS_RELEASE_URL","true"
}
debug {
applicationIdSuffix ".debug"
resValue"string","app_name","@string/app_name_debug"
buildConfigField"Boolean","IS_RELEASE_URL","false"
manifestPlaceholders = [
JPUSH_PKGNAME:"com.rdg.epg.debug",
JPUSH_APPKEY :"34343434343434",//test appkey.
JPUSH_CHANNEL:"developer-default",//暂时填写默认值即可.
app_name:'@string/app_name_debug',
app_icon:'@drawable/debug_logo'
]
}
}
```
搞定,之所以记录一下是因为网上千篇一律的修改provider,根本没人提到第三方的配置,但是可能也很少有人这么写吧,总之记录一下,如果帮你你了别忘了点个赞哦!!