Меню

Com google android inputmethod latin ошибка

Asked
11 years, 8 months ago

Viewed
3k times

I have got this type of memory exception some times on my apps, any body have idea about why this exception is occurred ?

E/ActivityThread(  390): Failed to find provider info for com.google.settings
E/ActivityThread(  390): Failed to find provider info for com.google.settings
I/ActivityThread(  390): Publishing provider com.android.globalsearch.SuggestionProvider: com.android.globalsearch.SuggestionProvider
W/ActivityManager(   51): Timeout executing service: ServiceRecord{439b4c30 com.android.inputmethod.latin/.LatinIME}
I/ActivityManager(   51): ANR in process: com.android.inputmethod.latin
I/ActivityManager(   51): Annotation: Executing service ComponentInfo{com.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME}
I/ActivityManager(   51): CPU usage:
I/ActivityManager(   51): Load: 2.07 / 0.89 / 0.35
I/ActivityManager(   51): CPU usage from 27357ms to 1782ms ago:
I/ActivityManager(   51):   system_server: 10% = 3% user + 6% kernel / faults: 8566 minor 447 major
I/ActivityManager(   51):   com.babbleville: 6% = 1% user + 4% kernel / faults: 3031 minor 188 major
I/ActivityManager(   51):   com.android.inputmethod.latin: 5% = 0% user + 4% kernel / faults: 6296 minor 473 major
I/ActivityManager(   51):   com.android.phone: 2% = 0% user + 2% kernel / faults: 3052 minor 101 major
I/ActivityManager(   51):   adbd: 0% = 0% user + 0% kernel
I/ActivityManager(   51):   logcat: 0% = 0% user + 0% kernel / faults: 291 minor 6 major
I/ActivityManager(   51):   zygote: 0% = 0% user + 0% kernel / faults: 70 minor 3 major
I/ActivityManager(   51):   pdflush: 0% = 0% user + 0% kernel
I/ActivityManager(   51):   servicemanager: 0% = 0% user + 0% kernel / faults: 16 minor 4 major
I/ActivityManager(   51):   logcat: 0% = 0% user + 0% kernel / faults: 290 minor 7 major
I/ActivityManager(   51):   qemud: 0% = 0% user + 0% kernel / faults: 272 minor 3 major
I/ActivityManager(   51):  +android.process.acore: 0% = 0% user + 0% kernel
I/ActivityManager(   51): TOTAL: 100% = 9% user + 30% kernel + 59% iowait + 0% irq + 0% softirq
I/ActivityManager(   51): Removing old ANR trace file from /data/anr/traces.txt
I/Process (   51): Sending signal. PID: 384 SIG: 3
I/dalvikvm(  384): threadid=7: reacting to signal 3
I/Process (   51): Sending signal. PID: 51 SIG: 3
I/dalvikvm(   51): threadid=7: reacting to signal 3
I/dalvikvm(  384): Wrote stack trace to '/data/anr/traces.txt'
I/ActivityThread(  390): Publishing provider com.android.globalsearch.stats: com.android.globalsearch.StatsProvider
I/ActivityThread(  390): Publishing provider contacts;call_log: com.android.providers.contacts.ContactsProvider
I/dalvikvm(   51): Wrote stack trace to '/data/anr/traces.txt'
I/Process (   51): Sending signal. PID: 390 SIG: 3
I/dalvikvm(  390): threadid=7: reacting to signal 3
I/Process (   51): Sending signal. PID: 358 SIG: 3
I/dalvikvm(  358): threadid=7: reacting to signal 3
I/dalvikvm(  390): Wrote stack trace to '/data/anr/traces.txt'
I/dalvikvm(  358): Wrote stack trace to '/data/anr/traces.txt'
I/Process (   51): Sending signal. PID: 92 SIG: 3
I/dalvikvm(   92): threadid=7: reacting to signal 3
I/dalvikvm(   92): Wrote stack trace to '/data/anr/traces.txt'

asked May 10, 2011 at 6:15

Nirav Modh's user avatar

Nirav ModhNirav Modh

7571 gold badge8 silver badges18 bronze badges

==> ANR in process: com.android.inputmethod.latin
latin ime maybe blocked, find «message history» in your log or get /data/anr/traces.txt to know which process/thread is busy?
And from:
TOTAL: 100% = 9% user + 30% kernel + 59% iowait + 0% irq + 0% softirq

iowait is hight: maybe file read/write in busy status

answered May 22, 2012 at 9:36

hxc's user avatar

hxchxc

8883 gold badges13 silver badges27 bronze badges

