Package is not debuggable - problem z operacją na bazie danych.

0

Witam, prosiłbym o pomoc bo bardzo mi na tym zależy, wydałem projekt na sklep play, chciałem sprawdzić czy wszystko działa tak jak w normalnej wersji i okazuje się że nie działa moja funkcja importowania/exportowania bazy danych. Była to operacja na plikach przez File.copy() oraz przenoszenie i usuwanie bazy danych z SQLite.

Gdy wszedłem w aplikację z poziomu android studio odnajduję przyczynę tego zdarzenia Package "pl.xezolpl.mylibrary" is not debuggable. Znalazłem w internecie, że mogę dać do manifestu android:debuggable="true" i tak też teraz ustawiłem. Tylko że w takim wypadku tworząc aplikację jako bundle do wstawienia na sklep play powinienem dawać normalnie release czy debug żeby to mogło działać? Czy na wersji debug nie będzie mi to wiele wolniej chodziło?

Pozdrawiam, niżej kod od funkcji importu w razie jakby miał on jakieś znaczenie.

public boolean importDatabaseFile(File importedFile) throws IOException {
        boolean result = false;
        if (!checkBackupDir()) {
            return false;
        }

        //Check the database exists
        if (!dbOriginal.exists()) {
            return false;
        }
        if (!importedFile.getName().contains(".db")){
            return false;
        }

        if (importedFile.getAbsolutePath().substring(0, 5).contains("/root")) {
            importedFile = new File(importedFile.getAbsolutePath().substring(5));
        }

        File dbBackup = createBackupFile();

        try {
            FileChannel sourceChannel = new FileInputStream(dbOriginal).getChannel();
            FileChannel destChannel = new FileOutputStream(dbBackup).getChannel();

            //Transfer original to the copy -> if transferredBytes>0 then successfully transferred
            if (sourceChannel.transferTo(0, sourceChannel.size(), destChannel) > 0) {

                sourceChannel.close();
                destChannel.close();

                //Now let's transfer importedFile to the original database's place
                FileChannel importChannel = new FileInputStream(importedFile).getChannel();
                FileChannel destinationChannel = new FileOutputStream(dbOriginal).getChannel();

                //if transferredBytes>0 again then we successfully imported the database file
                LibraryDatabase.getDatabase(context.getApplicationContext()).close();
                if (importChannel.transferTo(0, importChannel.size(), destinationChannel) > 0) {
                    result = true;
                }
                importChannel.close();
                destinationChannel.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return result;
    }

    public boolean exportDatabaseFile(File exportFile) {
        String fileName = "library_database-" + time + ".db";
        String dirPath = (Environment.getExternalStorageDirectory().getPath() +
                exportFile.getParentFile()).replace("document/primary:", "");
        String absoluteFilePath = dirPath + "/" + fileName;

        new File(dirPath + "/" + exportFile.getName()).delete();

        File dbCopy = new File(absoluteFilePath);

        boolean result = false;

        try {
            if (!dbCopy.exists()) {
                if (!dbCopy.createNewFile()) {
                    return false;
                }
            }

            FileChannel sourceChannel = new FileInputStream(dbOriginal).getChannel();
            FileChannel destChannel = new FileOutputStream(dbCopy).getChannel();

            if (sourceChannel.transferTo(0, sourceChannel.size(), destChannel) > 0) {
                result = true;
            }

            sourceChannel.close();
            destChannel.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }
1

Na sklepie to w ogóle nie będzie działać. Nie można wrzucić aplikacji do Play Store, która jest debuggable.

I jesteś pewien, że korzystasz z File.copy()? Taka metoda nie istnieje. Istnieje Files.copy(), ale jest ona dostępna dopiero od SDK 26.

0
Michał Sikora napisał(a):

Na sklepie to w ogóle nie będzie działać. Nie można wrzucić aplikacji do Play Store, która jest debuggable.

I jesteś pewien, że korzystasz z File.copy()? Taka metoda nie istnieje. Istnieje Files.copy(), ale jest ona dostępna dopiero od SDK 26 - https://developer.android.com/reference/java/nio/file/Files#copy(java.nio.file.Path,%20java.io.OutputStream).

Jak się domyślam, nie da rady nic z tym zrobić, oprócz zmiany metody importu/exportu? Może da się jakoś obejść żeby działały te funkcje?

1

Nie, na tę funkcję akurat nie ma sposobu. Ale kopiowanie pliku to nie jest jakaś sztuka wyższa. Możesz skorzystać po prostu File albo np. z jakieś biblioteki jak Okio, która jest przyjaźniejsza w użyciu.

2

Ale wtedy będę mógł to zrobić co powyżej czy nadal potrzebne będzie to debuggowanie?

Debugowalna aplikacja w ogóle nie jest Ci potrzebna do kopiowanie plików ani do czegokolwiek co miałoby działać. Problem masz gdzieś indziej.

0
Michał Sikora napisał(a):

Ale wtedy będę mógł to zrobić co powyżej czy nadal potrzebne będzie to debuggowanie?

Debugowalna aplikacja w ogóle nie jest Ci potrzebna do kopiowanie plików ani do czegokolwiek co miałoby działać. Problem masz gdzieś indziej.

Prawdopodobnie brakło mi permisji przed wejściem w wybieranie pliku. Sprawdzę i zaraz dam znać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1