首页 Android正文

Android实战中的BUG收集记录(持续更新。。。)

yuange Android 2020-12-30 2026 0 Android的BUG收集

@Field parameters can only be used with form encoding

今天在学习Retrofit的时候,当post请求时

public interface NewsDataService{
    @POST("news/list")
    Call<NewsData> getNewsData(@Field("key") String key);
}12345

运行总会报错,报错截图如下:

image.png

正确写法如下:

image.png

当POST请求时,@FormUrlEncoded和@Field简单的表单键值对。两个需要结合使用,否则会报错

@Query请求参数。无论是GET或POST的参数都可以用它来实现

image.png


Android中设置theme无效

android:theme="@style/MyStyle"
<style name="MyStyle" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:windowBackground">@color/voice_transparent</item><item name="android:windowIsTranslucent">true</item></style>

 

给Activity指定theme时无效,可能是因为代码错误,如布局资源引入错误、颜色设置错误等

如果这些都没问题,那很有可能是项目其他module中有一个同名的style文件

例如:A  module中有一个style的名称是

name="MyStyle"

B  module中有一个style的名称也是:

name="MyStyle"

所以当设置style之后,效果异常,可以从这个方向去排查问题

正式打包后Gson解析为null

直接在手机运行apk,Gson解析正常,数据显示正常

Build APKs 也可以正常运行,但是,正式打包签名后,Gson解析为null

这是混淆的问题,javabean被混淆后,无法正常解析

-dontwarn com.google.gson.**-keep class com.google.gson.** { *; }-keepattributes Signature-keepattributes *Annotation*-keep class sun.misc.Unsafe { *; }-keep class com.sensorpanel.bean.** { *; }

注意,最后一行bean是当前目录的包名,当前bean目录下javabean避免混淆


Failed to find provider info for com.xxx.xxx(authorities)

今天在写ContentPrivider的时候遇到一个bug,记录下,当我运行程序的时候一直报错:Failed to find provider info for com.zhoujian.contentPrivider.bookprivider,这个是在内容提供者的唯一标识,要在清单文件中配置的,也就是authorities

<providerandroid:name="com.zhoujian.contentprivider.privider.BookPrivider"android:process=":privider"android:permission="com.bookprivider"                            android:authorities="com.zhoujian.contentPrivider.bookprivider"/>12345

最后发现是sql语句的错误

正确写法:
mDatabase.execSQL(“insert into book values(1,’操作系统课程’);”);
mDatabase.execSQL(“insert into book values(2,’计算机网络’);”);
mDatabase.execSQL(“insert into book values(3,’计算机系统结构’);”);

要加上单引号

mDatabase.execSQL(“insert into book values(1,’操作系统课程’);”);

错误写法

mDatabase.execSQL(“insert into book values(1,操作系统课程);”);

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

今天重新搭了一个比较流行的网络框架,但是很不幸的是报错了。
问题一报错信息是:
截图:
image.png

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
    > com.android.build.api.transform.TransformException:     com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.7.2\84ffa765dd258dbab8695963c41308b054f3a1cb\jackson-databind-2.7.2.jar
    File2: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.7.0\19f42c154ffc689f40a77613bc32caeb17d744e3\jackson-annotations-2.7.0.jar
    File3: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.7.2\8b8310381b690e317f5f0574e9b2dd7034778b4c\jackson-core-2.7.2.jar12345

解决方式:
image.png贴下解决代码(添加加载包参数):

   packagingOptions{
        exclude 'META-INF/NOTICE' // will not include NOTICE file
        exclude 'META-INF/LICENSE' // will not include LICENSE file
    }1234

问题二 报错信息是:
截图:
image.png

    Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
    > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
    File1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.4\cbcf91e47e43607fb628b11b3571f212f11a6f84\rxjava-2.0.4.jar
    File2: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.1.5\ece7b5d0870e66d8226dab6dcf47a2b12afff061\rxjava-1.1.5.jar1234

解决办法:
image.png

贴下解决代码:

     packagingOptions{
        exclude 'META-INF/NOTICE' // will not include NOTICE file
        exclude 'META-INF/LICENSE' // will not include LICENSE file
        exclude 'META-INF/rxjava.properties'
    }12345

总结:其实从上面可以看出,当出现加载包重复的时候,我们可以添加META_INF的属性去去除错误


评论

在线客服-可直接交谈

您好!有什么需要可以为您服务吗?