Mistakes after building apk

Actions panel views (stock provider and search) fail after generating a signed apk. When I debug an application from Android studio, it works, but when I create a signed apk and install the application on the device, I get errors like this:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setQueryHint(java.lang.CharSequence)' on a null object reference at tm.veriloft.ertir.ui.SearchActivity.onCreateOptionsMenu(Unknown Source) at android.app.Activity.onCreatePanelMenu(Activity.java:2820) at android.support.v4.app.o.onCreatePanelMenu(Unknown Source) at android.support.v7.app.ea(Unknown Source) at android.support.v7.app.ga(Unknown Source) at android.support.v7.widget.as.a(Unknown Source) at android.support.v7.internal.aaj(Unknown Source) at android.support.v7.internal.abrun(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

or

  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.ah.a(android.content.Intent)' on a null object reference at tm.veriloft.ertir.ui.BlogViewActivity.onCreateOptionsMenu(Unknown Source) at android.app.Activity.onCreatePanelMenu(Activity.java:2820) at android.support.v4.app.o.onCreatePanelMenu(Unknown Source) at android.support.v7.app.ea(Unknown Source) at android.support.v7.app.ga(Unknown Source) at android.support.v7.widget.as.a(Unknown Source) at android.support.v7.internal.aaj(Unknown Source) at android.support.v7.internal.abrun(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

I use the latest support libraries and toolbars. (by setting setSupportActionBar(mToolbar) ).

SearchView xml:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ertir="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:title="@string/title_activity_search" ertir:showAsAction="always" ertir:actionViewClass="android.support.v7.widget.SearchView" /> </menu> 

Java

 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search, menu); MenuItem searchItem = menu.findItem(R.id.action_search); mSearchView = (SearchView) searchItem.getActionView(); mSearchView.setQueryHint(getString(R.string.search_hint)); mSearchView.setFocusable(true); mSearchView.setIconified(false); mSearchView.requestFocusFromTouch(); mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mSearchView.clearFocus(); //Hide keyboard search(query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType()); return false; } @Override public boolean onQueryTextChange(String query) { if (searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType().equals("blogs")) searchAfter(1100, query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType()); else search(query, searchTypeArray.get(searchTypeSpinner.getSelectedItemPosition()).getType()); return false; } }); return true; } 

How can i fix this? As stated above, I only get errors after signing apk.

+6
source share
3 answers

This is because you have not configured your progaurd accordingly. In the build.gradle section of the buildTypes and "release" section, change runProguard true to runProguard false and generate a grouped APK and test. If it works well, try learning how to configure progaurd accordingly :)

+4
source

In proguard-rules.pro add the following line to exclude the SearchView class: '-keep class android.support.v7.widget. ** {*; } ', and then create the assembly. I resolved it this way.

+14
source

It works for me

Add the following line to the proguard-rules.pro file located inside the application folder:

-keep class android.support.v7.widget.SearchView {*; }

-1
source

Source: https://habr.com/ru/post/979233/


All Articles