@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
运行总会报错,报错截图如下:

正确写法如下:

当POST请求时,@FormUrlEncoded和@Field简单的表单键值对。两个需要结合使用,否则会报错
@Query请求参数。无论是GET或POST的参数都可以用它来实现

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'.
今天重新搭了一个比较流行的网络框架,但是很不幸的是报错了。
问题一报错信息是:
截图:

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
解决方式:
贴下解决代码(添加加载包参数):
packagingOptions{
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
}1234
问题二 报错信息是:
截图:

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
解决办法:

贴下解决代码:
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的属性去去除错误。
评论