Thursday 25 December 2014

How to Proguard Android APK

How to Proguard Android APK


-in jars: Specifies the input jars (or aars, wars, ears, zips, apks, or directories) of the application to be processed

-outjars:Specifies the names of the output jars (or aars, wars, ears, zips, apks, or directories). The processed input of the preceding -injars options will be written to the named jars.

-libraryjars: Specifies the library jars (or aars, wars, ears, zips, apks, or directories) of the application to be processed. The files in these jars will not be included in the output jars.

-dontskipnonpubliclibraryclassmembers: Specifies not to ignore package visible library class members (fields and methods).

-keep: Specifies classes and class members (fields and methods) to be preserved as entry points to your code.

Here  ReportingInteractionMode is a class in ACRA library. we have to keep this library in src to suppress Crash No such filed TOAST.
-keep class org.acra.ReportingInteractionMode { *; }  

Copy this contain and create file proguard.cfg and past into it.

 -injars   bin/classes  
 -injars   libs  
 -outjars   bin/classes-processed.jar  
 -libraryjars /home/.../adt-bundle-linux-x86-20140321/sdk/platforms/android-19/android.jar  
 -libraryjars /home/.../libs/android-query-full.0.26.7.jar  
 -libraryjars /home/.../libs/javassist.jar  
 -libraryjars /home/.../libs/joda-time-2.3.jar  
 -libraryjars /home/.../libs/libphonenumber-5.9.jar  
 -libraryjars /home/.../libs/nineoldandroids-2.4.0.jar  
 -optimizationpasses 1  
 -dontpreverify  
 -dontskipnonpubliclibraryclassmembers  
 -repackageclasses ''  
 -allowaccessmodification  
 -optimizations !code/simplification/arithmetic,!field  
 -keepattributes *Annotation*       
 -dontusemixedcaseclassnames  
 -dontskipnonpubliclibraryclasses  
 -dontpreverify  
 -verbose  
 -allowaccessmodification  
 -keepattributes *Annotation*  
 -dontwarn android.support.v7.**  
 -dontwarn in.android.Databases.**  
 -dontwarn in.android.PushNotification.**  
 -dontwarn in.andoroid.Utills.FileUtill  
 -dontwarn android.support.v4.**  
 -dontwarn com.androidquery.auth.**  
 -dontwarn javassist.**  
 -dontwarn org.brickred.socialauth.**  
 -dontwarn org.joda.time.**  
 -keep public class * extends android.app.Activity  
 -keep public class * extends android.app.Application  
 -keep public class * extends android.app.Service  
 -keep public class * extends android.content.BroadcastReceiver  
 -keep public class * extends android.content.ContentProvider  
 -keep public class com.android.vending.licensing.ILicensingService  
 -keepclasseswithmembernames class * {  
   native <methods>;  
 }  
 -keepclasseswithmembernames class * {  
   public <init>(android.content.Context, android.util.AttributeSet);  
 }  
 -keepclasseswithmembernames class * {  
   public <init>(android.content.Context, android.util.AttributeSet, int);  
 }  
 -keepclassmembers enum * {  
   public static **[] values();  
   public static ** valueOf(java.lang.String);  
 }  
 -keep class * implements android.os.Parcelable {  
  public static final android.os.Parcelable$Creator *;  
 }  
 # for minmize ACRA library Error we are using this ReportingInteractionMode   
 # otherwise you will get No Such field Toast   
 -keep class org.acra.ReportingInteractionMode { *; }  

In project.properties add this attribute and save it.

proguard.config=proguard.cfg 

then, export the project and create new keystore if you haven't created or use existing keystore and finish the wizard.

Monday 22 December 2014

How to use Curl Library in Android


To compile Curl library for android, follow this post

Here is the simple Android Example using Curl Library.
Source Code:https://github.com/JohnnyIqbal/AndroidCurlEx

How to compile Curl Library for Android in Linux


1. Download the source code of curl library http://curl.haxx.se/download.html

2.Create a file build_andorid.sh and copy below content and save file into Curl folder.

 #!/bin/bash  
 NDK=<yourpath>/android-ndk-r9d  
 SYSROOT=$NDK/platforms/android-19/arch-arm/  
 CFLAGS="-fno-exceptions -Wno-multichar -mthumb -mthumb-interwork -nostdlib -lc -ldl -lm "  
 LDFLAGS="-Wl,--fix-cortex-a8"   
 export AR="$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-ar"  
 export LD="$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-ld"  
 export CC="$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"  
 ./configure \  
 --host=arm-linux-androideabi \  
 --prefix=/<your output folder path where include,lib and bin will folder copy >/curllib/ \  
 --exec-prefix=/<your output folder path where include,lib and bin will folder copy >/curllib/  
 make clean  
 make  
 make install  

3.Change build_android.sh mode to executable mode,Open terminal and head(i,e. cd)  to curl directory and run below code.

 sudo chmod +x 777 build_android.sh  
 ./build_android.sh  

4. If you want to download compiled curl library  for android click below link
https://github.com/JohnnyIqbal/Curl_For_Android_Compiled

5. Android Example of Curl Library https://github.com/JohnnyIqbal/AndroidCurlEx

Tuesday 16 December 2014

How to port C library to Android as a static library.

Hi,

How to port C library to Android as a static library.

We build the  C library as a static library(*.a) and build a shared library using static library. because Android packaged only shared library in apk.
SourceCode Link:https://github.com/JohnnyIqbal/PortStaticEx.git

How to port C library to Android as a shared library(.so)

Hi,

How to port C library to Android as a shared library(.so).

We build C library as a shared library for android because android packaged only shared library in apk.

SourceCode Link:https://github.com/JohnnyIqbal/PortSharedEx.git

Things after Kotlin Android Extensions

Things after Kotlin Android Extensions(KTX) I remembered in MVVM when I have to declare ViewModel, I initialize View Model like this. p...