Skip to main content

How To Reduce APK File Size in Android Studio

Your APK can contain content that users download but never use, like regional or language information. To create a minimal download for your users, you can segment your app into several APKs, differentiated by factors such as screen size or GPU texture support.


Here are Some ways to Reduce Apk File size:

  • Use ProGaurd
  • Remove any debug info you have in the app ( statements such as Log.i()). They can be wrapped in a condition which is only enabled while testing out the application.
  • Use recommended media formats
    • Image: PNG,JPG & WebP
    • Audio: AAC
    • Video: H264 AVC
  • Compress images using OptiPNG or PNGCrush
  • Use 9patch to scale images
  • Find unused resources and remove them.
  • Refrain using multiple resources to achieve the same functionality. The resources is not limited to images but can be extended to APIs. Sometimes, using a singular API which provide multiple results is more efficient than using two or three different APIs. Duplicated strings and assets are also a waste of memory.
  • Libraries that you add to your code may include unused resources. Gradle can automatically remove resources on your behalf if you enable shrinkResources in your app's build.gradle file.
android {
    // Other settings

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Comments

Popular posts from this blog

Error:Execution failed for task ':app:processDebugGoogleServices'. > Missing api_key/current_key object

First in your JSON file Replace "api_key" : [] with "api_key" : [{ "current_key" : "" }] Then the gradle build will be successful but when you run your application you may get errors like the following.. Error : Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug' . > com . android . build . api . transform . TransformException : com . android . builder . packaging . DuplicateFileException : Duplicate files copied in APK META - INF / LICENSE File1 : C : \Users\bucky\.gradle\caches\modules - 2 \files - 2.1 \com . fasterxml . jackson . core\jackson - core\2 . 2.2 \d 20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b \jackson - core - 2.2 . 2.jar File2 : C : \Users\bucky\.gradle\caches\modules - 2 \files - 2.1 \com . fasterxml . jackson . core\jackson - databind\2 . 2.2 \3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson - databind - 2.2 . 2.jar File3 : C : \Users\bucky\.gradle\caches\mod

How to get mobilesdk_app_id parameter in google-services.json

The google-services.json file is generally placed in the app/ directory,  but as of version 2.0.0-alpha3 of the plugin support was added for build types , which would make the following directory structure valid: app / src / main / google - services . json dogfood / google - services . json mytype1 / google - services . json mobilesdk_app_id : At the following page:  https://developers.google.com/mobile/add?platform=android&cntapi=signin&cntapp=Default%20Demo%20App&cntpkg=com.google.samples.quickstart.signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fandroid%2Fstart%3Fconfigured%3Dtrue&cntlbl=Continue%20with%20Try%20Sign-In You can create a new project and add services to it. This website will automatically generate a google-services.json file for your new project.

Access can be package - Private, Protected and Public ( Differences )

Java has four access modifier namely  private ,  protected  and  public . package level access is  default access  level provided by Java  if no access modifier is specified. These access modifiers are used to restrict accessibility of a class, method or variable on which it applies. We will start from private access modifier which is most restrictive access modifier and then go towards public which is least restrictive access modifier, along the way we will see some best practices while using access modifier in Java and some examples of using  private  and  protected  keywords. private keyword in Java private  keyword or modifier in java can be applied to member field, method or nested class in Java. you can not use the  private  modifier on top level class.  private  variables, methods, and class are only accessible on the class on which they are declared.  private  is the highest form of Encapsulation Java API provides and should be used as much as possible. It's best c