Gboard kept crashing when trying to open the settings, so I wanted to uninstall and reinstall it. Google Play Store kept giving me the error code 910, the advice for that was installing it with ADB.

The command

adb install -r /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk

gives me the output

Failed to install /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.google.android.inputmethod.latin without first uninstalling package running as com.android.inputmethod.latin]

This is weird, since with the -r flag it should have no problem with an app that is already installed. Apart from that, it is not installed, I checked the app list, the /system/app directory, as well as /data/data. And when I run

adb uninstall com.google.android.inputmethod.latin

, the output is:

Exception occurred while dumping:
java.lang.IllegalArgumentException: Unknown package: com.google.android.inputmethod.latin
    at com.android.server.pm.Settings.isOrphaned(Settings.java:4134)
    at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:18419)
    at com.android.server.pm.PackageManagerService.deletePackage(PackageManagerService.java:15836)
    at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:888)
    at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
    at android.os.ShellCommand.exec(ShellCommand.java:94)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18682)
    at android.os.Binder.shellCommand(Binder.java:468)
    at android.os.Binder.onTransact(Binder.java:367)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2387)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3150)
    at android.os.Binder.execTransact(Binder.java:565)

So what can I do to install GBoard again?

Fairphone 2, Android 7.1.2, «Fairphone Open», root enabled

У меня почти 6000 данных в локальной базе данных. На одном фрагменте я получаю одно поле, то есть «Код EAN» из этой записи, что составляет почти 6000. Теперь я установил эти данные в ArrayList. После этого я установил этот ArrayList в адаптере AutoTextCompleteView. Когда я ищу, я AutoTextCompleteView и через некоторое время зависает моя страница. Мой фрагмент не отвечает. Я смущен, это связано с тяжелыми данными или чем-то еще. Пожалуйста помоги.

Код:

if (getCodeType.equals("art")) {
        modelProductCodeList = databaseHelper.getProductsArticleCode();

        for (int k = 0; k < modelProductCodeList.size(); k++) {
            productCodeList.add(modelProductCodeList.get(k).getArticle_code());

        }
        actSearchCode.setAdapter(null);
        adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, android.R.id.text1, productCodeList);
        actSearchCode.setAdapter(adapter);

    }


    rgGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {


            if (i == R.id.rdbArticleCode) {


                actSearchCode.setText("");
                getCodeType = "art";

                modelProductCodeList = databaseHelper.getProductsArticleCode();

                databaseHelper.close();
                productCodeList.clear();

                for (int k = 0; k < modelProductCodeList.size(); k++) {
                    productCodeList.add(modelProductCodeList.get(k).getArticle_code());
                }

                actSearchCode.setAdapter(null);
                adapter = new ArrayAdapter<String>(getActivity(),
                        android.R.layout.simple_list_item_1, android.R.id.text1, productCodeList);
                actSearchCode.setAdapter(adapter);


            } else if (i == R.id.rdbEANCode) {

                actSearchCode.setText("871128");

                getCodeType = "ean";
                modelProductCodeList = databaseHelper.getProductsEANCode();
                databaseHelper.close();
                productCodeList.clear();
                for (int k = 0; k < modelProductCodeList.size(); k++) {
                    productCodeList.add(modelProductCodeList.get(k).getEan_code());

                }

                actSearchCode.setAdapter(null);
                adapter = new ArrayAdapter<String>(getActivity(),
                        android.R.layout.simple_list_item_1, android.R.id.text1, productCodeList);
                actSearchCode.setAdapter(adapter);

            }

        }
    });


    actSearchCode.setThreshold(3);
    actSearchCode.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
                    Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(actSearchCode.getApplicationWindowToken(), 0);


            Fragment fragment = new ProductDetailFragment();
            FragmentManager fragmentManager = getFragmentManager(); // this is basically context of the class
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            Bundle bundle = new Bundle();
            bundle.putString("product_art", (String) adapterView.getItemAtPosition(i));
            bundle.putString("source_type", getCodeType);

            fragment.setArguments(bundle);
            fragmentTransaction.replace(R.id.frame, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

        }
    });

Весь код фрагмента

