Skip to content

Commit ea17bcb

Browse files
committed
move app dir to <private_dir>/app allowing for re-installation/updation to not delete the user data.
This is only working for sdl2 bootstrap, stiil need to test with service and other bootstraps.
1 parent cf705e8 commit ea17bcb

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

pythonforandroid/bootstraps/sdl2/build/jni/src/start.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ int main(int argc, char *argv[]) {
156156
if (dir_exists("lib")) {
157157
/* If we built our own python, set up the paths correctly */
158158
LOGP("Setting up python from ANDROID_PRIVATE");
159-
PyRun_SimpleString("private = posix.environ['ANDROID_PRIVATE']\n"
159+
PyRun_SimpleString("private = posix.environ['ANDROID_PRIVATE'] + '/app'\n"
160160
"argument = posix.environ['ANDROID_ARGUMENT']\n"
161161
"sys.path[:] = [ \n"
162162
" private + '/lib/python27.zip', \n"

pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonActivity.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,29 +48,37 @@ public class PythonActivity extends SDLActivity {
4848
private Bundle mMetaData = null;
4949
private PowerManager.WakeLock mWakeLock = null;
5050

51+
public String getKivyRoot() {
52+
String kivy_root = getFilesDir().getAbsolutePath() + "/app";
53+
return kivy_root;
54+
}
55+
56+
5157
@Override
5258
protected void onCreate(Bundle savedInstanceState) {
5359
Log.v(TAG, "My oncreate running");
5460
resourceManager = new ResourceManager(this);
5561
this.showLoadingScreen();
62+
File kivy_root_file = new File(getKivyRoot());
5663

5764
Log.v(TAG, "Ready to unpack");
58-
unpackData("private", getFilesDir());
65+
unpackData("private", kivy_root_file);
5966

6067
Log.v(TAG, "About to do super onCreate");
6168
super.onCreate(savedInstanceState);
6269
Log.v(TAG, "Did super onCreate");
6370

6471
this.mActivity = this;
6572

73+
String kivy_root_dir = getKivyRoot();
6674
String mFilesDirectory = mActivity.getFilesDir().getAbsolutePath();
6775
Log.v(TAG, "Setting env vars for start.c and Python to use");
6876
SDLActivity.nativeSetEnv("ANDROID_PRIVATE", mFilesDirectory);
69-
SDLActivity.nativeSetEnv("ANDROID_ARGUMENT", mFilesDirectory);
70-
SDLActivity.nativeSetEnv("ANDROID_APP_PATH", mFilesDirectory);
77+
SDLActivity.nativeSetEnv("ANDROID_ARGUMENT", kivy_root_dir);
78+
SDLActivity.nativeSetEnv("ANDROID_APP_PATH", kivy_root_dir);
7179
SDLActivity.nativeSetEnv("ANDROID_ENTRYPOINT", "main.pyo");
72-
SDLActivity.nativeSetEnv("PYTHONHOME", mFilesDirectory);
73-
SDLActivity.nativeSetEnv("PYTHONPATH", mFilesDirectory + ":" + mFilesDirectory + "/lib");
80+
SDLActivity.nativeSetEnv("PYTHONHOME", kivy_root_dir);
81+
SDLActivity.nativeSetEnv("PYTHONPATH", kivy_root_dir + ":" + kivy_root_dir + "/lib");
7482

7583
try {
7684
Log.v(TAG, "Access to our meta-data...");
@@ -93,7 +101,9 @@ protected void onCreate(Bundle savedInstanceState) {
93101
}
94102

95103
public void loadLibraries() {
96-
PythonUtil.loadLibraries(getFilesDir());
104+
String kivy_root = new String(getKivyRoot());
105+
File kivy_root_file = new File(kivy_root);
106+
PythonUtil.loadLibraries(kivy_root_file);
97107
}
98108

99109
public void recursiveDelete(File f) {
@@ -267,11 +277,12 @@ public static void start_service(String serviceTitle, String serviceDescription,
267277
Intent serviceIntent = new Intent(PythonActivity.mActivity, PythonService.class);
268278
String argument = PythonActivity.mActivity.getFilesDir().getAbsolutePath();
269279
String filesDirectory = argument;
280+
String kivy_root_dir = PythonActivity.mActivity.getKivyRoot();
270281
serviceIntent.putExtra("androidPrivate", argument);
271-
serviceIntent.putExtra("androidArgument", argument);
282+
serviceIntent.putExtra("androidArgument", kivy_root_dir);
272283
serviceIntent.putExtra("serviceEntrypoint", "service/main.pyo");
273-
serviceIntent.putExtra("pythonHome", argument);
274-
serviceIntent.putExtra("pythonPath", argument + ":" + filesDirectory + "/lib");
284+
serviceIntent.putExtra("pythonHome", kivy_root_dir);
285+
serviceIntent.putExtra("pythonPath", kivy_root_dir + ":" + kivy_root_dir + "/lib");
275286
serviceIntent.putExtra("serviceTitle", serviceTitle);
276287
serviceIntent.putExtra("serviceDescription", serviceDescription);
277288
serviceIntent.putExtra("pythonServiceArgument", pythonServiceArgument);

0 commit comments

Comments
 (0)