13
13
#endif
14
14
15
15
struct android_app * g_state = NULL ;
16
+ static JNIEnv * g_env = NULL ;
16
17
17
18
19
+ JNIEnv * minimal_get_jnienv () {
20
+ return g_env ;
21
+ }
22
+
18
23
static PyObject * androidembed_poll (PyObject * self , PyObject * args ) {
19
24
int indent ;
20
25
int events ;
@@ -96,6 +101,8 @@ void android_main(struct android_app* state) {
96
101
//env_argument = getenv("ANDROID_ARGUMENT");
97
102
//setenv("ANDROID_APP_PATH", env_argument, 1);
98
103
//setenv("PYTHONVERBOSE", "2", 1);
104
+ setenv ("PYJNIUS_JNIENV_SYMBOL" , "minimal_get_jnienv" , 1 );
105
+ setenv ("ANDROID_ARGUMENT" , "" , 1 ); // needed for plyer
99
106
Py_SetProgramName ("python-android" );
100
107
Py_Initialize ();
101
108
//PySys_SetArgv(argc, argv);
@@ -108,23 +115,22 @@ void android_main(struct android_app* state) {
108
115
109
116
// get the APK filename, and set it to ANDROID_APK_FN
110
117
ANativeActivity * activity = state -> activity ;
111
- JNIEnv * env = NULL ;
112
- (* activity -> vm )-> AttachCurrentThread (activity -> vm , & env , 0 );
113
- jclass clazz = (* env )-> GetObjectClass (env , activity -> clazz );
114
- jmethodID methodID = (* env )-> GetMethodID (env , clazz , "getPackageCodePath" , "()Ljava/lang/String;" );
115
- jobject result = (* env )-> CallObjectMethod (env , activity -> clazz , methodID );
118
+ (* activity -> vm )-> AttachCurrentThread (activity -> vm , & g_env , 0 );
119
+ jclass clazz = (* g_env )-> GetObjectClass (g_env , activity -> clazz );
120
+ jmethodID methodID = (* g_env )-> GetMethodID (g_env , clazz , "getPackageCodePath" , "()Ljava/lang/String;" );
121
+ jobject result = (* g_env )-> CallObjectMethod (g_env , activity -> clazz , methodID );
116
122
const char * str ;
117
123
jboolean isCopy ;
118
- str = (* env )-> GetStringUTFChars (env , (jstring )result , & isCopy );
124
+ str = (* g_env )-> GetStringUTFChars (g_env , (jstring )result , & isCopy );
119
125
LOGI ("Looked up package code path: %s" , str );
120
126
setenv ("ANDROID_APK_FN" , str , 1 );
121
127
122
- methodID = (* env )-> GetMethodID (env , clazz , "getApplicationInfo" , "()Landroid/content/pm/ApplicationInfo;" );
123
- jobject appInfo = (* env )-> CallObjectMethod (env , activity -> clazz , methodID );
124
- jfieldID fieldID = (* env )-> GetFieldID (env ,
125
- (* env )-> GetObjectClass (env , appInfo ), "nativeLibraryDir" , "Ljava/lang/String;" );
126
- result = (* env )-> GetObjectField (env , appInfo , fieldID );
127
- str = (* env )-> GetStringUTFChars (env , (jstring )result , & isCopy );
128
+ methodID = (* g_env )-> GetMethodID (g_env , clazz , "getApplicationInfo" , "()Landroid/content/pm/ApplicationInfo;" );
129
+ jobject appInfo = (* g_env )-> CallObjectMethod (g_env , activity -> clazz , methodID );
130
+ jfieldID fieldID = (* g_env )-> GetFieldID (g_env ,
131
+ (* g_env )-> GetObjectClass (g_env , appInfo ), "nativeLibraryDir" , "Ljava/lang/String;" );
132
+ result = (* g_env )-> GetObjectField (g_env , appInfo , fieldID );
133
+ str = (* g_env )-> GetStringUTFChars (g_env , (jstring )result , & isCopy );
128
134
LOGI ("Looked up library code path: %s" , str );
129
135
setenv ("ANDROID_LIB_PATH" , str , 1 );
130
136
0 commit comments