public class SearchProductFragment extends Fragment implements View.OnClickListener {


ImageButton imgBarcodeScan;
AutoCompleteTextView actSearchCode;
RadioButton rdbArticleCode, rdbEANCode;
RadioGroup rgGroup;
ImageView imgClose,imgSourceClose;
String getCodeType = "art";
DatabaseHelper databaseHelper;

ArrayList<ModelProductDetail> modelProductArticleCodeList;
ArrayList<ModelProductDetail> modelProductCodeList;
ArrayList<ModelUnrecognisedCode> modelUnrecognisedCodeArrayList;
ArrayList<ModelProductDetail> singleProductDetailList;
ArrayList<ModelUnrecognisedCode> singleUnrecognisedCheck;


List<String> productCodeList;

private ZBarScannerView scannerView;
private LayoutInflater mInflater;
private ViewGroup mContainer;
ViewGroup placeholder;
private static final int REQUEST_CAMERA = 1;

String article_code;
Boolean unrecognised_alert;
String unrecognised_code = "";

ArrayAdapter<String> adapter;
int codeValue;

KeyEvent keyevent;

// scan code

ScanDevice sm;
private final static String SCAN_ACTION = "scan.rcv.message";
private String barcodeStr = "";

private BroadcastReceiver mScanReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        byte[] barocode = intent.getByteArrayExtra("barocode");
        int barocodelen = intent.getIntExtra("length", 0);
        byte temp = intent.getByteExtra("barcodeType", (byte) 0);
        android.util.Log.i("debug", "----codetype--" + temp);
        barcodeStr = new String(barocode, 0, barocodelen);

        Log.e("TAG", " barcodeStr" + barcodeStr);


        //   showScanResult.setText(barcodeStr);
        sm.stopScan();

        codeValue = 1;

        if (! (barcodeStr.equals(""))){


            singleProductDetailList = databaseHelper.getProductByEANCode(barcodeStr);

            if (singleProductDetailList.size() != 0){

                Fragment fragment = new ProductDetailFragment();
                FragmentManager fragmentManager = getFragmentManager(); // this is basically context of the class
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                Bundle bundle = new Bundle();
                bundle.putString("product_art", barcodeStr);
                bundle.putString("source_type", "ean");

                fragment.setArguments(bundle);
                fragmentTransaction.replace(R.id.frame, fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }
            else {

                singleUnrecognisedCheck = new ArrayList<>();

                singleUnrecognisedCheck = databaseHelper.getUnrecognisedByCode(barcodeStr);


                Vibrator vibrator = (Vibrator) context.getSystemService(context.VIBRATOR_SERVICE);
                vibrator.vibrate(1000);

                MediaPlayer mp = MediaPlayer.create(context, R.raw.beep);
                mp.start();

                if (singleUnrecognisedCheck.size() == 0){

                    getDialog();
                }
                else {
                    Toast.makeText(getActivity(),R.string.unrecognised_code_has_been_added, Toast.LENGTH_SHORT).show();
                }


            }

        }




    }

};



@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_search_product, container, false);

    mInflater = inflater;
    mContainer = container;

    getIntializedID(v);
    placeholder = (ViewGroup) v;

    return placeholder;

}


private void getIntializedID(View view) {

    //scan device code
     sm = new ScanDevice();
    //

    imgBarcodeScan = (ImageButton) view.findViewById(R.id.imgBarcodeScan);
    rgGroup = (RadioGroup) view.findViewById(R.id.rgGroup);
    actSearchCode = (AutoCompleteTextView) view.findViewById(R.id.actSearchCode);
    imgClose = (ImageView) view.findViewById(R.id.imgClose);
    imgSourceClose = (ImageView) view.findViewById(R.id.imgSourceClose);

    databaseHelper = new DatabaseHelper(getActivity());
    modelProductCodeList = new ArrayList<>();
    productCodeList = new ArrayList<>();
    singleProductDetailList = new ArrayList<>();

    imgBarcodeScan.setOnClickListener(this);
    imgClose.setOnClickListener(this);

    // new chnage in code
    actSearchCode.setText("");
    actSearchCode.setAdapter(null);



    actSearchCode.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
            //do nothing

            if (actSearchCode.getText().length() == 0){

                if (getCodeType.equals("ean")){

                    actSearchCode.setText("871128");

                }
                else{
                    actSearchCode.setText("");
                }

            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            //do nothing
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (s.length() != 0) {
                imgClose.setVisibility(View.VISIBLE);
                imgSourceClose.setVisibility(View.GONE);

            } else {
                imgClose.setVisibility(View.GONE);
                imgSourceClose.setVisibility(View.VISIBLE);

            }
        }
    });




    adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, android.R.id.text1, productCodeList);
    actSearchCode.setAdapter(adapter);




    // sample code barcode



}

