eleme / Amigo

A hotfix library for Android platform, and not just this...
Other
1.37k stars 213 forks source link

Bug java.lang.IllegalArgumentException: Unknown URI content://xxxxxxxxx.amigo_patch_info_provider/set_working_checksum?checksum= #233

Closed linyuyuan closed 7 years ago

linyuyuan commented 7 years ago

java.lang.IllegalArgumentException: Unknown URI content://xxxxxxxxx.amigo_patch_info_provider/set_working_checksum?checksum= android.content.ContentResolver.update(ContentResolver.java:1415) me.ele.amigo.PatchInfoUtil.setWorkingChecksum(Unknown Source) me.ele.amigo.Amigo.clear(Unknown Source) me.ele.amigo.sdk.AmigoSdk$2.onSucc(Unknown Source) me.ele.amigo.sdk.http.Http$1$3.run(Unknown Source) android.os.Handler.handleCallback(Handler.java:815) android.os.Handler.dispatchMessage(Handler.java:104) android.os.Looper.loop(Looper.java:207) android.os.HandlerThread.run(HandlerThread.java:61)

原因:

provider的authorities在manifest中是applicationId,在代码中是String.format("content://%s.amigo_patch_info_provider/",context.getPackageName()); applicationId 和context.getPackageName()不同时,报上述错误

JackCho commented 7 years ago

thanks for your feedback, @FtheGFW will fix this ASAP

FtheGFW commented 7 years ago

谢谢反馈,不过据我所知,context.getPackageName() 返回值即为我们在 build.gradle里指定的 applicationId,只不过在开发期间我们可以设定 AndroidManifest.xml 根节点上 package 属性为不同于上述 applicationId,使得 aapt 生成的 R.java 的 package name 为前面设定的 package 值,从而当你想有多个 build variant,且设置不同的applicationId的时候,能够不用修改代码,正确引用到R.java 而已,但是在最终构建好的 apk 里 AndroidManifest.xml 的 package 是会被覆盖成为 build.gradle里设置的applicationId,所以按道理,是不会出现你分析出中提出的情况的 @linyuyuan,麻烦你再追踪一下错误信息,帮忙解决这个问题,谢谢了。

FtheGFW commented 7 years ago

sorry... 手误点了 close

AndroidSXK commented 7 years ago

小白看了这么久,还是不会用,好尴尬

JackCho commented 7 years ago

no more info, close this temporarily