Code Monkey home page Code Monkey logo

lib-aeapps's Introduction

libAeApps

Build Status Release GitHub commits Issues

libAeApps is an Android library project which provides reusable solutions to some common problems. Some solutions require boiler plate code which can become tedious to manage.

This is named after Artistik Expressionz since all my apps follow the package structure "com.ae.apps.[appname]". Codenames for development versions are based on fruits, mostly berries.
The latest codename is Kiwiberry

Contents

Detailed information about the architecture of the project is available on the project wiki at this link Depending on the features you use, make sure to declare the permissions in your manifest.xml file.

Implementations

Presently the following android app projects make use of this library.

Changelog

To see the history of changes, see Changelog

Using the library

With version 4, the library has been split into multiple modules, each of which could be included separately in an android app. Instructions for using this library are mentioned at Distribution

Migration Guide

Instructions for migrating from a prior version of the library are at Migration Guide

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

lib-aeapps's People

Contributors

midhunhk avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lib-aeapps's Issues

RuntimePermissionChecker only checks 1st permission

Issue: If there are multiple permissions requested, if the first permission is granted but the rest are denied, handlePermissionsResult() invoked the onPermissionsGranted() callback.

Expected: Only if all permissions are granted, should the onPermissionsGranted() be called

Refactor into Multiple Modules

Problem Description

Since the number of custom components provided by the library has increased and they are organized into packages by the type of the class, it is messy. Also applications that may need only one or two features need to include the whole library,

Solution

Refactor all the classes to packages by feature and split into multiple modules, so only required components would need to be added as dependency.

Proposing the following module structure:

  • core
    • Custom Views
    • Common Models
    • SMS Manager
  • billing-client
  • contacts-api
  • sms-api
  • utilities
  • multi-contact
  • database-helpers
  • mocks
  • runtime-permissions

Other Tasks

  • Distribute via JitPack.io
  • Distribute via jCenter
  • Generate javadoc for all modules
  • Generate landing page with more information
  • Remove deprecated code and resources
  • Create Migration Guide
  • Revisit implementation of complex components

Note: This is an API breaking change, hence we will have a major version release.

CRITICAL: Projects not able to access class files from the library

Upon adding the library to an Android application, the java classes are inaccessible

To Reproduce
Steps to reproduce the behavior:

  1. Use the latest version of the library (https://jitpack.io/com/github/midhunhk/lib-aeapps/v4.0.4/)
    implementation 'com.github.midhunhk.lib-aeapps:core:v4.0.4'
  2. Sync the gradle file
  3. e.g; 'EmptyRecyclerView' is inaccessible

Expected behavior
Class files should be available to use

Thanks to the community for not checking or reporting this issue.

DonationsFragment

Create a BaseDonationsFragment in addition to the BaseDonationsActivity already provided

Improve design of ContactManager

Expose public methods to fetch contacts or fetch asynchronously instead of initializing in Constructor.

  • Refactor ContactManager class
    • Extract an Interface with common methods from ContactManager
    • Create an abstract class with default implementation
  • Use a Builder to make an instance of ContactManager
    • Make the constructor private to force the use of Builder
  • Add an async method to read contacts
    • Testing async implementation
  • Unit Tests for ContactManager
  • Refactor Contacts database access to a separate class - ContactService (Separation of Concerns)

Provide alternate distribution option

Problem

Currently the library is released via JCenter. Each build should be manually created and uploaded to bintray, this process is tedious and time consuming. This is a proposal to provide an alternate distribution option.
.

Solution

There is a free service called JitPack that supports library projects to be served primarily from each release, but also from branch or even commit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.