• Breaking News

    Wednesday, June 3, 2020

    Android Dev - Gradle 6.5 Released

    Android Dev - Gradle 6.5 Released


    Gradle 6.5 Released

    Posted: 03 Jun 2020 01:50 AM PDT

    Introducing compose.academy - snippets and guides for Jetpack Compose

    Posted: 03 Jun 2020 06:18 AM PDT

    Restore RecyclerView scroll position

    Posted: 03 Jun 2020 05:33 AM PDT

    Material Components for Android 1.3.0-alpha01

    Posted: 02 Jun 2020 02:26 PM PDT

    Loophole in Android App allowing any URL to deeplink by default into an App

    Posted: 03 Jun 2020 07:29 AM PDT

    Create an expandable Recyclerview with the MergeAdapter

    Posted: 03 Jun 2020 01:15 AM PDT

    A Google Play anomaly explained: How a trivial update for existing users can cause a sharp drop in daily *new* users.

    Posted: 02 Jun 2020 11:34 AM PDT

    It's a known fact that Google play factors in 'uninstalls' in your app ranking.

    The reasoning behind this is to factor in 'retention' rate to predict if users like your app. or otherwise 80% uninstall it first or second day.

    But here is an unwanted side effect:

    I have a game with very good retention, low uninstalls in first weeks of download, therefore it's ranked in a good place and gets a very healthy and failry constant daily downloads for last 10 months. Now I've released a minor 'typo' update.

    As expected for a game that user do "finish playing with" and it continue setting for months as dead weight in user device, users do uninstall once they notice the game updating. ( We all do)

    So after 8 months, the game accumulated tens of thousands "finished users"' who uninstalled in same day.

    But should a user that played my game for weeks\months and uninstalls it when I update , hurt app ranking, like same day uninstall ?

    Retention among new users is still very high, but Google play interpreted those 50k uninstalls in one day as a bad sign. rank plummeted and downloads where hurt considerably.

    This is anomaly because:1- game still has hight retention for weeks.

    1. if users who finished after weeks uninstalled it ASAP and didn't accumulate my app ranking wouldn't get punished.

    2. if I updated more frequently and those 'dead weight' we're spread, ranking wouldn't hurt.

    Key lessons:

    - if you have a "finite puzzle game" , and you update after a long time. consider this to a cause to download drop.

    - leave that typo alone !

    I hope Play team, implements an heuristic that distinguished between "uninstalls" due to bad experience and "uninstall" from finished an happy users that accumulated over time.

    An update can hurt you

    submitted by /u/1998_best_year_ever
    [link] [comments]

    Complexity of requesting permissions - the default Kotlin example

    Posted: 03 Jun 2020 06:30 AM PDT

    I'm looking at the Kotlin default example here - halfway down the page

    https://developer.android.com/training/permissions/requesting#kotlin

    why should I need an alpha release android x package (Activity 1.2.0-alpha02) just to get this to compile?

    Whole thing seems overly complex for what should be pretty simple bit of code,

    I mean at least they should make the samples valid code, not with "..." scattered about, which should really be // TODO comment.

    submitted by /u/damian2000
    [link] [comments]

    Is Jetpack Navigation good?

    Posted: 02 Jun 2020 07:10 PM PDT

    I just went over the Codelab Jetpack Navigation project. I don't really feel it is very intuitive. Especially with all the XMLs. What do you guys think? What kinds of benefit does it brings to your app/projects?

    submitted by /u/sssurvey
    [link] [comments]

    Resources$NotFoundException on Android 10 devices.

    Posted: 03 Jun 2020 02:36 AM PDT

    Hey community!

    ProblemI've noticed a lot of unexpected crashes only on Android 10 devices. Crashes are pointing to missing resource ID in different layouts but I was not able to reproduce it even on same device and OS as I saw in crash reports.Weirdly enough, after hours of digging through google search results page 4 and further(I've got lost and results were in Mandarin) i found post pointing to Developer options -> Enable view attribute inspection. After enabling it on my device I've could reproduce it but it's still not clear how to fix it. Disabling it helped and app users are not seeing crashes there.

    QuestionEven though that helped I want to know what's the culprit of it and what is the right approach to fix it.

    Crash log

    android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f040378 at android.content.res.ResourcesImpl.getResourceTypeName(ResourcesImpl.java:305) at android.content.res.Resources.getResourceTypeName(Resources.java:2111) at android.content.res.Resources$Theme.getExplicitStyle(Resources.java:1769) at android.view.View.retrieveExplicitStyle(View.java:6731) at android.view.View.<init>(View.java:5639) at android.view.ViewGroup.<init>(ViewGroup.java:687) at android.widget.FrameLayout.<init>(FrameLayout.java:99) at android.widget.FrameLayout.<init>(FrameLayout.java:94) at androidx.cardview.widget.CardView.<init>(SourceFile:121) at com.google.android.material.card.MaterialCardView.<init>(SourceFile:52) at com.google.android.material.card.MaterialCardView.<init>(SourceFile:48) at java.lang.reflect.Constructor.newInstance0(Constructor.java) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:854) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at androidx.databinding.DataBindingUtil.inflate$45cd3863(SourceFile:126) at androidx.databinding.ViewDataBinding.inflateInternal$5250870e(SourceFile:1366) at com.example.app.LoginFragmentBinding.inflate(SourceFile:1090) at com.example.app.LoginFragment.onCreateView(SourceFile:66) at androidx.fragment.app.Fragment.performCreateView(SourceFile:2439) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:1460) at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(SourceFile:1784) at androidx.fragment.app.BackStackRecord.executeOps(SourceFile:797) at androidx.fragment.app.FragmentManagerImpl.executeOps(SourceFile:2625) at androidx.fragment.app.FragmentManagerImpl.moveToState(SourceFile:2411) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:2366) at androidx.fragment.app.FragmentManagerImpl.execPendingActions(SourceFile:2273) at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(SourceFile:3273) at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(SourceFile:3229) at androidx.fragment.app.Fragment.performActivityCreated(SourceFile:2466) at androidx.fragment.app.FragmentManagerImpl.moveToState(SourceFile:1483) at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(SourceFile:1784) at androidx.fragment.app.BackStackRecord.executeOps(SourceFile:797) at androidx.fragment.app.FragmentManagerImpl.executeOps(SourceFile:2625) at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(SourceFile:2411) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(SourceFile:2366) at androidx.fragment.app.FragmentManagerImpl.execPendingActions(SourceFile:2273) at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(SourceFile:3273) at androidx.fragment.app.FragmentActivity.androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(SourceFile:17229) at androidx.appcompat.app.AppCompatActivity.onStart(SourceFile:178) at com.ing.mobile.app.activities.INGMobileActivity.onStart(SourceFile:145) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433) at android.app.Activity.performStart(Activity.java:7978) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3472) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2147) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7814) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) 

    Layout

    <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <import type="model.CustomerType" /> <import type="android.view.View" /> <import type="AccessibilityUtils" /> <variable name="view" type="login.LoginView" /> <variable name="presenter" type="login.LoginPresenter" /> </data> <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:liftOnScroll="?attr/myAppBarLayoutScrollingBehaviorEnabled"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" app:navigationContentDescription="@string/login__cancel_content_description" app:navigationIcon="?attr/navigationCloseDrawable"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:contentDescription="@string/login__header_content_description" app:srcCompat="@drawable/logo" /> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="?attr/myAppBarLayoutScrollingBehavior"> <com.google.android.material.card.MaterialCardView style="?attr/myCardViewFullWidthStyle" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" app:contentPadding="0dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <com.google.android.material.tabs.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabMode="fixed" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/card_content_padding"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:orientation="vertical" android:visibility="@{view.customerType == CustomerType.PRIVATE ? View.VISIBLE : View.GONE}"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/text_vertical_spacing" android:text="@string/login__title_private" android:textAppearance="?attr/textAppearanceHeadline5" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:contentDescription="@string/login__body_private_accessibility" android:text="@{AccessibilityUtils.makeWordAccessible(@string/login__body_private)}" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:orientation="vertical" android:visibility="@{view.customerType == CustomerType.BUSINESS ? View.VISIBLE : View.GONE}"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/text_vertical_spacing" android:text="@string/login__title_business" android:textAppearance="?attr/textAppearanceHeadline5" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:contentDescription="@string/login__body__accessibility" android:text="@{AccessibilityUtils.makeWordAccessible(@string/login__body)}" /> </LinearLayout> <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="-4dp" android:layout_marginTop="16dp" android:layout_marginEnd="-4dp" android:layout_marginBottom="@dimen/input_vertical_spacing" android:hint="@string/login__username"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:text="@={view.username}" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="-4dp" android:layout_marginEnd="-4dp" android:hint="@string/login_password_hint"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:singleLine="true" android:text="@={view.password}" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.button.MaterialButton android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/buttons_margin_top" android:layout_marginBottom="@dimen/button_vertical_spacing" android:onClick="@{() -> presenter.onLoginClicked(view.username, view.password)}" android:text="@string/login_label" /> <com.google.android.material.button.MaterialButton android:id="@+id/help_button" style="?attr/buttonTextStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="@{() -> presenter.onForgotCredentialsClicked()}" android:text="@string/login_help" /> </LinearLayout> </LinearLayout> </com.google.android.material.card.MaterialCardView> </androidx.core.widget.NestedScrollView> </androidx.coordinatorlayout.widget.CoordinatorLayout> </layout> 

    Attribute/Style

    <item name="myCardViewFullWidthStyle">@style/CardView.FullWidth</item> <style name="CardView.FullWidth" parent="Widget.MaterialComponents.CardView"> <item name="cardCornerRadius">@dimen/card_fullwidth_corner_radius</item> <item name="cardElevation">@dimen/card_fullwidth_elevation</item> <item name="contentPadding">@dimen/card_fullwidth_content_padding</item> <item name="android:layout_width">@dimen/card_fullwidth_width</item> <item name="android:layout_marginTop">@dimen/card_fullwidth_margin_top</item> <item name="android:layout_marginBottom">@dimen/card_fullwidth_margin_bottom</item> </style> 

    And the resource ID #0x7f040378 that system is unable to find seems to be style="?attr/myCardViewFullWidthStyle" or at least something in related to CardView because that's where the crash is pointing in the layout.

     <com.google.android.material.card.MaterialCardView style="?attr/myCardViewFullWidthStyle" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" app:contentPadding="0dp"> 

    Hope I've put enough details and it's understable what my goal is. Looking forward for suggestion, ideas or fix!

    Edit:
    It happens on prod app version with proguard.

    submitted by /u/msqdev
    [link] [comments]

    Google Removes The Indian App That Helped Users To Remove Chinese Apps

    Posted: 03 Jun 2020 02:16 AM PDT

    how to implement adview with databinding correctly.

    Posted: 03 Jun 2020 04:19 AM PDT

    Hi, fellow android developers, I hope all of your doing great Currently I am developing news android app and I have implemented adview with databinding but when I run the code I am getting following exception java.lang.IllegalStateException: The ad size and ad unit ID must be set before loadAd is called.?

    even I posted my question to StackOverflow https://stackoverflow.com/questions/62150185/java-lang-illegalstateexception-the-ad-size-and-ad-unit-id-must-be-set-before-l but I have tried suggested answer it did not work at all any help will be appreciated I have tried set ad unit size and id XML as well as programmatically using kotlin it did not work at all

    submitted by /u/yodgor777
    [link] [comments]

    Android Volley Issue

    Posted: 03 Jun 2020 08:02 AM PDT

    I have a project in which i have to get data from a HTTP server hosted on an ESP8266. To do that i used android volley and i'm using the GET method on a JSON. I connect to my ESP via Wi-Fi (I configured the ESP as an access point) and after connecting to it i have no real access to the internet. Does Volley require a permanent internet connection or is there some issue other than no internet access? (When i try the app on some other fake json server like https://my-json-server.typicode.com/typicode/demo/db it works as intended)

    https://pastebin.com/MATdMWzz

    submitted by /u/andrey1515
    [link] [comments]

    Playing with Github Actions

    Posted: 03 Jun 2020 04:02 AM PDT

    Help on app getting rejected

    Posted: 03 Jun 2020 07:13 AM PDT

    Help on app getting rejected

    Hey guys,

    I developed an app using flutter and that has been approved and live on apple store but I am having a hard time getting that to be approved on google play. I am hoping that since it is my first one I am missing something that you guys can help me identify.

    All that I receive from google are some generic rejection messages that do not point me to the issue itself (apple does a much better job on it). I tried opening a support ticket and look on the console but everything that I receive back from them is more generic messages.

    Here is the email I received:

    After a recent review, we found that your app BOTW Armor Tracker is not compliant with one or more of our Developer Program Policies. See below for more information about your app's status and how to correct the issue. Google reserves the discretion to include or remove apps from Google Play. We may take action based on a number of factors including, but not limited to, a pattern of harmful behavior or high risk of abuse. We identify risk of abuse using various items such as previous violation history, user feedback, and use of popular brands, characters, and other assets.App status: Rejected - Your app has been rejected and wasn't published due to a policy violation. If you submitted an update, the previous version of your app is still available on Google Play.

    Reading this I don't know what is wrong. So maybe you guys being more experienced in android apps could point me to a better direction or somehow find out exactly what they are complaining about.

    My app is related to the Legend of Zelda game and you can track the armor that you have obtained etc... if you check the apple store link you can see the images, listing, icons etc

    https://apps.apple.com/us/app/botw-armor-tracker/id1512674940?ls=1

    I basically add the same images, icon, and text for the app on google play but after some rejections, I started to change some things. I changed the font to not use this customized font, it is using the default android font on the icon, and within the app. So the font should no longer be a problem.

    I thought that you guys know more about what I can search for or try out.

    - I know that my app is related to a Nintendo game, but there are tons of apps there, so I don't think that solo would be a problem, right?

    - Would my bundle name be a problem? Is it com.mycompany.zeldabotw

    Here is an image of the android app. Any help would be very appreciated

    https://preview.redd.it/vk5fqngtcp251.png?width=1080&format=png&auto=webp&s=b9707966f74e22e88ba97f3567ffcb8999e227f9

    submitted by /u/leojesus
    [link] [comments]

    Junior dev for tips, tricks & advice.

    Posted: 03 Jun 2020 06:38 AM PDT

    So a little more than a week ago, I finished up a two-year vocational university and am now a fullfledged junior android developer. Sadly, the start-up company that I did my internship at couldn't employ me, so I'm out and searching for steady employment.

    While I search, does r/androiddev have any, as the title says, tricks, tips or other advice to give me? I'm mostly looking for ways to improve my programming skills. Some tips on what would be useful to learn, how to develop a better understanding of the lingo and generally keep up with the android world. But any advice is welcomed!

    Just some general info, the university taught me Java, Unity, API, UI/UX and a bit of JavaScript and HTML5. I learned Kotlin on my own during my Master thesis and the internship. And currently am trying to understand the Navigation View component.

    submitted by /u/TomRoke
    [link] [comments]

    Article: How to get the result from callback within coroutine function

    Posted: 03 Jun 2020 02:12 AM PDT

    Fragment Lifecycle - onAttach vs onCreate

    Posted: 03 Jun 2020 05:17 AM PDT

    Looking at the lifecycle of a fragment, I am wondering what would stop me from moving my logic in onCreate to onAttach.

    I am using ViewModel instead of savedInstanceState, so there is not obvious benefit to me using onCreate.

    Why is onCreate a separate callback?

    Please do not ask why I wouldn't just use onCreate, I have my reasons.

    submitted by /u/A_RandomTurtle
    [link] [comments]

    How to sell my mobile game app?

    Posted: 03 Jun 2020 04:54 AM PDT

    Hi, so I created a mobile game, and I'm not sure how to sell it now, the game on the play store, integrated with my AdMob id ads earning around few dollars a day. How does the process of me selling the app work? I Know I can list the app on flippa, but I'm not sure how to change the game app AdMob id's to the new buyer or transfer the app to the new buyer google developer account, is there any guides about this online?

    Thanks for the help!

    submitted by /u/Repboi123
    [link] [comments]

    Testing with Hilt and a Preview of Hilt/AndroidX

    Posted: 02 Jun 2020 03:19 PM PDT

    Help with sort of font to use on my social networking app

    Posted: 03 Jun 2020 05:26 AM PDT

    Would someone help me by telling me what font would be good to use on my social networking app. Currently i am using roboto but it's bot easy on the eyes and a not pleasant at all. I would like suggestions for fonts i could use. Thanks in advance

    submitted by /u/fireking09
    [link] [comments]

    female(22)

    Posted: 03 Jun 2020 06:57 AM PDT

    Hello, i am junior Android developer. I've been working(internship) in a software company as android developer and now I want to apply for that position and to work there full time. What are your recommendations about youtube chanals, projects and literature to read before i apply?

    submitted by /u/random_gal_mk
    [link] [comments]

    Android MVI with Kotlin Coroutines & Flow

    Posted: 02 Jun 2020 08:11 AM PDT

    No comments:

    Post a Comment