[英]Error due to imageview in android 3.1.2 while generating signed apk
我可以在移动设备中安装调试apk或构建apk,下面是xml,我只使用drawable,而不像drawable-21或24这样,所以请在我的xml文件中查看,我仅使用png图像。 .................................................. .............
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_background">
<ImageView
android:id="@+id/a"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="18dp"
android:src="@drawable/u_text_logo"
app:layout_constraintBottom_toTopOf="@+id/imageView1"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/your_friend"
app:layout_constraintBottom_toTopOf="@+id/imageView3"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="182dp"
android:layout_height="223dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:src="@drawable/web_hi_res"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.578" />
<ProgressBar
android:id="@+id/progressBar3"
android:layout_width="80dp"
android:layout_height="55dp"
android:layout_marginBottom="108dp"
android:layout_marginTop="8dp"
android:padding="1dp"
android:theme="@style/AppTheme.WhiteAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0" />
</android.support.constraint.ConstraintLayout>
但是当我生成签名的apk时,我会像这样崩溃
java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.xxx.xx/xxx.xxx.xx.SplasScreen}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class ImageView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2455)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2515)
at android.app.ActivityThread.access$1000(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5571)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class ImageView
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.ag.b(Unknown Source)
at android.support.v7.app.r.setContentView(Unknown Source)
at hemanth.com.vtuquestionpaper2017.SplasScreen.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:6357)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408)
... 9 more
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class ImageView
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:786)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:708)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:839)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:802)
at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
... 17 more
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.at.d()' on a null object reference
at android.support.v7.widget.AppCompatImageView.setImageDrawable(Unknown Source)
at android.widget.ImageView.<init>(ImageView.java:154)
at android.widget.ImageView.<init>(ImageView.java:140)
at android.support.v7.widget.AppCompatImageView.<init>(Unknown Source)
at android.support.v7.widget.AppCompatImageView.<init>(Unknown Source)
at android.support.v7.app.av.a(Unknown Source)
at android.support.v7.app.ag.a(Unknown Source)
at android.support.v7.app.ag.onCreateView(Unknown Source)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
... 21 more
仅因为proguard从代码中删除了一些有用的类或方法,才在仅发行版本中创建此问题。
您可以阅读和了解Google开发文档中的 proguard规则。 或基础
现在,您可以将此规则添加到您的proguard-rules.pro文件中
-keep class android.support.v7.widget.** { *; }
添加此规则后,尝试清理构建并发布apk。
这是proguard-rules.pro
我也告诉你捷径;)
删除proguard设置,以便android不会删除任何用于缩小代码的类。 在您的应用程序级别build.gradle
更改如下
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
对此
buildTypes {
release {
}
}
然后同步并构建apk。 它应该运行。
更新
Proguard是免费的Java类文件收缩器,优化器,混淆器和预验证器。 它检测并删除未使用的类,字段,方法和属性。 它优化字节码并删除未使用的指令。 它使用简短的无意义名称重命名其余的类,字段和方法。
尝试在活动的onCreate()方法中添加以下行:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
将以下属性添加到XML中的ImageView中:
app:srcCompact
而不是android:src 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.