public void changeFragments(Fragment fragment) {
    FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.frame, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

@Override
public void onClick(View view) {


    if (view.getId() == R.id.imgBarcodeScan) {

        //MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.beep);
        // mp.start();
        //scanCode(view);
       // onKeyDown(301, keyevent);

     Intent in = new Intent(getActivity(), ScanActivity.class);
     startActivity(in);
    }

    else if (view.getId() == R.id.imgClose){

        if (getCodeType.equals("ean")){

            actSearchCode.setText("871128");
        }
        else {
            actSearchCode.setText("");
        }
    }


}


@Override
public void startActivityForResult(Intent intent, int requestCode) {
    super.startActivityForResult(intent, requestCode);

}


private void getDialog() {

    final Dialog d = new Dialog(getActivity());
    d.setContentView(R.layout.dialog_unrecognised_code);
    d.setCanceledOnTouchOutside(false);
    d.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

    final EditText etCode = (EditText) d.findViewById(R.id.etCode);
    final EditText etrecognisedComment = (EditText) d.findViewById(R.id.etrecognisedComment);
    ImageView imgClose = (ImageView) d.findViewById(R.id.imgClose);
    ImageButton ibSubmit = (ImageButton) d.findViewById(R.id.ibSubmit);

    if (codeValue == 1){
        etCode.setText(barcodeStr);
    }else if (codeValue == 2) {
        etCode.setText(unrecognised_code);

    }

    imgClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            KEY_UNRECOGNISED_CODE = "";
            d.dismiss();
        }
    });


    ibSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            SessionManager session = new SessionManager(getContext().getApplicationContext());
            HashMap<String, String> user = session.getSelectedShopDetail();

            ModelUnrecognisedCode modelUnrecognisedCode = new ModelUnrecognisedCode();
            modelUnrecognisedCode.setUnrecognised_code(etCode.getText().toString());
            modelUnrecognisedCode.setUnrecognised_comment(etrecognisedComment.getText().toString());
            modelUnrecognisedCode.setShop_id(user.get("shop_id"));
            modelUnrecognisedCode.setShop_name_fr(user.get("shop_name_fr"));
            modelUnrecognisedCode.setShop_name_nl(user.get("shop_name_nl"));

            databaseHelper.addUnrecognisedCode(modelUnrecognisedCode);

            // changeFragments(new SearchProductFragment());

            modelUnrecognisedCodeArrayList = new ArrayList<>();
            modelUnrecognisedCodeArrayList = databaseHelper.getUnrecognisedCode();

            Toast.makeText(getActivity(), R.string.unrecognised_code_added_in_cart,Toast.LENGTH_SHORT).show();

            KEY_UNRECOGNISED_CODE = "";
            d.dismiss();

        }
    });


    d.show();


}



public void onKeyDown(int keyCode, KeyEvent event) {

    int charCode = event.getKeyCode();

    System.out.println("charCode = " + keyCode +"  "+event);
    //sm.openScan();

    if (charCode == 302 || charCode == 301 || charCode == 303) {

        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
                Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(actSearchCode.getApplicationWindowToken(), 0);

        System.out.println("openScannerL = " + sm.getOutScanMode());

        sm.openScan();

    } else if (charCode == 82) {

    } else {
        sm.closeScan();
    }

}


@Override
public void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    if (sm != null) {
        sm.stopScan();
    }
    getActivity().unregisterReceiver(mScanReceiver);
}

