diff --git a/android/build.gradle b/android/build.gradle index a0283d4..f8f11d9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -77,6 +77,11 @@ android { commandLine 'make', 'all', 'PEP_PACKAGE_NAME='+pEpAppPackageName } + task cleanExternal(type:Exec) { + workingDir 'external' + commandLine 'make', 'clean', 'PEP_PACKAGE_NAME='+pEpAppPackageName + } + // call pEpEngine Build task buildpEpEngine(type:Exec) { workingDir pEpEngineAndroid @@ -134,11 +139,18 @@ android { assemble.dependsOn unzipDeps - task cleanNative(type: Exec) { + task jniClean(type: Exec) { commandLine getNdkBuildCmd(), 'clean' } - clean.dependsOn cleanNative + if(buildAutomatic=="true"){ + clean.dependsOn cleanExternal + // ndk-build clean complains when .so are missing + // ensure jniClean happens before external clean + cleanExternal.dependsOn jniClean + }else{ + clean.dependsOn jniClean + } } diff --git a/android/external/Makefile b/android/external/Makefile index 435133f..1ebbd6e 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -196,35 +196,6 @@ libassuan-build: libassuan/src/.libs/libassuan.so libassuan-install: $(LOCAL)/lib/libassuan.so -#------------------------------------------------------------------------------# -# npth - -EXTERNAL_GIT_REPOS += npth|git://git.gnupg.org/npth.git?npth-1.2 - -npth/configure: npth.src.stamp npth/configure.ac - cd npth && ./autogen.sh && autoreconf --install --force --verbose - -npth/Makefile: npth/configure - -patch -N -p1 --reject-file=- npth/m4/libtool.m4 libtool-Add-Android-Linux-support.patch - cd npth && \ - CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ - ./configure \ - --enable-maintainer-mode \ - --host=$(HOST) \ - --with-gnu-ld \ - --prefix=$(LOCAL) - -npth/src/.libs/libnpth.so: $(LOCAL)/lib/libgpg-error.so npth/Makefile - $(MAKE) -C npth - -$(LOCAL)/lib/libnpth.so: npth/src/.libs/libnpth.so - $(MAKE) -C npth prefix=$(LOCAL) install - ls -l $(LOCAL)/lib/libnpth.so* - -npth-build: npth/src/.libs/libnpth.so - -npth-install: $(LOCAL)/lib/libnpth.so - #------------------------------------------------------------------------------# # libksba @@ -334,7 +305,7 @@ libiconv/Makefile: libiconv.src.stamp --with-gnu-ld \ --prefix=$(LOCAL) -libiconv/lib/.libs/libconv.so: libiconv/Makefile +libiconv/lib/.libs/libiconv.so: libiconv/Makefile $(MAKE) -C libiconv $(LOCAL)/lib/libiconv.so: libiconv/lib/.libs/libiconv.so @@ -372,19 +343,16 @@ gnupg/Makefile: gnupg/configure --disable-gpgsm \ --prefix=$(prefix) -gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libnpth.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile +gnupg/g10/gpg2: $(LOCAL)/lib/libgpg-error.so $(LOCAL)/lib/libgcrypt.so $(LOCAL)/lib/libksba.so $(LOCAL)/lib/libassuan.so $(LOCAL)/lib/libcurl.so $(LOCAL)/lib/libiconv.so gnupg/Makefile $(MAKE) -C gnupg $(LOCAL)/bin/gpg2: gnupg/g10/gpg2 gnupg/configure $(MAKE) -C gnupg prefix=$(LOCAL) install ls -l $(LOCAL)/bin/gpg2 -$(LOCAL)/bin/pinentry.sh: pinentry.sh - install $< $(LOCAL)/bin - gnupg-build: gnupg/g10/gpg2 -gnupg-install: $(LOCAL)/bin/gpg2 $(LOCAL)/bin/pinentry.sh +gnupg-install: $(LOCAL)/bin/gpg2 install -d $(LOCAL)/etc/gnupg install -d $(LOCAL)/var/run/gnupg install -d $(LOCAL)/var/cache/gnupg @@ -530,7 +498,6 @@ clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install gnupg-build gnupg-install\ gpgme-build gpgme-install\ curl-build curl-install \ - npth-build npth-install \ assets clean-assets clean-install \ $(EXTERNAL_LOCAL_GITS_UPDATE) $(EXTERNAL_SRCS) $(EXTERNAL_SRCS_CLEAN) \ showsetup diff --git a/android/external/pinentry.sh b/android/external/pinentry.sh deleted file mode 100644 index ab7ceea..0000000 --- a/android/external/pinentry.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/system/bin/sh - -exit_with_log() { - echo Pipe kill $$ >> /data/data/com.pep.pepjniaaractivity/files/pinentry.log - exit -} -trap "exit_with_log" 13 - -echo Start $$ >> /data/data/com.pep.pepjniaaractivity/files/pinentry.log -echo OK -while read cmd rest -do - echo $cmd $rest >> /data/data/com.pep.pepjniaaractivity/files/pinentry.log - case $cmd in - SETDESC) - DESC=$rest - echo OK - ;; - SETPROMPT) - PROMPT=$rest - echo OK - ;; - SETOK) - OK=$rest - echo OK - ;; - SETERROR) - ERROR=$rest - echo OK - ;; - GETPIN) - - echo "D " - echo OK - ;; - OPTION) - echo OK - ;; - GETINFO) - case $rest in - pid*) - echo D $$ - echo OK - echo D $$ >> /data/data/com.pep.pepjniaaractivity/files/pinentry.log - ;; - esac - ;; - BYE) - echo OK - exit - ;; - *) - echo OK - ;; - esac -done - diff --git a/android/jni/Android.mk b/android/jni/Android.mk index c712f1e..d713891 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -31,11 +31,6 @@ LOCAL_MODULE := libksba LOCAL_SRC_FILES := $(GPGBUILD)/lib/libksba.so include $(PREBUILT_SHARED_LIBRARY) -include $(CLEAR_VARS) -LOCAL_MODULE := libnpth -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libnpth.so -include $(PREBUILT_SHARED_LIBRARY) - include $(CLEAR_VARS) LOCAL_MODULE := openssl LOCAL_SRC_FILES := ../build/openssl-android-1/libs/$(TARGET_ARCH_ABI)/libcrypto.a diff --git a/android/src/org/pEp/jniadapter/AndroidHelper.java b/android/src/org/pEp/jniadapter/AndroidHelper.java index 42f814c..5518404 100644 --- a/android/src/org/pEp/jniadapter/AndroidHelper.java +++ b/android/src/org/pEp/jniadapter/AndroidHelper.java @@ -46,13 +46,6 @@ public class AndroidHelper { private static boolean already = false; - public static void startDaemonIfNeeded(Context c) { - if (!new File(homeDir, "S.gpg-agent").exists()) { - Intent service = new Intent(c, GPGAgentService.class); - c.startService(service); - } - } - public static void envSetup(Context c) { // "/opt" like dir to unpack GnuPG assets optDir = c.getDir("opt", Context.MODE_PRIVATE); @@ -147,9 +140,12 @@ public class AndroidHelper { System.loadLibrary("gpg-error"); System.loadLibrary("assuan"); System.loadLibrary("gpgme"); - // Launch native side setup - // TODO disable debug when done - nativeSetup( "9:"+new File(c.getFilesDir(), "gpgme.log").getAbsolutePath()); + + // With lots of log + // nativeSetup( "9:"+new File(c.getFilesDir(), "gpgme.log").getAbsolutePath()); + + // With almost no log + nativeSetup( "0:"+new File(c.getFilesDir(), "gpgme.log").getAbsolutePath()); } public static void setup(Context c) { @@ -157,8 +153,6 @@ public class AndroidHelper { already = true; assetsSetup(c); nativeSetup(c); - // TODO : remove agent service. - //startDaemonIfNeeded(c); } } diff --git a/android/src/org/pEp/jniadapter/GPGAgentService.java b/android/src/org/pEp/jniadapter/GPGAgentService.java deleted file mode 100644 index 4729671..0000000 --- a/android/src/org/pEp/jniadapter/GPGAgentService.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.pEp.jniadapter; - -import java.io.File; - -import android.content.Intent; -import android.app.Service; -import android.util.Log; -import android.os.IBinder; - -public class GPGAgentService extends Service { - public static final String TAG = "GPGAgentService"; - private AgentProcessThread process; - - class AgentProcessThread extends Thread { - - @Override - public void run() { - Log.i(TAG, "execute GPG agent"); - try { - Runtime.getRuntime().exec( - "gpg-agent" + - " --pinentry-program " + - new File(AndroidHelper.binDir, "pinentry.sh").getAbsolutePath() + - //" --no-detach" + - " --daemon" + - //" --write-env-file" + - //" --batch" + - " --homedir " + AndroidHelper.gnupgHomeDir.getAbsolutePath() + - " --debug-level basic --log-file " + - new File(GPGAgentService.this.getFilesDir(), "gpg-agent.log")).waitFor(); - Log.i(TAG, "execution terminated"); - } catch (Exception e) { - Log.e(TAG, "could not execute process", e); - } finally { - stopSelf(); - // eradicate process in critical section - synchronized (GPGAgentService.this) { - process = null; - } - } - } - } - - @Override - public void onCreate() { - Log.d(TAG, "onCreate"); - // Prepare environment for agent - AndroidHelper.envSetup(this); - } - - public int onStartCommand(Intent intent, int flags, int startId) { - Log.d(TAG, "onStartCommand"); - // use critical section to avoid race conditions - synchronized (this) { - process = new AgentProcessThread(); - process.start(); - } - return START_STICKY; - } - - @Override - public IBinder onBind(Intent arg0) { - // onBind() must return null, even if binder unused - return null; - } -}