android中代码混淆android.content.res.XmlResourceParser extends or implements program class org.

1、今天运行代码时报如下错误,这个错误找了好久终于解决了,在网上也找了好多方法,但都不是自己想要的。

Warning:library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning:library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlSerializer
Warning:library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.content.res.ColorStateList depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.ColorDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.GradientDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.InsetDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.LayerDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlSerializer
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
Warning:there were 18 instances of library classes depending on program classes.
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
Error:Execution failed for task ':andBase:transformClassesAndResourcesWithProguardForRelease'.

> Job failed, see logs for details

2、其实报错的主要原因是代码混淆了,就是引入的jar包中存在的类,在自己的代码或类库中又重新定义了。

1. 混淆配置

一般情况下,app module 的 build.gradle 文件默认会有如下结构:下面的结构就可以正常运行


android {
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


因为开启混淆会使编译时间变长,所以debug模式下不应该开启。我们需要做的是:

  1. releaseminifyEnabled的值改为true,打开混淆;
  2. 加上shrinkResources true,打开资源压缩。

修改后文件内容如下:

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个用于创建日程提醒的简单Android应用程序的完整Java类和布局文件示例。 布局文件schedule_reminder.xml: ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/title_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:hint="提醒标题" /> <EditText android:id="@+id/desc_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/title_edittext" android:layout_margin="16dp" android:hint="提醒描述" /> <TextView android:id="@+id/time_textview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/desc_edittext" android:layout_margin="16dp" android:text="选择提醒时间" /> <Button android:id="@+id/select_time_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/time_textview" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:text="选择时间" /> <Button android:id="@+id/add_reminder_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/select_time_button" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:text="添加提醒" /> </RelativeLayout> ``` Java类ScheduleReminderActivity.java: ```java import androidx.appcompat.app.AppCompatActivity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.TimePicker; import android.widget.Toast; import java.util.Calendar; public class ScheduleReminderActivity extends AppCompatActivity { private EditText titleEditText, descEditText; private TextView timeTextView; private Button selectTimeButton, addReminderButton; private int hour, minute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.schedule_reminder); titleEditText = findViewById(R.id.title_edittext); descEditText = findViewById(R.id.desc_edittext); timeTextView = findViewById(R.id.time_textview); selectTimeButton = findViewById(R.id.select_time_button); addReminderButton = findViewById(R.id.add_reminder_button); selectTimeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showTimePicker(); } }); addReminderButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { addReminder(); } }); } private void showTimePicker() { final Calendar calendar = Calendar.getInstance(); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); TimePickerDialog timePickerDialog = new TimePickerDialog(ScheduleReminderActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { hour = selectedHour; minute = selectedMinute; timeTextView.setText(String.format("%02d:%02d", hour, minute)); } }, hour, minute, true); timePickerDialog.show(); } private void addReminder() { String title = titleEditText.getText().toString(); String desc = descEditText.getText().toString(); if (title.isEmpty() || desc.isEmpty()) { Toast.makeText(this, "请填写提醒标题和描述", Toast.LENGTH_SHORT).show(); return; } Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); Intent intent = new Intent(ScheduleReminderActivity.this, ReminderReceiver.class); intent.putExtra("title", title); intent.putExtra("desc", desc); PendingIntent pendingIntent = PendingIntent.getBroadcast(ScheduleReminderActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); Toast.makeText(this, "提醒已设置", Toast.LENGTH_SHORT).show(); } } ``` 该应用程序包含一个布局文件和一个Java类。布局文件包含一些文本框和按钮,用于输入提醒标题、描述和时间,并添加提醒。Java类包含与布局文件的控件交互的代码,并使用AlarmManager和BroadcastReceiver来触发提醒。请注意,还需要创建一个ReminderReceiver类,以便在提醒触发时通知用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值