@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();


    IntentFilter filter = new IntentFilter();
    filter.addAction(SCAN_ACTION);
    getActivity().registerReceiver(mScanReceiver, filter);



    // article code start

    modelProductCodeList.clear();
    productCodeList.clear();


    if (getCodeType.equals("art")) {

        modelProductCodeList.clear();
        productCodeList.clear();


        modelProductCodeList = databaseHelper.getProductsArticleCode();

        for (int k = 0; k < modelProductCodeList.size(); k++) {
            productCodeList.add(modelProductCodeList.get(k).getArticle_code());

        }


    }


    rgGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {


            if (i == R.id.rdbArticleCode) {


                actSearchCode.setText("");
                getCodeType = "art";

                modelProductCodeList.clear();
                productCodeList.clear();


                modelProductCodeList = databaseHelper.getProductsArticleCode();

                databaseHelper.close();


                for (int k = 0; k < modelProductCodeList.size(); k++) {
                    productCodeList.add(modelProductCodeList.get(k).getArticle_code());
                }


              adapter.notifyDataSetChanged();


            } else if (i == R.id.rdbEANCode) {

                actSearchCode.setText("871128");

                getCodeType = "ean";

                modelProductCodeList.clear();
                productCodeList.clear();

                modelProductCodeList = databaseHelper.getProductsEANCode();
                databaseHelper.close();

                for (int k = 0; k < modelProductCodeList.size(); k++) {
                    productCodeList.add(modelProductCodeList.get(k).getEan_code());

                }

               adapter.notifyDataSetChanged();

            }

        }
    });


    actSearchCode.setThreshold(3);
    actSearchCode.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
                    Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(actSearchCode.getApplicationWindowToken(), 0);


            Fragment fragment = new ProductDetailFragment();
            FragmentManager fragmentManager = getFragmentManager(); // this is basically context of the class
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            Bundle bundle = new Bundle();
            bundle.putString("product_art", (String) adapterView.getItemAtPosition(i));
            bundle.putString("source_type", getCodeType);

            fragment.setArguments(bundle);
            fragmentTransaction.replace(R.id.frame, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

        }
    });



    //end




    if (!(KEY_UNRECOGNISED_CODE.equals(""))) {



        if (!(KEY_SOURCE_CODE.equals(""))){

            Fragment fragment = new ProductDetailFragment();
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); // this is basically context of the class
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            Bundle bundle = new Bundle();

            bundle.putString("product_art",KEY_UNRECOGNISED_CODE);
            bundle.putString("source_type", KEY_SOURCE_CODE);

            fragment.setArguments(bundle);
            fragmentTransaction.replace(R.id.frame, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

            KEY_SOURCE_CODE = "";
            KEY_UNRECOGNISED_CODE = "";

        }
        else {
            unrecognised_code = KEY_UNRECOGNISED_CODE;

            codeValue = 2;
            getDialog();
        }
    }


    if (getArguments() != null) {

        unrecognised_alert = getArguments().getBoolean("unrecognised_alert");

    }

}


@Override
public void onDestroyView() {
    super.onDestroyView();
}

}

Gboard kept crashing when trying to open the settings, so I wanted to uninstall and reinstall it. Google Play Store kept giving me the error code 910, the advice for that was installing it with ADB.

The command

adb install -r /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk

gives me the output

Failed to install /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.google.android.inputmethod.latin without first uninstalling package running as com.android.inputmethod.latin]

This is weird, since with the -r flag it should have no problem with an app that is already installed. Apart from that, it is not installed, I checked the app list, the /system/app directory, as well as /data/data. And when I run

adb uninstall com.google.android.inputmethod.latin

, the output is:

Exception occurred while dumping:
java.lang.IllegalArgumentException: Unknown package: com.google.android.inputmethod.latin
    at com.android.server.pm.Settings.isOrphaned(Settings.java:4134)
    at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:18419)
    at com.android.server.pm.PackageManagerService.deletePackage(PackageManagerService.java:15836)
    at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:888)
    at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
    at android.os.ShellCommand.exec(ShellCommand.java:94)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18682)
    at android.os.Binder.shellCommand(Binder.java:468)
    at android.os.Binder.onTransact(Binder.java:367)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2387)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3150)
    at android.os.Binder.execTransact(Binder.java:565)

So what can I do to install GBoard again?

Fairphone 2, Android 7.1.2, «Fairphone Open», root enabled

Gboard kept crashing when trying to open the settings, so I wanted to uninstall and reinstall it. Google Play Store kept giving me the error code 910, the advice for that was installing it with ADB.

The command

adb install -r /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk

gives me the output

Failed to install /home/fabian/Downloads/com.google.android.inputmethod.latin_7.9.7.230658658-release-armeabi-v7a-26790713_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.google.android.inputmethod.latin without first uninstalling package running as com.android.inputmethod.latin]

This is weird, since with the -r flag it should have no problem with an app that is already installed. Apart from that, it is not installed, I checked the app list, the /system/app directory, as well as /data/data. And when I run

adb uninstall com.google.android.inputmethod.latin

, the output is:

Exception occurred while dumping:
java.lang.IllegalArgumentException: Unknown package: com.google.android.inputmethod.latin
    at com.android.server.pm.Settings.isOrphaned(Settings.java:4134)
    at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:18419)
    at com.android.server.pm.PackageManagerService.deletePackage(PackageManagerService.java:15836)
    at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:888)
    at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:792)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:118)
    at android.os.ShellCommand.exec(ShellCommand.java:94)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:18682)
    at android.os.Binder.shellCommand(Binder.java:468)
    at android.os.Binder.onTransact(Binder.java:367)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2387)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3150)
    at android.os.Binder.execTransact(Binder.java:565)

So what can I do to install GBoard again?

Fairphone 2, Android 7.1.2, «Fairphone Open», root enabled

Добрый день.

