在 minifyEnabled true 后启动应用程序时出现 NumberFormatException
Posted
技术标签:
【中文标题】在 minifyEnabled true 后启动应用程序时出现 NumberFormatException【英文标题】:NumberFormatException while starting app after minifyEnabled true 【发布时间】:2017-05-31 06:14:44 【问题描述】:我正在寻找解决这个问题的方法:
01-16 12:29:55.975 1199-1334/com.zztproject.curlife E/androidRuntime: FATAL EXCEPTION: Thread-16992
Process: com.zztproject.curlife, PID: 1199
java.lang.NumberFormatException: Invalid int: "null"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.zztproject.curlife.HomeActivity$a.run(Unknown Source)
我发现这个问题是由 minifyEnabled true 引起的。我的 gradle 文件(片段):
buildTypes
debug
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
release
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
exclude group: 'com.android.support', module: 'support-annotations'
)
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.android.support:design:25.0.0'
testCompile 'junit:junit:4.12'
compile 'com.android.support:gridlayout-v7:25.0.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.android.volley:volley:1.0.0'
compile group: 'com.koushikdutta.urlimageviewhelper', name: 'urlimageviewhelper', version: '1.0.4'
还有我的 proguard-rules.pro:
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe *;
-keep class com.google.gson.examples.android.model.** *;
-keepclassmembers class com.zztprojects.curlife
public *;
这是我的项目结构:
请帮我解决这个问题,我尝试了很多我在 *** 上找到的东西都没有成功。
编辑: 我来自 HomeActivity 的空值:
private void publishProgressEvents(final Event mEvent)
runOnUiThread(new Runnable()
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = null;
LinearLayout container = null;
ImageView logo = null;
TextView name = null;
TextView timePlace = null;
String timePlaceInfo;
TextView description = null;
LinearLayout list = (LinearLayout) findViewById(R.id.listEventsHome);
Events event;
ImageView photo;
@Override
public void run()
...
container.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
if(event.eventUrl != "" && event.eventUrl != null)
goToUrlOfEvent(event.eventUrl);
);
EDIT2:现在错误显示这一行:
for (int counter = 0; counter < Integer.parseInt(number.number); counter++)
EDIT3:我的 EventsNumber 类:
private class EventsBumber
@SerializedName("number")
Integer number;
【问题讨论】:
NumberFormatException: Invalid int: "null"
显示代码
您的HomeActivity.java
文件中似乎引发了此异常。可以分享一下吗?
@IntelliJAmiya 我没有来自 HomeActicity 的特定行会导致问题。
这个文件很大,还是只是run()方法?
@AnkushBist minifyEnabled 为 false 时没有问题。
【参考方案1】:
我只需要添加这一行 @SerializedName("number")
之前Integer number;
最后这个片段:
@SerializedName("number")
Integer number;
【讨论】:
以上是关于在 minifyEnabled true 后启动应用程序时出现 NumberFormatException的主要内容,如果未能解决你的问题,请参考以下文章
使用 minifyEnabled true 启动应用程序时 FirebaseInitProvider.onCreate 中的 java.lang.IncompatibleClassChangeErro
将 minifyEnabled 设置为 true 后,我收到以下错误 [重复]
生成带有 minifyEnabled 设置为 true 的签名 APK 后,firebase UI 输出空白
Android proguard minifyEnabled true + multidex = error
NotSerializableException: kotlin.UNINITIALIZED_VALUE 设置 minifyEnabled 后为 true