[{"data":1,"prerenderedAt":1835},["ShallowReactive",2],{"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F":3,"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F-related":482,"\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F-resources":1817},{"id":4,"title":5,"author":6,"body":10,"category":409,"createdAt":410,"description":411,"disclosure":412,"extension":413,"faq":414,"howTo":412,"lastVerified":412,"location":430,"meta":431,"navigation":437,"ogImage":412,"path":438,"primaryKeyword":439,"readingTime":440,"related":441,"seo":445,"sources":446,"stem":472,"tags":473,"takeaways":474,"updatedAt":410,"url":480,"__hash__":481},"blog\u002Fblog\u002Fandroid-developer-verification-requirement-2026.md","Android Developer Verification: Dates and What to Do",{"name":7,"social":8},"Simon Dziak",{"twitter":9},"@SzymonDziak",{"type":11,"value":12,"toc":393},"minimark",[13,21,24,30,35,38,41,45,48,144,147,151,154,167,171,220,224,227,230,233,236,240,243,260,263,266,270,273,277,280,295,299,302,319,322,326,329,350,353,370,374,377,381],[14,15,16,20],"p",{},[17,18,19],"strong",{},"Android developer verification means apps installed from participating stores on certified Android devices must be registered to a developer who has verified their identity, and Google's pages say the first protections began on September 30, 2026 in Brazil, Indonesia, Singapore and Thailand."," Google plans to expand verification globally to all apps on certified devices in 2027. If you publish on Google Play, most of the work is already done for you. If you distribute outside Play, you register in the Android Developer Console.",[14,22,23],{},"The facts below come from Google's developer verification pages and two Android Developers Blog posts, as shown in the sources. I checked each one on October 18, 2026.",[14,25,26,29],{},[17,27,28],{},"Disclosure:"," App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Google doesn't pay me for anything on this page.",[31,32,34],"h2",{"id":33},"what-the-requirement-is","What the requirement is",[14,36,37],{},"Google's August 25, 2025 announcement says Android will require apps to be registered by verified developers. It says verification confirms who the developer is. It does not review app content or source code.",[14,39,40],{},"Google's overview page describes it as an extra security layer to deter bad actors. It applies to certified Android devices running Android 7 or higher, according to the FAQ.",[31,42,44],{"id":43},"dates-then-and-now","Dates, then and now",[14,46,47],{},"Google's plan changed between the first announcement and the current pages. The newer pages win.",[49,50,51,67],"table",{},[52,53,54],"thead",{},[55,56,57,61,64],"tr",{},[58,59,60],"th",{},"Date",[58,62,63],{},"What Google says",[58,65,66],{},"Source",[68,69,70,88,101,116,131],"tbody",{},[55,71,72,76,79],{},[73,74,75],"td",{},"August 25, 2025",[73,77,78],{},"Early access in October 2025, open to all developers in March 2026, requirements in Brazil, Indonesia, Singapore and Thailand in September 2026, global in 2027 and beyond",[73,80,81],{},[82,83,87],"a",{"href":84,"rel":85},"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2025\u002F08\u002Felevating-android-security.html",[86],"nofollow","Android Developers Blog",[55,89,90,93,96],{},[73,91,92],{},"April 21, 2026",[73,94,95],{},"Note on the blog post: early access is closed and verification is open to all developers",[73,97,98],{},[82,99,87],{"href":84,"rel":100},[86],[55,102,103,106,109],{},[73,104,105],{},"August 2026",[73,107,108],{},"Developer APIs, limited distribution accounts and the power user advanced flow launch",[73,110,111],{},[82,112,115],{"href":113,"rel":114},"https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification",[86],"Overview",[55,117,118,123,126],{},[73,119,120],{},[17,121,122],{},"September 30, 2026",[73,124,125],{},"Protections begin for users who install apps from participating stores in Brazil, Indonesia, Singapore and Thailand on certified devices running Android 7 or higher",[73,127,128],{},[82,129,115],{"href":113,"rel":130},[86],[55,132,133,136,139],{},[73,134,135],{},"2027 and beyond",[73,137,138],{},"Verification capability expanded globally for all apps on certified Android devices",[73,140,141],{},[82,142,115],{"href":113,"rel":143},[86],[14,145,146],{},"One change is worth noting. The 2025 post speaks of requirements for installing apps on certified devices. The FAQ now says the September 30 deadline applies only to the specific participating stores, and that sideloaded apps and other stores are not subject to the requirements yet. The FAQ also says that after the deadline, unregistered apps cannot be installed from participating stores in the selected regions.",[31,148,150],{"id":149},"what-gets-registered","What gets registered",[14,152,153],{},"Google's guides list three steps for every developer:",[155,156,157,161,164],"ol",{},[158,159,160],"li",{},"Sign up. Play developers are registered through their existing account. Everyone else creates an Android Developer Console account.",[158,162,163],{},"Verify your identity as an individual or an organization. Organizations must also provide a website, which is verified through Google Search Console. The FAQ adds that an organization needs a D-U-N-S number, and that getting one can take up to 28 days.",[158,165,166],{},"Register your package names. You prove ownership by providing an APK signed with your private key.",[31,168,170],{"id":169},"which-path-you-take","Which path you take",[49,172,173,185],{},[52,174,175],{},[55,176,177,180,183],{},[58,178,179],{},"Where you distribute",[58,181,182],{},"Where you register",[58,184,63],{},[68,186,187,198,209],{},[55,188,189,192,195],{},[73,190,191],{},"Only on Google Play",[73,193,194],{},"Your existing Play Console account",[73,196,197],{},"99% of apps on Play were registered automatically. Check your Play Console Home page",[55,199,200,203,206],{},[73,201,202],{},"On and off Google Play",[73,204,205],{},"Play Console can be the single place to manage all verification requirements, including for apps outside Play",[73,207,208],{},"Register package names for apps you ship outside Play too",[55,210,211,214,217],{},[73,212,213],{},"Only outside Google Play",[73,215,216],{},"A new Android Developer Console account",[73,218,219],{},"Complete identity verification, then register package names and keys",[31,221,223],{"id":222},"if-you-publish-on-google-play","If you publish on Google Play",[14,225,226],{},"Google's Play Console guide says 99% of apps on Play were registered automatically using information you already provided. It still tells you to check your Play Console Home page. If you use Play App Signing, the FAQ says Google has the information it needs to identify your ownership, and eligible apps are part of the automatic registration.",[14,228,229],{},"New apps are registered when you create them in Play Console. If another developer already uses the package name, Play Console asks you to pick a different one.",[14,231,232],{},"The FAQ also says that if you distribute on Play, your apps across all form factors must be registered. Enforcement outside Play applies to mobile and tablet form factors in the selected regions.",[14,234,235],{},"My advice: open the Play Console Home page this week and confirm every app shows as registered. Also confirm that apps you ship outside Play, such as a direct APK download, are registered too.",[31,237,239],{"id":238},"if-you-distribute-outside-google-play","If you distribute outside Google Play",[14,241,242],{},"The Android Developer Console guide gives these steps for registering a package name:",[155,244,245,248,251,254,257],{},[158,246,247],{},"Create an account with your Google Account and complete identity verification.",[158,249,250],{},"Open the Packages page and enter the package name.",[158,252,253],{},"Add the SHA-256 certificate fingerprint of your app's signing key. The status becomes In review.",[158,255,256],{},"For an existing package name, sign an APK with your private key and upload it. Google says the console gives you a snippet to add to the APK's asset folder.",[158,258,259],{},"When it is registered, you get an email and the status changes to Registered.",[14,261,262],{},"The FAQ says the console lets you add and verify multiple signing keys for one package. It also says that if you lose your signing key, you won't be able to register your packages. If a package name is already claimed, Google may tell you your key is not eligible to claim it, and you should consider a different package name.",[14,264,265],{},"My advice: find your release keystore backup before you start. Everything else depends on that key.",[31,267,269],{"id":268},"fees","Fees",[14,271,272],{},"The FAQ says the $25 fee for the Full Distribution account in the Android Developer Console helps cover administrative costs, similar to Play's $25 registration fee. It says Google is waiving the fee for developers who qualify for a Limited Distribution account. The Play Console guide mentions no fee.",[31,274,276],{"id":275},"students-and-hobbyists","Students and hobbyists",[14,278,279],{},"Google's limited distribution guide describes an account for students, hobbyists and learners who share apps with a small number of people.",[281,282,283,286,289,292],"ul",{},[158,284,285],{},"You can share apps with up to 20 devices that users have explicitly authorized.",[158,287,288],{},"The account is free and needs no government ID.",[158,290,291],{},"You need a Google Account with 2-Step verification, a linked Google payments profile for your legal name and address, and a contact email that isn't shown publicly.",[158,293,294],{},"The FAQ says Google supports migrating a limited account to a full account, but not the other way around.",[31,296,298],{"id":297},"what-changes-for-users-who-sideload","What changes for users who sideload",[14,300,301],{},"Google's March 19, 2026 post says it added an advanced flow after hearing from power users who want to install software from unverified developers. According to the FAQ, it is a one-time setup:",[155,303,304,307,310,313,316],{},[158,305,306],{},"Turn on developer mode.",[158,308,309],{},"Confirm you aren't being coached by someone pressuring you.",[158,311,312],{},"Restart the phone and sign in again.",[158,314,315],{},"Wait one day, then verify with biometrics or your device PIN.",[158,317,318],{},"Choose to allow installs for 7 days or indefinitely.",[14,320,321],{},"Unverified apps still show a warning, and the user taps Install Anyway. The FAQ also says developers are free to install apps without verification using ADB, and that unregistered apps can be installed or updated only with the advanced flow or ADB. If the advanced flow is off, updates to unregistered apps fail.",[31,323,325],{"id":324},"what-it-means-for-a-flutter-app","What it means for a Flutter app",[14,327,328],{},"Nothing on Google's pages is specific to Flutter. Google registers an app by its package name and the key that signs it. In a Flutter project, that means two things to look up:",[281,330,331,347],{},[158,332,333,334,338,339,342,343,346],{},"The package name, set as the ",[335,336,337],"code",{},"applicationId"," in ",[335,340,341],{},"android\u002Fapp\u002Fbuild.gradle"," or ",[335,344,345],{},"build.gradle.kts",".",[158,348,349],{},"The key that signs your release build, which is your upload key if you use Play App Signing, or your own app signing key if you ship a direct APK.",[14,351,352],{},"If you use Play App Signing, your Play-distributed apps are covered by the automatic registration described above. If you also ship a direct APK, make sure that APK is signed with a key you have registered. My advice: keep one package name per app across Play and your own downloads, so there is one record to check.",[14,354,355,356,360,361,365,366,346],{},"This is a separate track from the Play Store policy changes. If you are also working through those, see the ",[82,357,359],{"href":358},"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","target API 36 guide",", the ",[82,362,364],{"href":363},"\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F","16 KB page size guide"," and the ",[82,367,369],{"href":368},"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","Play Billing Library guide",[31,371,373],{"id":372},"developer-apis","Developer APIs",[14,375,376],{},"The FAQ describes two APIs. The Status API checks package name eligibility and registration status. The Console API registers package names and manages keys programmatically, and Google says both are designed for bulk registration or CI\u002FCD pipelines. The FAQ also says you can check status in Play Console, the Android Developer Console and Android Studio Panda 4 and higher.",[31,378,380],{"id":379},"need-a-hand","Need a hand?",[14,382,383,384,388,389,346],{},"If you're not sure what your Android app needs to register, or an install starts failing on verified devices, the ",[82,385,387],{"href":386},"\u002Ffixed-price\u002Fflutter-firebase-bug-fix\u002F","App Fix Ticket"," covers it in two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days and comes as a pull request. Or ",[82,390,392],{"href":391},"\u002Fcontact\u002F","send me a short description",{"title":394,"searchDepth":395,"depth":395,"links":396},"",2,[397,398,399,400,401,402,403,404,405,406,407,408],{"id":33,"depth":395,"text":34},{"id":43,"depth":395,"text":44},{"id":149,"depth":395,"text":150},{"id":169,"depth":395,"text":170},{"id":222,"depth":395,"text":223},{"id":238,"depth":395,"text":239},{"id":268,"depth":395,"text":269},{"id":275,"depth":395,"text":276},{"id":297,"depth":395,"text":298},{"id":324,"depth":395,"text":325},{"id":372,"depth":395,"text":373},{"id":379,"depth":395,"text":380},"AI & Technology","2026-10-18T20:30:00.000Z","Android developer verification means apps on certified Android devices must come from registered developers. The dates, the first four countries, what Play Console and non-Play developers do, and what it means for Flutter apps, from Google's pages checked October 18, 2026.",null,"md",[415,418,421,424,427],{"question":416,"answer":417},"What is Android developer verification?","It is a Google requirement that apps installed from participating stores on certified Android devices come from registered developers, with global expansion planned for 2027. Google's August 25, 2025 announcement says it confirms who the developer is and does not review app content. Developers verify their identity and register their package names and signing keys.",{"question":419,"answer":420},"Does it apply to apps I distribute outside Google Play?","Yes, eventually. Google's overview page says verification capability will expand globally for all apps on certified Android devices in 2027. For now, the FAQ says the September 30, 2026 deadline applies only to specific participating stores in select regions, and that sideloaded apps and other stores are not subject to it yet.",{"question":422,"answer":423},"How much does it cost?","The FAQ says the Full Distribution account in the Android Developer Console costs $25. It says Google is waiving the fee for developers who qualify for a Limited Distribution account. Google Play developers use their existing Play Console account, and the Play Console guide mentions no fee for registration.",{"question":425,"answer":426},"Do I need to do anything special for a Flutter app?","No Flutter-specific step appears on Google's pages. Registration is by package name and signing key. In a Flutter project the package name is the applicationId in the Android Gradle config, and the key is the one that signs your release build. If you use Play App Signing, Google says it already has the information to identify your ownership.",{"question":428,"answer":429},"What can students and hobbyists do?","They can create a Limited Distribution account. Google's guide says it is free, needs no government ID, and lets you share apps with up to 20 devices that users have explicitly authorized. You still need a Google Account with 2-Step verification and a linked Google payments profile.","Boynton Beach, FL",{"readingTimeStats":432},{"text":433,"minutes":434,"time":435,"words":436},"8 min read",7.11,426600,1422,true,"\u002Fblog\u002Fandroid-developer-verification-requirement-2026","android developer verification","7 min",[442,443,444],"google-play-target-api-36-android-16-requirement-2026","google-play-16kb-page-size-flutter-android-2026","play-billing-library-7-deprecated-update-to-8-2026",{"title":5,"description":411},[447,450,452,455,458,461,464,467,469],{"title":448,"url":449},"Flutter docs, Build and release an Android app","https:\u002F\u002Fdocs.flutter.dev\u002Fdeployment\u002Fandroid",{"title":451,"url":113},"Android Developers, Android developer verification (overview)",{"title":453,"url":454},"Android Developers, Developer verification guides (steps and dates, page last updated 2026-08-18)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides",{"title":456,"url":457},"Android Developers, Developer verification FAQ (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Ffaq",{"title":459,"url":460},"Android Developers, Verify with Google Play Console (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Fgoogle-play-console",{"title":462,"url":463},"Android Developers, Register on Android Developer Console (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Fandroid-developer-console",{"title":465,"url":466},"Android Developers, Limited distribution accounts (page last updated 2026-09-30)","https:\u002F\u002Fdeveloper.android.com\u002Fdeveloper-verification\u002Fguides\u002Flimited-distribution",{"title":468,"url":84},"Android Developers Blog, Elevating Android security (August 25, 2025)",{"title":470,"url":471},"Android Developers Blog, Android developer verification (March 19, 2026)","https:\u002F\u002Fandroid-developers.googleblog.com\u002F2026\u002F03\u002Fandroid-developer-verification.html","blog\u002Fandroid-developer-verification-requirement-2026","android developer verification, android developer verification requirement, android developer console, android sideloading verification, register android package name, android developer verification flutter, limited distribution account android, android advanced flow sideload, play console package name registration",[475,476,477,478,479],"Android developer verification means apps installed from participating stores on certified Android devices must be registered to a verified developer. Google's pages say protections began on September 30, 2026 in Brazil, Indonesia, Singapore and Thailand, with a global expansion planned for 2027.","If you publish on Google Play, you use your existing Play Console account. Google says 99% of apps on Play were registered automatically, and Play developers should check the Play Console Home page for their status.","If you distribute only outside Google Play, you create an Android Developer Console account. The FAQ says the Full Distribution account costs $25, and Limited Distribution accounts for students and hobbyists are free and need no government ID.","What gets registered is your identity, your package names and the signing keys behind them. Nothing about this is Flutter-specific. A Flutter app is registered by its package name and signing key like any other Android app.","Google's pages say sideloaded apps and other stores are not subject to the September 30 deadline yet. Unregistered apps can still be installed with ADB or through the advanced flow.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fandroid-developer-verification-requirement-2026\u002F","7zqooa5yAHI0b0idR40otzg38R06CxR7_E6E5uvhKQU",[483,933,1328],{"id":484,"title":485,"author":486,"body":488,"category":409,"createdAt":876,"description":877,"disclosure":412,"extension":413,"faq":878,"howTo":412,"lastVerified":412,"location":430,"meta":894,"navigation":437,"ogImage":412,"path":900,"primaryKeyword":901,"readingTime":440,"related":902,"seo":905,"sources":906,"stem":923,"tags":924,"takeaways":925,"updatedAt":876,"url":931,"__hash__":932},"blog\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026.md","Google Play Requires Target API 36: The Android 16 Update",{"name":7,"social":487},{"twitter":9},{"type":11,"value":489,"toc":869},[490,500,503,507,511,551,560,563,583,587,596,669,676,680,698,742,745,748,807,823,827,830,860,862],[14,491,492,495,496,499],{},[17,493,494],{},"Since August 31, 2026, Google Play only accepts new apps and updates that target Android 16 (API level 36), and Google says you'll be able to request an extension to November 1, 2026."," Raising ",[335,497,498],{},"targetSdkVersion"," is one line, but it turns on Android 16 behavior: no edge-to-edge opt-out, predictive back by default, and no orientation lock on tablets. Test those three before you ship. In a Flutter app, the quickest path is usually Flutter 3.35 or later, which targets 36 by default.",[14,501,502],{},"The requirements below come from Google's target API page and its Android 16 behavior changes, and the Flutter defaults from Flutter's source code, as listed in the sources. I checked each one on October 18, 2026.",[14,504,505,29],{},[17,506,28],{},[31,508,510],{"id":509},"the-requirement","The requirement",[49,512,513,523],{},[52,514,515],{},[55,516,517,520],{},[58,518,519],{},"App type",[58,521,522],{},"Must target, for new apps and updates from August 31, 2026",[68,524,525,535,543],{},[55,526,527,530],{},[73,528,529],{},"Phone and tablet apps",[73,531,532],{},[17,533,534],{},"Android 16 (API level 36)",[55,536,537,540],{},[73,538,539],{},"Wear OS and Android Automotive OS",[73,541,542],{},"Android 15 (API level 35)",[55,544,545,548],{},[73,546,547],{},"Android TV and Android XR",[73,549,550],{},"Android 14 (API level 34)",[14,552,553,554,559],{},"Source: ",[82,555,558],{"href":556,"rel":557},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Frequirements\u002Ftarget-sdk",[86],"Google Play target API level requirement",", last updated October 16, 2026.",[14,561,562],{},"Google's page also says:",[281,564,565,571,577],{},[158,566,567,570],{},[17,568,569],{},"Extension:"," if you need more time, you'll be able to request an extension to November 1, 2026. Google says the extension forms will be in Play Console \"later this year\", so check there for the form.",[158,572,573,576],{},[17,574,575],{},"Existing apps:"," to stay available to new users on devices running a newer Android version than the app targets, an existing app must target API 35 or higher. An app that targets API 34 or lower is only available on devices running that Android version or lower.",[158,578,579,582],{},[17,580,581],{},"Exception:"," permanently private apps for one organization's internal use.",[31,584,586],{"id":585},"what-changes-when-you-target-api-36","What changes when you target API 36",[14,588,589,590,595],{},"Google's ",[82,591,594],{"href":592,"rel":593},"https:\u002F\u002Fdeveloper.android.com\u002Fabout\u002Fversions\u002F16\u002Fbehavior-changes-16",[86],"Android 16 behavior changes"," apply to apps that target API 36 and run on Android 16 or higher. These are the three I'd test first:",[49,597,598,610],{},[52,599,600],{},[55,601,602,605,607],{},[58,603,604],{},"Change",[58,606,63],{},[58,608,609],{},"Temporary way out",[68,611,612,629,653],{},[55,613,614,619,626],{},[73,615,616],{},[17,617,618],{},"Edge-to-edge",[73,620,621,622,625],{},"Apps can no longer opt out of drawing behind the status and navigation bars. ",[335,623,624],{},"windowOptOutEdgeToEdgeEnforcement"," is deprecated and disabled",[73,627,628],{},"None for API 36",[55,630,631,636,647],{},[73,632,633],{},[17,634,635],{},"Predictive back",[73,637,638,639,642,643,646],{},"Predictive back animations are on by default. ",[335,640,641],{},"onBackPressed"," is not called and ",[335,644,645],{},"KEYCODE_BACK"," is not dispatched",[73,648,649,652],{},[335,650,651],{},"android:enableOnBackInvokedCallback=\"false\""," in the manifest",[55,654,655,660,663],{},[73,656,657],{},[17,658,659],{},"Large screens",[73,661,662],{},"On displays at least 600dp wide, orientation, resizability and aspect ratio restrictions are ignored, so the app fills the window",[73,664,665,668],{},[335,666,667],{},"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY",". Google says it won't apply once you target API 37",[14,670,671,672,675],{},"The large-screen rule doesn't apply to games (based on ",[335,673,674],{},"android:appCategory","), to screens smaller than 600dp, or when users opt in to the app's default behavior in the device's aspect ratio settings.",[31,677,679],{"id":678},"flutter-apps","Flutter apps",[14,681,682,683,338,686,689,690,693,694,697],{},"Flutter's project template sets the target from the Flutter version: ",[335,684,685],{},"targetSdk = flutter.targetSdkVersion",[335,687,688],{},"android\u002Fapp\u002Fbuild.gradle.kts"," in Flutter 3.35's template, and ",[335,691,692],{},"targetSdkVersion flutter.targetSdkVersion"," in older Groovy templates such as Flutter 3.10's. Flutter's ",[335,695,696],{},"FlutterExtension"," source sets it to:",[49,699,700,713],{},[52,701,702],{},[55,703,704,707],{},[58,705,706],{},"Flutter version",[58,708,709,710],{},"Default ",[335,711,712],{},"flutter.targetSdkVersion",[68,714,715,723,730],{},[55,716,717,720],{},[73,718,719],{},"3.29 (February 12, 2025)",[73,721,722],{},"35",[55,724,725,728],{},[73,726,727],{},"3.32 (May 20, 2025)",[73,729,722],{},[55,731,732,737],{},[73,733,734],{},[17,735,736],{},"3.35 (August 14, 2025) and later",[73,738,739],{},[17,740,741],{},"36",[14,743,744],{},"Release dates from Flutter's release archive.",[14,746,747],{},"What that means for a Flutter app:",[155,749,750,770,784,797],{},[158,751,752,759,760,762,763,766,767,769],{},[17,753,754,755,342,757,346],{},"Check ",[335,756,341],{},[335,758,345],{}," If it uses ",[335,761,712],{},", Flutter 3.35 or later gives you 36. If it has a hard-coded number, change it to 36 yourself (",[335,764,765],{},"targetSdk = 36"," in a ",[335,768,345],{}," file).",[158,771,772,775,776,779,780,783],{},[17,773,774],{},"Edge-to-edge."," My advice: Flutter draws its own UI, so the visible risk is content under the status or navigation bar. Check every screen with ",[335,777,778],{},"SafeArea"," or padding from ",[335,781,782],{},"MediaQuery",", including bottom sheets and screens with a bottom bar.",[158,785,786,789,790,792,793,796],{},[17,787,788],{},"Back navigation."," If the app or a plugin overrides ",[335,791,641],{}," in Android code, that override won't be called on Android 16. My advice: use ",[335,794,795],{},"PopScope"," on the Flutter side for back handling, and check plugins that intercept back.",[158,798,799,802,803,806],{},[17,800,801],{},"Tablets."," If the app locks orientation with ",[335,804,805],{},"SystemChrome.setPreferredOrientations"," or the manifest, test it on a tablet or a large emulator, because Google says that lock is ignored on screens 600dp or wider.",[14,808,809,810,365,814,818,819,822],{},"If an older app can't move to Flutter 3.35 because the Android build breaks first, the ",[82,811,813],{"href":812},"\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F","v1 embedding fix",[82,815,817],{"href":816},"\u002Fblog\u002Fflutter-gradle-plugin-applied-imperatively-fix-2026\u002F","Gradle plugin fix"," cover the two errors Flutter 3.29 introduced. If the app sells in-app purchases, the ",[82,820,821],{"href":368},"Billing Library 8 deadline"," is due at the same time.",[31,824,826],{"id":825},"what-to-do-now","What to do now",[14,828,829],{},"This section is my advice, not Google's.",[155,831,832,842,848,854],{},[158,833,834,837,838,841],{},[17,835,836],{},"Check the target your last release used."," Look at ",[335,839,840],{},"targetSdk"," in the build file for that release, or the app bundle details in Play Console.",[158,843,844,847],{},[17,845,846],{},"Request the extension if the change won't ship in time,"," once the form appears in Play Console. As of October 18, 2026, the November 1 extension date is two weeks away.",[158,849,850,853],{},[17,851,852],{},"Raise the target, then test on an Android 16 device or emulator."," Go through every screen for edge-to-edge, try the back gesture everywhere, and rotate on a tablet-sized emulator.",[158,855,856,859],{},[17,857,858],{},"Ship to a closed testing track first."," Catch layout and back-gesture issues before your users do.",[31,861,380],{"id":379},[14,863,864,865,388,867,346],{},"If an app can't ship an update because of the target API requirement, or something broke after raising it, the ",[82,866,387],{"href":386},[82,868,392],{"href":391},{"title":394,"searchDepth":395,"depth":395,"links":870},[871,872,873,874,875],{"id":509,"depth":395,"text":510},{"id":585,"depth":395,"text":586},{"id":678,"depth":395,"text":679},{"id":825,"depth":395,"text":826},{"id":379,"depth":395,"text":380},"2026-10-18T23:45:00.000Z","Since August 31, 2026, Google Play requires new apps and updates to target Android 16 (API level 36), with an extension to November 1, 2026. What changes when you target API 36 (edge-to-edge, predictive back, large-screen orientation), which Flutter versions target it by default, and what to test, from Google's docs checked October 18, 2026.",[879,882,885,888,891],{"question":880,"answer":881},"What is the Google Play target API level requirement for 2026?","Google says that starting August 31, 2026, new apps and app updates must target Android 16 (API level 36) or higher. Wear OS and Android Automotive OS apps must target API 35, and Android TV and Android XR apps API 34. Google says you'll be able to request an extension to November 1, 2026.",{"question":883,"answer":884},"What happens to my app if it targets an older API level?","Google says existing apps must target API 35 or higher to stay available to new users on devices running a newer Android version than the app targets. An app that targets API 34 or lower is only available on devices running that Android version or lower. New apps and updates must target API 36 to be submitted.",{"question":886,"answer":887},"How do I set targetSdkVersion 36 in a Flutter app?","If android\u002Fapp\u002Fbuild.gradle uses targetSdkVersion flutter.targetSdkVersion, upgrading to Flutter 3.35 or later sets it to 36, per Flutter's FlutterExtension source. Otherwise set targetSdkVersion 36 (or targetSdk = 36 in build.gradle.kts) yourself, and check that compileSdk is at least 36.",{"question":889,"answer":890},"Why did the back button stop working after targeting Android 16?","Google says that for apps targeting API 36 on Android 16 devices, onBackPressed is not called and KeyEvent.KEYCODE_BACK is not dispatched. Move to the supported back navigation APIs, or opt out temporarily with android:enableOnBackInvokedCallback=\"false\" in the manifest.",{"question":892,"answer":893},"Can I still lock my app to portrait on tablets?","Not by default. Google says that for apps targeting API 36, orientation, resizability and aspect ratio restrictions don't apply on displays at least 600dp wide, except for games and when users opt in. A temporary manifest opt-out exists, but Google says it won't apply once you target API 37.",{"readingTimeStats":895},{"text":896,"minutes":897,"time":898,"words":899},"5 min read",4.145,248700,829,"\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36",[444,903,904],"flutter-gradle-plugin-applied-imperatively-fix-2026","flutter-deleted-android-v1-embedding-build-failed-2026",{"title":485,"description":877},[907,909,911,914,917,920],{"title":908,"url":556},"Android Developers, Meet Google Play's target API level requirement (last updated October 16, 2026)",{"title":910,"url":592},"Android Developers, Behavior changes: apps targeting Android 16 or higher (last updated October 16, 2026)",{"title":912,"url":913},"Flutter on GitHub, FlutterExtension.kt at 3.35.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.35.0\u002Fpackages\u002Fflutter_tools\u002Fgradle\u002Fsrc\u002Fmain\u002Fkotlin\u002FFlutterExtension.kt",{"title":915,"url":916},"Flutter on GitHub, app build.gradle.kts template at 3.35.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.35.0\u002Fpackages\u002Fflutter_tools\u002Ftemplates\u002Fapp\u002Fandroid-kotlin.tmpl\u002Fapp\u002Fbuild.gradle.kts.tmpl",{"title":918,"url":919},"Flutter on GitHub, app build.gradle template at 3.10.0","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.10.0\u002Fpackages\u002Fflutter_tools\u002Ftemplates\u002Fapp_shared\u002Fandroid-kotlin.tmpl\u002Fapp\u002Fbuild.gradle.tmpl",{"title":921,"url":922},"Flutter release archive (macOS)","https:\u002F\u002Fstorage.googleapis.com\u002Fflutter_infra_release\u002Freleases\u002Freleases_macos.json","blog\u002Fgoogle-play-target-api-36-android-16-requirement-2026","target api level 36, google play target sdk 36, android 16 target api requirement, targetSdkVersion 36 flutter, play console target api level warning, edge to edge opt out android 16, predictive back android 16, onBackPressed not called android 16, flutter targetSdkVersion default",[926,927,928,929,930],"Since August 31, 2026, Google Play requires new apps and app updates to target Android 16 (API level 36). Wear OS and Android Automotive OS apps need API 35, and Android TV and Android XR apps need API 34.","Google says you'll be able to request an extension to November 1, 2026, and that the extension forms will be in Play Console.","Existing apps must target API 35 or higher to stay available to new users on devices running a newer Android version than the app targets.","Targeting API 36 changes behavior on Android 16 devices: apps can no longer opt out of edge-to-edge, predictive back is on by default and onBackPressed is no longer called, and orientation and resizability limits are ignored on screens at least 600dp wide.","Flutter 3.35 and later set flutter.targetSdkVersion to 36. Flutter 3.29 and 3.32 set it to 35, so an app on those versions has to upgrade Flutter or set 36 itself.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-target-api-36-android-16-requirement-2026\u002F","IQ1ZDe02nMyEW91krtaNe5bo5GALwyHxNVZpM87q73w",{"id":934,"title":935,"author":936,"body":938,"category":409,"createdAt":1276,"description":1277,"disclosure":412,"extension":413,"faq":1278,"howTo":412,"lastVerified":412,"location":430,"meta":1294,"navigation":437,"ogImage":412,"path":1299,"primaryKeyword":1300,"readingTime":440,"related":1301,"seo":1303,"sources":1304,"stem":1318,"tags":1319,"takeaways":1320,"updatedAt":1276,"url":1326,"__hash__":1327},"blog\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026.md","Google Play 16 KB Page Size: Fixing Flutter and Android Apps",{"name":7,"social":937},{"twitter":9},{"type":11,"value":939,"toc":1266},[940,946,949,953,957,1005,1008,1011,1016,1035,1039,1042,1084,1088,1099,1157,1159,1195,1198,1201,1242,1253,1255,1262],[14,941,942,945],{},[17,943,944],{},"If Play Console warns that your app doesn't support 16 KB memory page sizes, the fix is usually a newer Android Gradle Plugin and NDK, plus updated native dependencies."," Google requires apps targeting Android 15 and higher to support 16 KB pages on 64-bit devices, and says that starting February 1, 2027, updates without it can't be released. In my experience every Flutter Android app ships native code, so Flutter apps are in scope, and Flutter 3.38 is the first version that defaults to the NDK Google's fix needs.",[14,947,948],{},"The facts below come from Google's page-size guide, Google's May 2025 announcement, Flutter's 3.38 release post and Flutter's source code, as listed in the sources. I checked each one on October 18, 2026.",[14,950,951,29],{},[17,952,28],{},[31,954,956],{"id":955},"the-requirement-and-the-dates","The requirement and the dates",[49,958,959,970],{},[52,960,961],{},[55,962,963,965,968],{},[58,964,60],{},[58,966,967],{},"What Google said",[58,969,66],{},[68,971,972,986],{},[55,973,974,977,980],{},[73,975,976],{},"May 2025",[73,978,979],{},"From November 1, 2025, new apps and updates targeting Android 15+ must support 16 KB page sizes",[73,981,982],{},[82,983,87],{"href":984,"rel":985},"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2025\u002F05\u002Fprepare-play-apps-for-devices-with-16kb-page-size.html",[86],[55,987,988,993,998],{},[73,989,990],{},[17,991,992],{},"As of October 16, 2026",[73,994,995],{},[17,996,997],{},"Apps targeting Android 15+ must support 16 KB pages on 64-bit devices. From February 1, 2027, updates that don't can't be released",[73,999,1000],{},[82,1001,1004],{"href":1002,"rel":1003},"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fpractices\u002Fpage-sizes",[86],"Google page-size guide",[14,1006,1007],{},"The guide, last updated October 16, 2026, is the newer source, so I'd plan around February 1, 2027 and check Play Console for any warning on your own app.",[14,1009,1010],{},"Google's guide also explains why: devices with more memory are moving to 16 KB pages, and without recompiling, apps won't work on 16 KB devices in future Android releases. On a 16 KB device today, an app with 4 KB-aligned .so files that are stored uncompressed in the APK can run in a backcompat mode that shows a warning when it first launches.",[1012,1013,1015],"h3",{"id":1014},"who-is-affected","Who is affected",[14,1017,1018,1019,1022,1023,1026,1027,1030,1031,1034],{},"Only apps with native code: ",[335,1020,1021],{},".so"," files in the APK's ",[335,1024,1025],{},"lib"," folder. That includes apps that use native code through an SDK or library, not just apps you wrote C or C++ for. In my experience, every Flutter Android release build has native libraries in that folder: ",[335,1028,1029],{},"libflutter.so"," for the engine and ",[335,1032,1033],{},"libapp.so"," for your compiled Dart code. Analyze APK, below, shows them.",[31,1036,1038],{"id":1037},"check-your-app","Check your app",[14,1040,1041],{},"Google's guide lists three checks:",[155,1043,1044,1053,1061],{},[158,1045,1046,1049,1050,1052],{},[17,1047,1048],{},"Analyze APK in Android Studio."," Open Build > Analyze APK, pick the APK and look in the ",[335,1051,1025],{}," folder. The Alignment column shows warnings for files with alignment problems.",[158,1054,1055,1060],{},[17,1056,1057],{},[335,1058,1059],{},"check_elf_alignment.sh"," on Linux or macOS. Run it on the APK. It reports whether each library is aligned.",[158,1062,1063,1068,1069],{},[17,1064,1065],{},[335,1066,1067],{},"zipalign"," for zip alignment. Google's example uses the copy in build-tools 35.0.0:",[1070,1071,1075],"pre",{"className":1072,"code":1073,"language":1074,"meta":394,"style":394},"language-console shiki shiki-themes github-light github-dark","zipalign -v -c -P 16 4 APK_NAME.apk\n","console",[335,1076,1077],{"__ignoreMap":394},[1078,1079,1082],"span",{"class":1080,"line":1081},"line",1,[1078,1083,1073],{},[31,1085,1087],{"id":1086},"fix-it","Fix it",[14,1089,1090,1091,1094,1095,1098],{},"Google's shortcut: if you update to ",[17,1092,1093],{},"AGP 8.5.1 or higher"," and ",[17,1096,1097],{},"NDK r28 or higher",", and your prebuilt dependencies are 16 KB compatible, the app is 16 KB compatible by default.",[49,1100,1101,1111],{},[52,1102,1103],{},[55,1104,1105,1108],{},[58,1106,1107],{},"If you're on",[58,1109,1110],{},"Google's guidance",[68,1112,1113,1125,1132,1146],{},[55,1114,1115,1118],{},[73,1116,1117],{},"AGP below 8.5.1",[73,1119,1120,1121,1124],{},"Upgrade to 8.5.1 or higher. Google notes that with AGP 8.3 to 8.5, an app can seem to work but fail to install when Play builds it from a bundle. If you can't upgrade, Google gives a ",[335,1122,1123],{},"useLegacyPackaging"," setting",[55,1126,1127,1129],{},[73,1128,1097],{},[73,1130,1131],{},"Compiles 16 KB-aligned by default",[55,1133,1134,1137],{},[73,1135,1136],{},"NDK r27 or lower",[73,1138,1139,1140,1094,1143],{},"Add the linker flags ",[335,1141,1142],{},"-Wl,-z,max-page-size=16384",[335,1144,1145],{},"-Wl,-z,common-page-size=16384",[55,1147,1148,1154],{},[73,1149,1150,1151,1153],{},"Prebuilt ",[335,1152,1021],{}," files from an SDK",[73,1155,1156],{},"Get a 16 KB-compatible version from the vendor, or recompile them the same way",[31,1158,679],{"id":678},[49,1160,1161,1173],{},[52,1162,1163],{},[55,1164,1165,1167],{},[58,1166,706],{},[58,1168,709,1169,1172],{},[335,1170,1171],{},"ndkVersion"," in Flutter's source",[68,1174,1175,1183],{},[55,1176,1177,1180],{},[73,1178,1179],{},"3.35 (August 14, 2025)",[73,1181,1182],{},"27.0.12077973 (NDK r27)",[55,1184,1185,1190],{},[73,1186,1187],{},[17,1188,1189],{},"3.38 (November 12, 2025)",[73,1191,1192],{},[17,1193,1194],{},"28.2.13676358 (NDK r28)",[14,1196,1197],{},"Flutter's 3.38 post calls upgrading \"essential preparation\" for the 16 KB requirement and says NDK r28 is the minimum for the alignment.",[14,1199,1200],{},"What to do in a Flutter app:",[155,1202,1203,1214,1227,1236],{},[158,1204,1205,1208,1209,338,1211,1213],{},[17,1206,1207],{},"Upgrade Flutter to 3.38 or later",", or set ",[335,1210,1171],{},[335,1212,341],{}," to an r28 version if you can't upgrade yet. My advice: upgrading is safer, because Flutter's 3.38 post lists a set of Gradle, AGP and Kotlin versions that Flutter tested together.",[158,1215,1216,338,1219,1222,1223,1226],{},[17,1217,1218],{},"Check the AGP version",[335,1220,1221],{},"android\u002Fsettings.gradle"," (or the ",[335,1224,1225],{},"buildscript"," block on older projects). It needs to be 8.5.1 or higher.",[158,1228,1229,1232,1233,1235],{},[17,1230,1231],{},"Update plugins that ship native libraries."," My advice: after building, run Analyze APK and look at every ",[335,1234,1021],{}," file. A plugin with an old prebuilt library is the usual reason an app still fails after the Flutter upgrade.",[158,1237,1238,1241],{},[17,1239,1240],{},"Test on a 16 KB emulator."," Google's guide covers Android 15 emulator images with 16 KB page sizes. My advice: install a build there and make sure it starts without the compatibility warning.",[14,1243,1244,1245,365,1247,1249,1250,346],{},"If the Flutter upgrade breaks the Android build first, see the ",[82,1246,813],{"href":812},[82,1248,817],{"href":816},". Google Play also requires new apps and updates to target API 36 since August 31, 2026: see ",[82,1251,1252],{"href":358},"the target API 36 guide",[31,1254,380],{"id":379},[14,1256,1257,1258,388,1260,346],{},"If Play Console flags your app for 16 KB page sizes, or an update fails after the fix, the ",[82,1259,387],{"href":386},[82,1261,392],{"href":391},[1263,1264,1265],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":394,"searchDepth":395,"depth":395,"links":1267},[1268,1272,1273,1274,1275],{"id":955,"depth":395,"text":956,"children":1269},[1270],{"id":1014,"depth":1271,"text":1015},3,{"id":1037,"depth":395,"text":1038},{"id":1086,"depth":395,"text":1087},{"id":678,"depth":395,"text":679},{"id":379,"depth":395,"text":380},"2026-10-18T23:58:00.000Z","Google Play requires apps targeting Android 15 and higher to support 16 KB memory page sizes on 64-bit devices, and Google says that from February 1, 2027 updates without it can't be released. How to check an APK, the AGP and NDK versions that fix it, and why Flutter 3.38 matters, from Google's and Flutter's docs checked October 18, 2026.",[1279,1282,1285,1288,1291],{"question":1280,"answer":1281},"What is the Google Play 16 KB page size requirement?","Google says all apps targeting Android 15 (API level 35) and higher must support 16 KB memory page sizes on 64-bit devices on Google Play, and that starting February 1, 2027, app updates that don't support 16 KB page sizes can't be released.",{"question":1283,"answer":1284},"Does my Flutter app need to change for 16 KB pages?","In my experience Flutter apps ship native libraries, so they are in scope. Flutter's 3.38 release notes say 3.38 moved the default NDK to r28, the minimum Flutter names for 16 KB alignment. On an older Flutter, upgrade, or set a newer ndkVersion, and check every plugin that ships its own native libraries.",{"question":1286,"answer":1287},"How do I check whether my APK supports 16 KB pages?","Google lists three ways: Android Studio's Analyze APK shows alignment warnings for .so files in the lib folder, the check_elf_alignment.sh script checks ELF alignment on Linux or macOS, and zipalign -v -c -P 16 4 checks zip alignment.",{"question":1289,"answer":1290},"Which AGP and NDK versions do I need?","Google says AGP 8.5.1 or higher and NDK r28 or higher make an app 16 KB compatible by default, as long as prebuilt dependencies are 16 KB compatible too. With NDK r27 or lower, Google gives linker flags to set a 16 KB max page size.",{"question":1292,"answer":1293},"What happened to the November 1, 2025 date?","Google's May 2025 Android Developers Blog post said that from November 1, 2025, new apps and updates targeting Android 15+ must support 16 KB pages. Google's page-size guide, last updated October 16, 2026, says that starting February 1, 2027, updates without 16 KB support can't be released. Check Play Console for the dates that apply to your app.",{"readingTimeStats":1295},{"text":896,"minutes":1296,"time":1297,"words":1298},4.035,242100,807,"\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026","16 kb page size",[442,444,1302],"flutter-uiscene-migration-xcode-27-app-wont-launch-2026",{"title":935,"description":1277},[1305,1307,1309,1312,1314,1317],{"title":1306,"url":1002},"Android Developers, Support 16 KB page sizes (last updated October 16, 2026)",{"title":1308,"url":984},"Android Developers Blog, \"Prepare your apps for Google Play's 16 KB page size compatibility requirement\" (May 2025)",{"title":1310,"url":1311},"Flutter blog, What's new in Flutter 3.38","https:\u002F\u002Fflutter.dev\u002Fblog\u002Fwhats-new-in-flutter-3-38",{"title":1313,"url":913},"Flutter on GitHub, FlutterExtension.kt at 3.35.0 (default ndkVersion)",{"title":1315,"url":1316},"Flutter on GitHub, FlutterExtension.kt at 3.38.0 (default ndkVersion)","https:\u002F\u002Fgithub.com\u002Fflutter\u002Fflutter\u002Fblob\u002F3.38.0\u002Fpackages\u002Fflutter_tools\u002Fgradle\u002Fsrc\u002Fmain\u002Fkotlin\u002FFlutterExtension.kt",{"title":921,"url":922},"blog\u002Fgoogle-play-16kb-page-size-flutter-android-2026","16 kb page size, google play 16 kb page size requirement, flutter 16kb page size, android 15 16 kb, ndk r28 16 kb alignment, agp 8.5.1 16 kb, check_elf_alignment, zipalign -P 16, play console 16 kb warning, 16 kb backcompat mode",[1321,1322,1323,1324,1325],"Google Play requires apps targeting Android 15 (API level 35) and higher to support 16 KB memory page sizes on 64-bit devices. Google says that starting February 1, 2027, updates that don't support 16 KB page sizes can't be released.","Only apps with native code are affected: .so files inside the APK. In my experience every Flutter Android release build ships native libraries, so Flutter apps are in scope.","Google says apps built with AGP 8.5.1 or higher and NDK r28 or higher, with 16 KB-compatible prebuilt dependencies, are 16 KB compatible by default.","Flutter 3.38 (November 12, 2025) moved the default NDK to r28, which Flutter calls the minimum for 16 KB alignment. Flutter 3.35 still defaulted to NDK r27.","On a 16 KB device, an app with 4 KB-aligned .so files that are stored uncompressed in the APK can run in a backcompat mode that shows a warning on first launch. Google says that without recompiling, apps won't work on 16 KB devices in future Android releases.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-play-16kb-page-size-flutter-android-2026\u002F","IsA4Wql8Qv-tdssu-PAyNveCANbZeSd7FIw4eqFW-LU",{"id":1329,"title":1330,"author":1331,"body":1333,"category":409,"createdAt":1760,"description":1761,"disclosure":412,"extension":413,"faq":1762,"howTo":412,"lastVerified":412,"location":430,"meta":1781,"navigation":437,"ogImage":412,"path":1786,"primaryKeyword":1787,"readingTime":440,"related":1788,"seo":1790,"sources":1791,"stem":1807,"tags":1808,"takeaways":1809,"updatedAt":1760,"url":1815,"__hash__":1816},"blog\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026.md","Play Billing Library 7 Deprecated: Update to 8 by November 1",{"name":7,"social":1332},{"twitter":9},{"type":11,"value":1334,"toc":1753},[1335,1345,1348,1353,1357,1360,1438,1446,1449,1473,1477,1480,1561,1576,1580,1655,1658,1680,1682,1684,1744,1746],[14,1336,1337,1340,1341,1344],{},[17,1338,1339],{},"If Play Console warns that your app uses an unsupported version of the Google Play Billing Library, version 7 is the likely cause: its deadline for new apps and updates was August 31, 2026, and Google says the extension it offers runs until November 1, 2026."," Google says existing apps keep working, and new apps and updates must use a supported version. In my reading, an app still on version 7 can't ship an update once the extension runs out. For a Flutter app, that usually means a newer ",[335,1342,1343],{},"in_app_purchase"," or RevenueCat package, and possibly a newer Flutter.",[14,1346,1347],{},"The deadlines below come from Google's Billing Library deprecation page and release notes, and the package versions from pub.dev and RevenueCat's changelog, as listed in the sources. I checked each one on October 18, 2026.",[14,1349,1350,1352],{},[17,1351,28],{}," App369 is my studio. I build and fix apps, including in-app purchases and subscriptions in Flutter, and the last section mentions what I sell. Google and RevenueCat don't pay me for anything on this page.",[31,1354,1356],{"id":1355},"the-deadlines","The deadlines",[14,1358,1359],{},"Google gives every Billing Library version a two-year deprecation cycle. Its table:",[49,1361,1362,1375],{},[52,1363,1364],{},[55,1365,1366,1369,1372],{},[58,1367,1368],{},"Version",[58,1370,1371],{},"New apps and updates must move by",[58,1373,1374],{},"Extension deadline",[68,1376,1377,1388,1399,1416,1427],{},[55,1378,1379,1382,1385],{},[73,1380,1381],{},"5",[73,1383,1384],{},"August 31, 2024",[73,1386,1387],{},"November 1, 2024",[55,1389,1390,1393,1396],{},[73,1391,1392],{},"6",[73,1394,1395],{},"August 31, 2025",[73,1397,1398],{},"November 1, 2025",[55,1400,1401,1406,1411],{},[73,1402,1403],{},[17,1404,1405],{},"7",[73,1407,1408],{},[17,1409,1410],{},"August 31, 2026",[73,1412,1413],{},[17,1414,1415],{},"November 1, 2026",[55,1417,1418,1421,1424],{},[73,1419,1420],{},"8",[73,1422,1423],{},"August 31, 2027",[73,1425,1426],{},"November 1, 2027",[55,1428,1429,1432,1435],{},[73,1430,1431],{},"9",[73,1433,1434],{},"August 31, 2028",[73,1436,1437],{},"November 1, 2028",[14,1439,553,1440,1445],{},[82,1441,1444],{"href":1442,"rel":1443},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Fdeprecation-faq",[86],"Google Play Billing Library version deprecation",", last updated September 9, 2026.",[14,1447,1448],{},"Google's FAQ also says:",[281,1450,1451,1457,1467],{},[158,1452,1453,1456],{},[17,1454,1455],{},"Existing apps still work."," Unmaintained APKs don't need updates. The rule applies to new apps and updates.",[158,1458,1459,1462,1463,1466],{},[17,1460,1461],{},"The dependency check applies to APKs that use billing."," Google says these dependencies only appear in APKs that require the ",[335,1464,1465],{},"com.android.vending.BILLING"," permission.",[158,1468,1469,1472],{},[17,1470,1471],{},"The extension form is in Play Console."," An app on an unsupported version gets a warning. Open its details on the Policy status page to find the form.",[31,1474,1476],{"id":1475},"what-changed-in-version-8","What changed in version 8",[14,1478,1479],{},"Version 8.0.0 was released on June 30, 2025. Per Google's release notes, the changes most likely to break an older integration are:",[49,1481,1482,1492],{},[52,1483,1484],{},[55,1485,1486,1489],{},[58,1487,1488],{},"Change in 8.0.0",[58,1490,1491],{},"What to use instead",[68,1493,1494,1509,1521,1538,1550],{},[55,1495,1496,1502],{},[73,1497,1498,1501],{},[335,1499,1500],{},"queryPurchaseHistory()"," removed",[73,1503,1504,1505,1508],{},"Google lists ",[335,1506,1507],{},"queryPurchasesAsync()"," for acknowledged and pending purchases, says to track consumed purchases on your own servers, and points to the voided-purchases API for canceled ones",[55,1510,1511,1516],{},[73,1512,1513,1501],{},[335,1514,1515],{},"querySkuDetailsAsync()",[73,1517,1518],{},[335,1519,1520],{},"queryProductDetailsAsync()",[55,1522,1523,1529],{},[73,1524,1525,1528],{},[335,1526,1527],{},"enablePendingPurchases()"," with no arguments removed",[73,1530,1531,1534,1535],{},[335,1532,1533],{},"enablePendingPurchases(PendingPurchasesParams)",". The old call equals ",[335,1536,1537],{},"PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()",[55,1539,1540,1545],{},[73,1541,1542,1501],{},[335,1543,1544],{},"queryPurchasesAsync(String skuType, ...)",[73,1546,1547],{},[335,1548,1549],{},"queryPurchasesAsync(QueryPurchasesParams, ...)",[55,1551,1552,1558],{},[73,1553,1554,1557],{},[335,1555,1556],{},"onProductDetailsResponse()"," signature changed",[73,1559,1560],{},"Handle the new result, which also lists products that couldn't be fetched",[14,1562,1563,1564,1567,1568,1571,1572,1575],{},"Version 8 also added optional automatic service reconnection (",[335,1565,1566],{},"enableAutoServiceReconnection()",") and sub-response codes on ",[335,1569,1570],{},"launchBillingFlow()",", such as ",[335,1573,1574],{},"PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS",". In-app items are now called one-time products.",[31,1577,1579],{"id":1578},"flutter-apps-which-package-versions-include-version-8","Flutter apps: which package versions include version 8",[49,1581,1582,1595],{},[52,1583,1584],{},[55,1585,1586,1589,1592],{},[58,1587,1588],{},"Package",[58,1590,1591],{},"First version on Billing Library 8",[58,1593,1594],{},"Notes, per its changelog or pubspec",[68,1596,1597,1620,1638],{},[55,1598,1599,1604,1610],{},[73,1600,1601],{},[335,1602,1603],{},"in_app_purchase_android",[73,1605,1606,1609],{},[17,1607,1608],{},"0.5.0"," (May 27, 2026)",[73,1611,1612,1613,1616,1617],{},"Updates from 7.1.1 to 8.0.0. Breaking: removes ",[335,1614,1615],{},"queryPurchaseHistory",", use ",[335,1618,1619],{},"queryPurchases",[55,1621,1622,1626,1632],{},[73,1623,1624],{},[335,1625,1343],{},[73,1627,1628,1631],{},[17,1629,1630],{},"3.3.0"," (June 3, 2026)",[73,1633,1634,1635,1637],{},"Depends on ",[335,1636,1603],{}," ^0.5.0. Requires Flutter 3.38 or later and Dart 3.10",[55,1639,1640,1646,1652],{},[73,1641,1642,1645],{},[335,1643,1644],{},"purchases_flutter"," (RevenueCat)",[73,1647,1648,1651],{},[17,1649,1650],{},"9.0.0"," (July 18, 2025)",[73,1653,1654],{},"Billing Library 8. Version 10.0.0 moved to 8.3.0 and raised the Android minimum to API 23",[14,1656,1657],{},"Two things to watch:",[281,1659,1660,1674],{},[158,1661,1662,1667,1668,1670,1671,1673],{},[17,1663,1664,1666],{},[335,1665,1343],{}," needs a recent Flutter."," Version 3.2.3, the last one on the old Android package, depended on ",[335,1669,1603],{}," ^0.4.0, which used Billing Library 7.1.1. To get version 8 through Flutter's own plugin, the app has to run on Flutter 3.38 or later. Flutter's release archive dates 3.38.0 November 12, 2025. Every ",[335,1672,1603],{}," release after 0.5.0 requires Flutter 3.44 or later, so on Flutter 3.38 to 3.43 pub can only use 0.5.0. My advice: if the app is on an older Flutter, plan the Flutter upgrade and the billing update as one job, because the upgrade can surface other build errors.",[158,1675,1676,1679],{},[17,1677,1678],{},"RevenueCat warns about consumables."," Its 9.0.0 notes say Billing Library 8 can no longer query expired subscriptions or consumed one-time products. If a lifetime purchase is set up as a consumable in the RevenueCat dashboard, RevenueCat will consume it, and users can't restore it. RevenueCat says to set those products up as non-consumables.",[31,1681,826],{"id":825},[14,1683,829],{},[155,1685,1686,1707,1713,1724,1730],{},[158,1687,1688,1691,1692,338,1695,1698,1699,342,1701,338,1703,1706],{},[17,1689,1690],{},"Find the version you ship."," In a native app, check ",[335,1693,1694],{},"com.android.billingclient:billing",[335,1696,1697],{},"build.gradle",". In Flutter, check ",[335,1700,1603],{},[335,1702,1644],{},[335,1704,1705],{},"pubspec.lock",", and compare with the table above.",[158,1708,1709,1712],{},[17,1710,1711],{},"Request the extension if you need time."," If you can't ship version 8 before your next update, use the form from the Play Console warning. Google's extension for version 7 ends on November 1, 2026, so as of October 18, 2026 it buys two weeks at most.",[158,1714,1715,1718,1719,1721,1722,346],{},[17,1716,1717],{},"Upgrade the package, then fix what broke."," Look for the removed calls in the version 8 table. In Flutter, replace ",[335,1720,1615],{}," with ",[335,1723,1619],{},[158,1725,1726,1729],{},[17,1727,1728],{},"Test purchases and restores before you ship."," Use Play Console license testers to buy, cancel and restore each product type, especially one-time products and anything users expect to restore after reinstalling.",[158,1731,1732,1735,1736,1739,1740,1743],{},[17,1733,1734],{},"Check the manifest if the warning stays."," Google says the merged ",[335,1737,1738],{},"AndroidManifest.xml"," must contain ",[335,1741,1742],{},"com.google.android.play.billingclient.version",". If it doesn't, check whether manifest merging removes it.",[31,1745,380],{"id":379},[14,1747,1748,1749,388,1751,346],{},"If an app can't ship an update because of the Billing Library deadline, or purchases broke after the upgrade, the ",[82,1750,387],{"href":386},[82,1752,392],{"href":391},{"title":394,"searchDepth":395,"depth":395,"links":1754},[1755,1756,1757,1758,1759],{"id":1355,"depth":395,"text":1356},{"id":1475,"depth":395,"text":1476},{"id":1578,"depth":395,"text":1579},{"id":825,"depth":395,"text":826},{"id":379,"depth":395,"text":380},"2026-10-18T23:30:00.000Z","Google Play Billing Library 7 hit its deadline on August 31, 2026: new apps and updates must use version 8 or later, and Google says its extension runs until November 1, 2026. What changed in version 8, which Flutter in_app_purchase and RevenueCat versions include it, and how to clear the Play Console warning, from Google's docs checked October 18, 2026.",[1763,1766,1769,1772,1775,1778],{"question":1764,"answer":1765},"When is Play Billing Library 7 deprecated?","Google's deprecation table sets August 31, 2026 as the deadline for new apps and updates on version 7, and November 1, 2026 as the extension deadline. Google's banner on the same page says that by August 31, 2026, new apps and updates must use version 8 or later.",{"question":1767,"answer":1768},"What happens if I don't update the Billing Library?","Google says existing apps still work and unmaintained APKs don't need updates, but new apps and updates must use a supported version. My reading: once your deadline passes, you can't publish an update to an app that uses version 7 or older.",{"question":1770,"answer":1771},"How do I get an extension to November 1, 2026?","Google says an app on an unsupported version gets a warning in Play Console. Open the warning's details on the Policy status page and use the extension form there. Google says the extension for version 7 runs until November 1, 2026.",{"question":1773,"answer":1774},"Which Flutter in_app_purchase version uses Billing Library 8?","in_app_purchase_android 0.5.0, published May 27, 2026, updated the Billing Library from 7.1.1 to 8.0.0. The in_app_purchase package depends on it from version 3.3.0, which requires Flutter 3.38 or later and Dart 3.10.",{"question":1776,"answer":1777},"I already updated. Why does Play Console still show the warning?","Google's FAQ says to check that your AndroidManifest.xml contains com.google.android.play.billingclient.version, and if it is missing, whether manifest merging removes it.",{"question":1779,"answer":1780},"Do I need to move to version 9?","Not for this deadline. Version 8 is supported until August 31, 2027, with an extension to November 1, 2027, per Google's table. Version 9 was released on May 19, 2026 and is supported a year longer.",{"readingTimeStats":1782},{"text":896,"minutes":1783,"time":1784,"words":1785},4.115,246900,823,"\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026","play billing library 7 deprecated",[1789,903,904],"revenuecat-stripe-firebase-monetization-stack-template369",{"title":1330,"description":1761},[1792,1794,1797,1800,1803,1806],{"title":1793,"url":1442},"Android Developers, Google Play Billing Library version deprecation (last updated September 9, 2026)",{"title":1795,"url":1796},"Android Developers, Google Play Billing Library release notes","https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Fbilling\u002Frelease-notes",{"title":1798,"url":1799},"pub.dev, in_app_purchase_android changelog","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fin_app_purchase_android\u002Fchangelog",{"title":1801,"url":1802},"pub.dev, in_app_purchase versions","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fin_app_purchase\u002Fversions",{"title":1804,"url":1805},"RevenueCat purchases-flutter changelog on GitHub","https:\u002F\u002Fgithub.com\u002FRevenueCat\u002Fpurchases-flutter\u002Fblob\u002Fmain\u002FCHANGELOG.md",{"title":921,"url":922},"blog\u002Fplay-billing-library-7-deprecated-update-to-8-2026","play billing library 7 deprecated, play billing library 8 migration, unsupported version of google play billing library, play console billing library warning, billing library extension november 1 2026, in_app_purchase_android billing 8, purchases_flutter billing library 8, querypurchasehistory removed, flutter in app purchase android update",[1810,1811,1812,1813,1814],"Every Google Play Billing Library version has a two-year deprecation cycle. For version 7, Google says the deadline for new apps and updates was August 31, 2026, and the extension deadline is November 1, 2026.","Version 8.0.0 (June 30, 2025) removed queryPurchaseHistory(), querySkuDetailsAsync(), the no-argument enablePendingPurchases() and the queryPurchasesAsync() overload that takes a SKU type, and changed the queryProductDetailsAsync() result.","Flutter's in_app_purchase_android moved to Billing Library 8.0.0 in version 0.5.0 (May 27, 2026). The app-facing in_app_purchase package uses it from 3.3.0, which needs Flutter 3.38 or later.","RevenueCat's purchases_flutter moved to Billing Library 8 in 9.0.0 (July 18, 2025). Its notes warn that one-time products wrongly set up as consumables can no longer be restored.","Google says existing apps keep working. The deadline applies to new apps and updates. My reading: an app on version 7 can't ship an update until it moves, once any extension runs out.","https:\u002F\u002Fapp369.com\u002Fblog\u002Fplay-billing-library-7-deprecated-update-to-8-2026\u002F","5n6ohencoIcRhkIOzQZqt84R1BDU1_moCs_avK-ktvg",[1818,1820,1822,1826,1830,1833],{"keyword":5,"url":480,"title":5,"relevance":1819},67,{"keyword":935,"url":1326,"title":935,"relevance":1821},12,{"keyword":1823,"url":1824,"title":1823,"relevance":1825},"Google Sign-In for Android Is Deprecated: Moving to Credential Manager","https:\u002F\u002Fapp369.com\u002Fblog\u002Fgoogle-sign-in-android-deprecated-credential-manager-2026\u002F",10,{"keyword":1827,"url":1828,"title":1827,"relevance":1829},"Flutter \"Deleted Android v1 Embedding\" Build Error: The Fix","https:\u002F\u002Fapp369.com\u002Fblog\u002Fflutter-deleted-android-v1-embedding-build-failed-2026\u002F",9,{"keyword":1831,"url":1832,"title":1831,"relevance":1829},"Android Things Shut Down: What to Run Your Device App On in 2026","https:\u002F\u002Fapp369.com\u002Fblog\u002Fandroid-things-shut-down-device-app-alternatives-2026\u002F",{"keyword":485,"url":931,"title":485,"relevance":1834},8,1792361351942]