Несколько месяцев назад команда cyanogenmod стала понемногу выкладывать билды 12 версии своего одноименного детища, основанного на коде Android 5 Lollipop. В начале года, наконец-то, дошла очередь и до Nexus 4. Не откладывая в долгий ящик я прошил одним из первых ночников. Конечно все еще сыровато, то и дело там и сям наблюдаются непереведенные строки, далеко не все цианогеновские фишки присутствуют, но мы то

упоротые фанаты цианогена

знаем, что все это мелочи и с каждым новым билдом ситуация будет все улучшаться.

В принципе, текущий ночник, а на момент написания статьи это билд от 18-го числа, вполне юзабелен. Все заявленные функции Nexus 4 работают штатно, стохастических ребутов и бутлупов не наблюдается. Но… «не было печали — купила баба поросят»

Елозим пальцем…

Как всем известно, Android5 имеет замечательный плоский дизайн, именуемый корпорацией добра Material Design и многим, как и мне он чертовски нравится и возникает непреодолимое желание чтобы все сторонние приложения выглядели так же. К сожалению не все разработчики поспевают за прогрессом, исключением не явилась и клавиатура Swype, которую я использую уже несколько лет, начиная с самых первых бетаверсий.

Если кто-то не в курсе, поясню: команда Swype Inc. несколько лет назад предложила революционный способ ввода текста для мобильных устройств, который позволяет набирать слова практически не отрывая палец от экрана и выпустила одноименное приложение Swype, реализующее этот метод.

Позже появилось еще несколько реализаций: Slide IT, SwiftKey, а в Android 4.2 и штатная клавиатура получила искомый функционал. Но все это, на мой взгляд, было не то, хоть и некоторые из подражателей снискали себя немалую армию фанатов.

А не сменить ли мне клавиатуру…

Некоторое время назад мне на глаза попался обзор клавиатуры из пятого андроида, и отзывы оказались на удивление положительными, а принимая во внимание, что она оформлена в духе Material Design, и что Swype пока не озаботился новой темой (да и тяжелый он, откровенно говоря), было принято решение перейти на клавиатуру Google и потестить-посмотреть.

Итак, на телефоне был установлен билд от 15-го января (cm-12-20150115-NIGHTLY-mako.zip), я отключаю Swype и включаю клавиатуру AOSP. В настройках включен «Непрерывный ввод». Пробуем… и облом 🙁 Непрерывный ввод не работает. Ну что ж, видимо сырость прошивки всему виной (а если бы сразу загуглил, то и статьи, наверняка, не было бы 🙂 ) Я не стал отчаиваться и установил из маркета клавиатуру Google как отдельное приложение. И возрадовался. Она действительно оказалась неплоха. Огорчал только тот факт, что установлены, по сути, две одинаковых клавиатуры, они жрут место и вообще… Не ТРУЪ короче, но делать нечего, ждем свежий билд CM12. Да, нужно сказать, что все остальные способы ввода, кроме голосового я отключил, чтобы не маячили.

О! а вот и билд! cm-12-20150118-NIGHTLY-mako.zip. Установил конечно, порадовался появившейся возможности кастомизации плиток в панели уведомлений, но при попытке включить клавиатуру AOSP получил странную ошибку:

«Это точно какой-то конфликт» — подумал Штирлиц, и удалил клавиатуру Google, установленную из маркета. Оглядываясь сейчас назад я не могу сказать точно, что мной двигало, возможно, всему виной поздний вечер, и уже плохо соображающая голова. Не знаю. Но факт есть факт: Я остался с одним голосовым вводом facepalm

Я снова и снова пытался вызвать диалог смена раскладки, но безжалостный CM покрывал меня матюками на Java:

Ознакомиться с матюками

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.Settings$InputMethodAndLanguageSettingsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.preference.PreferenceCategory.removePreference(android.preference.Preference)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5255)
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:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.preference.PreferenceCategory.removePreference(android.preference.Preference)' on a null object reference
at com.android.settings.inputmethod.InputMethodAndLanguageSettings.onCreate(InputMethodAndLanguageSettings.java:179)
at android.app.Fragment.performCreate(Fragment.java:2031)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:863)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.app.BackStackRecord.run(BackStackRecord.java:833)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452)
at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:483)
at com.android.settings.SettingsActivity.switchToFragment(SettingsActivity.java:956)
at com.android.settings.SettingsActivity.onCreate(SettingsActivity.java:582)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2264)
... 10 more

И тебя вылечим, и меня вылечим

Гугление показало, что от этого недуга пострадал не только я. Еще пара человек так же не смогли сменить способ ввода штатными средствами, причем и на Nexus 5 тоже. Значит дело все таки в новом билде CM, поломали таки цианогеновцы что-то в коде. Пофиксят конечно, но до этого момента еще дожить надо, как-то еще вконтактик и воцапчик писать все это время нужно. Значит будем чинить.

