Skip to content
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

[utilities] Add operation to reset aliendalvik. JB#53837 #57

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions plugin/utiltools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ void UtilTools::restartFingerprint(QJSValue successCallback, QJSValue errorCallb
execute(SystemTool, QStringList("restart_fingerprint"), successCallback, errorCallback);
}

void UtilTools::resetAliendalvik(QJSValue successCallback, QJSValue errorCallback)
{
execute(SystemTool, QStringList("reset_aliendalvik"), successCallback, errorCallback);
}

bool UtilTools::dirExists(const QString &path)
{
return QDir(path).exists();
}

void UtilTools::handleProcessExit(int exitCode, QProcess::ExitStatus status)
{
QProcess *process = qobject_cast<QProcess*>(sender());
Expand Down
5 changes: 5 additions & 0 deletions plugin/utiltools.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ class UtilTools: public QObject
Q_INVOKABLE void restartFingerprint(QJSValue successCallback = QJSValue::UndefinedValue,
QJSValue errorCallback = QJSValue::UndefinedValue);

Q_INVOKABLE void resetAliendalvik(QJSValue successCallback = QJSValue::UndefinedValue,
QJSValue errorCallback = QJSValue::UndefinedValue);

Q_INVOKABLE bool dirExists(const QString &path);

private slots:
void handleProcessExit(int exitCode, QProcess::ExitStatus status);

Expand Down
3 changes: 2 additions & 1 deletion qml/ActionList.qml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ Column {
}
var names = [ "RestartNetwork", "RestartUI",
"RestartFingerprint", "RestartBluetooth",
"CleanPackageCache", "CleanTracker"
"CleanPackageCache", "CleanTracker",
"ResetAlien"
]
for (var i = 0; i < names.length; ++i)
justLoad(names[i])
Expand Down
26 changes: 26 additions & 0 deletions qml/plugins/ResetAlien.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import Sailfish.Utilities 1.0

ActionItem {
visible: UtilTools.dirExists("/home/.android")
//% "Android™ App Support"
title: qsTrId("sailfish-tools-he-android_app_support")
//% "Reset"
actionName: qsTrId("sailfish-tools-bt-reset")
//% "Completely reset Android App support, removing "
//% "all settings, apps and app data. Android data in "
//% "your home directory will not be removed, and any "
//% "Android apps installed from the Jolla store will "
//% "be reinstalled. You can also use this utility to clean "
//% "your Android data from your device after uninstalling "
//% "Android App Support.
description: qsTrId("sailfish-utilities-me-clean_aas_desc")
//% "Resetting Android™ App Support"
remorseText: qsTrId("sailfish-utilities-me-clean_aas_remorse")
deviceLockRequired: false

function action(on_reply, on_error) {
UtilTools.resetAliendalvik(on_reply, on_error)
}
}
1 change: 0 additions & 1 deletion rpm/sailfish-utilities.spec
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ Translation source for %{name}
%{_datadir}/translations/settings-sailfish_utilities_eng_en.qm
%dir %{_libdir}/qt5/qml/Sailfish/Utilities
%{_libdir}/qt5/qml/Sailfish/Utilities/*
%{_userunitdir}/tracker-reindex.service

%files ts-devel
%defattr(-,root,root,-)
Expand Down
8 changes: 1 addition & 7 deletions tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,6 @@ set(CMAKE_CXX_FLAGS
configure_file(config.hpp.in config.hpp @ONLY)
add_executable(sailfish_tools_system_action sailfish_tools_system_action.cpp)

configure_file(tracker-reindex.service.in tracker-reindex.service @ONLY)

install(FILES
tracker-reindex.service
DESTINATION lib/systemd/user
)

install(TARGETS
sailfish_tools_system_action
DESTINATION bin
Expand All @@ -24,5 +17,6 @@ install(PROGRAMS
restart_lipstick.sh
tracker_reindex.sh
restart_fingerprint.sh
reset_aliendalvik.sh
DESTINATION share/sailfish-utilities
)
54 changes: 54 additions & 0 deletions tools/reset_aliendalvik.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/bin/sh

# Stop aliendalvik if running
if systemctl is-active --quiet aliendalvik
systemctl stop aliendalvik || :
fi
if systemctl is-active --quiet apkd
systemctl stop apkd || :
fi

# Remove all launchers
rm -f /home/*/.local/share/applications/apkd_launcher_*.desktop || :
rm -f /home/*/.local/share/applications/apkd_handler_*.desktop || :
update-desktop-database

if [ -f /opt/alien/system.img ]; then
# If alien installed, wipe /data, but keep any apps from the store
if [ -d /home/.android/data/aas-staging/app/packaged ]; then
# alien8
mv /home/.android/data/aas-staging/app/packaged /home/.android
rm -rf /home/.android/data
mkdir -p /home/.android/data/aas-staging/app/
mv /home/.android/packaged /home/.android/data/aas-staging/app/
elif [ -d /home/.android/data/app/packaged ]; then
# alien4
systemctl stop alien-settings
mv /home/.android/data/app/packaged /home/.android
rm -rf /home/.android/data
mkdir -p /home/.android/data/app/
mv /home/.android/packaged /home/.android/data/app/
/usr/bin/add-oneshot --now alien-create-build-prop
systemctl-user start alien-pre-start.service
else
# neither packaged dir is available, cleanup anyway
rm -rf /home/.android/data
fi

# Start aliendalvik
systemctl start apkd
systemctl start aliendalvik

sleep 5
for apk in /home/.android/data/app/packaged/*.apk; do
/usr/bin/apkd-harbour-rpm-post $apk
done
for apk in /home/.android/data/aas-staging/app/packaged/*.apk; do
/usr/bin/apkd-harbour-rpm-post $apk
done
else
# Just cleanup all data
rm -rf /home/.android
fi


5 changes: 4 additions & 1 deletion tools/sailfish_tools_system_action.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,14 @@ std::map<std::string, action_type> actions = {
}},
{ "restart_fingerprint", [](action_ctx const *) {
return execute_own_utility("restart_fingerprint.sh");
}},
{ "reset_aliendalvik", [](action_ctx const *) {
return execute_own_utility("reset_aliendalvik.sh");
}}
};

std::set<std::string> root_actions = {
"repair_rpm_db", "restart_network", "restart_fingerprint", "restart_bluetooth"
"repair_rpm_db", "restart_network", "restart_fingerprint", "restart_bluetooth", "reset_aliendalvik"
};

class BecomeRoot
Expand Down
5 changes: 0 additions & 5 deletions tools/tracker-reindex.service.in

This file was deleted.