Починение, кстати, не сложное, если знать куда бить. А бить вот куда:

  • Включаем в опциях разработчика root доступ для ADB, если не был включен
  • Разрешаем там же отладку
  • Подключаем телефон к компьютеру по USB или юзаем WiFi ADB — это уж кому как удобнее.
  • Соединяемся ADB шеллом с телефоном и получаем привилегированный доступ
    C:ADB> adb shell 
    $ su
  • Выполняем одну хитрую команду
    # ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
  • PROFIT!

Таким образом, кстати, можно включить любую другую, только предварительно нужно просмотреть список возможных способов ввода:

# ime list -a

Дык а с непрерывным вводом-то что?

Уффф… Возможность вводить текст восстановлена, но проблема свайпа в родной клавиатуре так и не решена. И гугление таки дало решение:
Если непрерывный ввод не работает, то нужно любым файловым менеджером с root-доступом зайти в /system/lib/ и переименовать там библиотеку libjni_latinime.so на libjni_latinimegoogle.so и перезагрузить телефон.

… И морды эти еще противные

Ну и раз пошла такая пьянка, решил до кучи еще «разобраться» со смайлами, ибо штатные кроме рвотного рефлекса ничего не вызывают:

Мрак, адъ и Израиль.

Здесь в общем-то все просто, нужно установить Emoji Switcher и изменить иконки смайлов на набор IOS. Теперь смайлы выглядят так:

За сим все, надеюсь кому-то был полезен.
ТЫДЫЩ!!!
image

PS: Только что установил билд от 19-го числа. Проблема с выбором способа ввода до сих пор не решена.

UPD
Свежие новости: в билде от 20-го числа проблема решена. Кстати, после установки нового ночника, библиотеку libjni_latinime.so нужно снова переименовывать. Неудобненько 🙁

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account


Closed

naXa777 opened this issue

Jan 6, 2017

· 21 comments


Closed

GBoard Preferences app keeps crashing

#116

naXa777 opened this issue

Jan 6, 2017

· 21 comments

Comments

@naXa777

I have a Nexus 5 device and I’ve installed Android 7.1.1 AOSP and a customized opengapps aroma package via TWRP.
Everything plays well together except the GBoard not having Russian (Cyrillic) input. In order to fix this I headed to Settings > Languages & input > Virtual keyboard > GBoard and then I see a list of options (like Languages, Preferences, etc.). Tapping on any of them results in the GBoard application crash with the following stacktrace:

01-06 18:29:49.857	2256	5539	I	Icing	Usage reports 0 indexed 0 rejected 0 imm upload false
01-06 18:29:50.316	917	2394	I	ActivityManager	START u0 {act=android.intent.action.MAIN cmp=com.android.inputmethod.latin/com.google.android.apps.inputmethod.latin.preference.SettingsActivity (has extras)} from uid 10018 on display 0
01-06 18:29:50.372	7938	7938	D	AndroidRuntime	Shutting down VM
01-06 18:29:50.376	7938	7938	E	AndroidRuntime	FATAL EXCEPTION: main
01-06 18:29:50.376	7938	7938	E	AndroidRuntime	Process: com.android.inputmethod.latin, PID: 7938
01-06 18:29:50.376	7938	7938	E	AndroidRuntime	java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.inputmethod.latin/com.google.android.apps.inputmethod.latin.preference.SettingsActivity}: java.lang.RuntimeException: Preference xml file not specified
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread.-wrap12(ActivityThread.java)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.os.Handler.dispatchMessage(Handler.java:102)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.os.Looper.loop(Looper.java:154)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread.main(ActivityThread.java:6119)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at java.lang.reflect.Method.invoke(Native Method)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime	Caused by: java.lang.RuntimeException: Preference xml file not specified
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at com.google.android.apps.inputmethod.libs.framework.preference.CommonPreferenceFragment.onCreate(PG:26)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.Fragment.performCreate(Fragment.java:2336)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:949)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.BackStackRecord.setLastIn(BackStackRecord.java:860)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.BackStackRecord.calculateFragments(BackStackRecord.java:900)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.BackStackRecord.run(BackStackRecord.java:728)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1578)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.FragmentController.execPendingActions(FragmentController.java:371)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.Activity.performStart(Activity.java:6695)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628)
01-06 18:29:50.376	7938	7938	E	AndroidRuntime		... 9 more
01-06 18:29:50.380	917	1133	W	ActivityManager	  Force finishing activity com.android.inputmethod.latin/com.google.android.apps.inputmethod.latin.preference.SettingsActivity
01-06 18:29:50.387	917	1133	W	ActivityManager	  Force finishing activity com.android.inputmethod.latin/com.google.android.apps.inputmethod.latin.preference.SettingsActivity

There are other people experiencing the same problem: (1), (2), (3). I’m using another keyboard as a workaround but I would like to know what’s the cause of this problem.

@naXa777
naXa777

changed the title
GBoard Preferences keeps crashing

GBoard Preferences app keeps crashing

Jan 6, 2017

@mfonville

@naXa777 did you try it with a fully cleared /data/ partition? There are known upgrade issues from the old Keyboard to the new GBoard.

@naXa777

Resolved by reinstalling GBoard as a system app via adb.

@sd3993

Can you please outline the steps? I downgraded to AOSP keyboard for now

@malt3

bump Same problem on lineage OS.

@jamuir

We build aosp images for several nougat devices (shamu, bullhead, angler, marlin, sailfish) and Gboard preferences seem to work fine. Note that shamu is 32-bit, like hammerhead, which is the device mentioned by the OP.

It seems like this is only an issue when installing opengapps via sideload.

If so, then I don’t know if we can address it by making changes inside aosp_build.

@paravz

@naXa777 another bump: can you share how you reinstalled gboard to fix this

@hickscorp

👍

I’m trying to follow @naXa777 very constructive comment by reading online resources, but all of them so far tell me to remove the app from /system/app. Can’t find GBoard here. I’ll report back here if I figure out a way.

@sihaiyi

Yeah, same issue for me ,could you please show the details of solution?

@naXa777

@hickscorp The app may be located at /system/app/LatinIMEGooglePrebuilt/LatinIMEGooglePrebuilt.apk

@naXa777

While I believe that the issue was caused by old settings of the previous keyboard, and installing the GBoard with a fully cleared /data partition should work, I personally used these commands to find all references to the GBoard app.

$ adb shell ls -lR | grep inputmethod
$ adb shell ls -lR | grep LatinIMEGooglePrebuilt

Then I’ve manually deleted them. Be careful cause you can delete something important accidentally.

Then I’ve replaced /system/app/LatinIMEGooglePrebuilt/LatinIMEGooglePrebuilt.apk file via adb shell cp ... (requires root permission) and executed adb install -r GBoard.apk in order to run installation process that properly unpacks some native libraries from the apk.

@paravz

I can confirm that installing «clean» (with Data wipe) gapps with googlekeyboard works fine, no crashes in gboard settings. But all my attempts to fix a «dirty» installation failed — I reinstalled with a wipe.

Upd: i checked on lineage-14.1-20170307

@sihaiyi

Hi,

Thanks for your response.

Yeah I wiped all data of my phone and re-install it and it seems to work
fine, it might be a conflict between AOSP and Gboard.
Problem solved, thanks a lot.

2017-03-13 20:10 GMT+01:00 Alec Istomin <notifications@github.com>:

@jamuir

So this does indeed seem to be an issue caused by GBoard reading old data, which is what mfonville originally suggested 🙂

I think this can be closed.

@paravz

would be great if «dirtiness» can be handled for googlekeyboard, it might be as easy as cleaning some files or prohibiting dirty flashing (as is done for googlecamera)

@jamuir

agreed, but «aosp_build» is probably not the right place to fix that.

That sounds like something that needs to be done in the project that creates the opengapps zips.

@patricksylau

Does anyone have detailed instructions on how this can be fixed? Thanks so much!

@sihaiyi

@dmitrygorbenko

I’ve cleared Data partition and installed gapps again, and my issue was fixed.

@Fabian42

Is there a way to fix this without resetting everything? On my Fairphone 2 I installed the «Fairphone open» system, updated it to Android 7.1, installed GBoard and the error was already there. There can be no old GBoard data anywhere, since I installed it after the update. So another reset shouldn’t do anything useful. And I also don’t want to reset.
Apart from that, it’s still a bug in OpenGApps and should be fixed, so this report should be reopened.

@mercster

Sad… I JUST set up my Nexus 9 with slimroms, I have this issue… don’t feel like doing it all again. I guess I’m stuck with default settings. 🙁

@jamuir

@mercster @Fabian42 @songzy12 @wardg32 this issue has nothing to do with the project aosp_build. It cannot be fixed with a change to aosp_build. There is no point in re-opening it.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Com facebook sdk login ошибка 304
  • Com apple mobilephone ошибка 1035