pwa-builder/PWABuilder

[PWA Builder]: Support for Android SDK 34

Closed this issue Β· 61 comments

Tell us about your feature idea

Google again changed the API level requirements.
App must target Android 14 (API level 34) or higher starting from Aug 31, 2024

Current supported version is 33

bubblewrap does not seem to be updated so far, too.

Do you have an implementation or a solution in mind?

Download source code from pwabuilder.com and compile with new version.

Have you considered any alternatives?

No response

Why put a start date of Aug 31, 2024 if they're going to start enforcing it sooner 😭 hopefully this gets fixed soon enough. My guess is it isn't an issue on PWABuilder's side, rather on Bubblewrap's side

@jere-mie Yes, remarkable, I noticed that too. Maybe the different teams within Google are not aligned.
https://developer.android.com/google/play/requirements/target-sdk?authuser=2
image

Same here

Been having this for a few days also

Please use the thumbs up on the original issue, don't "same here" the thumbs up will bring attention better and leave the issue readable down the line - thank you :)

Twey commented

In the meantime you can work around this by changing the targetSdkVersion in the manifest manually. You'll need zip, protoc, bundletool, and a JDK (e.g. OpenJDK) for jarsigner.

  • unzip https://maven.google.com/com/android/tools/build/aapt2-proto/3.6.3-6040484/aapt2-proto-3.6.3-6040484.jar to the directory $AAPT_PROTO
  • unzip your PWABuilder-built AAB (unzip YourApp.aab) and cd base
  • decode the manifest: protoc -I $AAPT_PROTO Resources.proto --decode=aapt.pb.XmlNode <manifest/AndroidManifest.xml >manifest.txt
  • edit targetSdkVersion in the manifest.txt and change int_decimal_value: 33 to int_decimal_value: 34
  • reencode the manifest: protoc -I $AAPT_PROTO Resources.proto --encode=aapt.pb.XmlNode >manifest/AndroidManifest.xml <manifest.txt
  • zip up your base directory: zip -r base.zip *
  • use bundletool to bundle up the base module: bundletool build-bundle --modules base.zip --output your-app-signed.aab
  • use jarsigner to sign your new AAB: jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore signing.keystore your-app-signed.aab my-key-alias (enter the keystore password and key password from signing-key-info.txt when asked)
  • submit your-app-signed.aab to the Play store

^ There is also another easy workaround if you can use Android Studio, you can select to include Source code while generating the Android package on PWABuilder, so you can open the project and update the compilesdk/targetsdk, and build/sign again.

Hello all! Sorry for the delay, I was on holiday for July 4th here in the US. I am working with our team to get Bubblewrap + PWABuilder updated and will post here when things are updated. Both @Twey and @maiconcarraro 's workarounds are great. Using Android Studio is what I would recommend for now if you are blocked.

And this is the issue to get Bubblewrap updated GoogleChromeLabs/bubblewrap#860

@jgw96 and @maiconcarraro

After changing the compile and target SDK in the build.gradle file, some warnings are shown when compiling the project.
image

@jonkerw85
I was able to update it using Android Studio Koala | 2024.1.1, then installed Gradle version 8.7 in studio, after that updated Gradle plugin to 8.5 version in studio, which supports SDK 34. Then installed SDK 34 in studio. Then changed target sdk, compile sdk to 34 version.
Compilation returned only two unimportant warnings. Easily fixed one of them (it was clear what to change, but unfortunately do not remember what was that about), the second one was related to some deprecated function in 9.0 version.
Then Generated signed aab/apk in studio without issues. New version of my app passed google validation and update is already available in Google Play Store.

@kiajiko Thanks for the support. Upgrading the Gradle version indeed resolves the warnings.

Just fyi, there's another update needed for PWA's that enable Play Billing. I believe the android-browser-helper billing library version that PWABuilder points to would need to be updated (after the library itself is updated to support Play Billing 7.0), see also GoogleChrome/android-browser-helper#473

Hi @jgw96 waiting for your update about [SDK 34]

If Google are going to do things like this, it would be useful if PWA Builder included a field where we could override defaults, maybe an optional field that could show json for the defaults which would then let you override them if you want.

Hi @jgw96

We are waiting for updates about [SDK 34]

@jonkerw85 I was able to update it using Android Studio Koala | 2024.1.1, then installed Gradle version 8.7 in studio, after that updated Gradle plugin to 8.5 version in studio, which supports SDK 34. Then installed SDK 34 in studio. Then changed target sdk, compile sdk to 34 version. Compilation returned only two unimportant warnings. Easily fixed one of them (it was clear what to change, but unfortunately do not remember what was that about), the second one was related to some deprecated function in 9.0 version. Then Generated signed aab/apk in studio without issues. New version of my app passed google validation and update is already available in Google Play Store.

Any chance you can do a quick youtube guide on how to do this? I'm new to Android studio and worried about the deadline.

Your help is much appreciated

Why it takes so long to solve the problem on PWA Builder with SDK 34 is not a serious approach to users who trust you.

@Zimasl pwabuilder is built on top of bubblewrap, and that's where the update needs to be made. It isn't something pwabuilder can immediately fix. Several users have mentioned alternative solutions you can try out in the meantime

@lawtonj404

Any chance you can do a quick youtube guide on how to do this? I'm new to Android studio and worried about the deadline.

Your help is much appreciated

let me know if you need something different: https://youtu.be/DbarW15E058

@lawtonj404

Any chance you can do a quick youtube guide on how to do this? I'm new to Android studio and worried about the deadline.
Your help is much appreciated

let me know if you need something different: https://youtu.be/DbarW15E058

i get error after click on "upgrade to grandle 8.5 and re-sync":

Could not create task ':app:processDebugResources'.
Cannot use @TaskAction annotation on method IncrementalTask.taskAction$gradle() because interface org.gradle.api.tasks.incremental.IncrementalTaskInputs is not a valid parameter to an action method.

* Try:
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.

and i dont see "change grande version ... and re-import project"

what to do?

@Aviv1000 I had the same issue. Make sure to update the gradle version as shown in step 8 in the video to 8.5.1. You'll have to edit the file build.gradle (Project: source).

@Aviv1000 I had the same issue. Make sure to update the gradle version as shown in step 8 in the video to 8.5.1. You'll have to edit the file build.gradle (Project: source).

sorry for missing this, maybe because I already did earlier it skipped a step, happy that you managed to figure out.

yes its work, but still exists some troubles with google play console, its say:

  1. androidx.fragment:fragment (androidx.fragment:fragment) need be at least version 1.1.0+ insted of 1.0.0
  2. pay library - version 5.2.1 too old, must to be version 6.0.1+

As a web developer I have no idea what all of thats means.

isnt better to ask bubblewrap to update the sdk version?

@Aviv1000 if you have the Android Studio working like in the vΓ­deo you can google these other upgrades like they do for native app

@drma-tech there is an open PR already in their repo for this

It looks like there is a PR already open on Bubblewrap to fix this, it just needs testing GoogleChromeLabs/bubblewrap#860

@maiconcarraro

Any chance you can do a quick youtube guide on how to do this? I'm new to Android studio and worried about the deadline.
Your help is much appreciated

let me know if you need something different: https://youtu.be/DbarW15E058

You are amazing! thank you so much, its uploaded to google and awaiting verification / deployment. I really appreciate you taking the time to help a fellow user.

@maiconcarraro

Thank you so much, you are amazing, I followed the step by step guide and resolved the two errors easily. My app is now exported and in submission to the Play Store.

HERO!

@Aviv1000 if you have the Android Studio working like in the vΓ­deo you can google these other upgrades like they do for native app

@drma-tech there is an open PR already in their repo for this

im not sure what exactly i need to modifiy there in the grandle file:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.fragment:fragment:1.8.1'
    implementation 'com.google.android.play:billing:6.0.1'
    implementation 'com.google.androidbrowserhelper:locationdelegation:1.1.1'
    implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.5.0'
}

this should works?
billing library can integrate like the old part of 'androidbrowserhelper'?

With regards to the lack of appropriate fix/alternative solution/support in light of this fiasco:

Isn't the very point of this tool 'PWABuilder' to abstract away, pretty much, all of the underlying technicalities (including nested dependencies), and without having to know anything of/use Native IDEs (Android Studio etc.)?

Putting it bluntly, asking users to resort to manual interventions in native IDEs, by the 'PWABuilder' team (a Microsoft based entity), doesn't really cut it now, does it?

@lawtonj404

Any chance you can do a quick youtube guide on how to do this? I'm new to Android studio and worried about the deadline.
Your help is much appreciated

let me know if you need something different: https://youtu.be/DbarW15E058

Thank you very much. Everything was done according to your instructions. My app is now exported and in submission to the Play Store.

With regards to the lack of appropriate fix/alternative solution/support in light of this fiasco:

Isn't the very point of this tool 'PWABuilder' to abstract away, pretty much, all of the underlying technicalities (including nested dependencies), and without having to know anything of/use Native IDEs (Android Studio etc.)?

Putting it bluntly, asking users to resort to manual interventions in native IDEs, by the 'PWABuilder' team (a Microsoft based entity), doesn't really cut it now, does it?

@arladmin you should move your comment to bubblewrapper repo, the point of PWABuilder is still the same, and they are not asking manual interventions as the final solution... only if you are really blocked and need it asap, people are just sharing workarounds until it is fixed, you can do manual interventions if you want to fix before the Google team on bubblewrapper repo.

your comment is the kind of fiasco that ruins opensource communities, if you can't understand how dependencies work you can't blame others for your lacking of knowledge. peace.

Hello all! The PR for Bubblewrap, which is the dependency that needed to be updated first, has been merged! We are now one step closer to having this updated in PWABuilder itself. I apologize for those having to use the workaround for now, but I much appreciate the patience as this is not a one-and-done kind of update. We plan to have PWABuilder updated long before the end of August deadline.

Hello all! The PR for Bubblewrap, which is the dependency that needed to be updated first, has been merged! We are now one step closer to having this updated in PWABuilder itself. I apologize for those having to use the workaround for now, but I much appreciate the patience as this is not a one-and-done kind of update. We plan to have PWABuilder updated long before the end of August deadline.

Hi @jgw96 ,
What is the update on this?
Thank you.

Hello all! The PR for Bubblewrap, which is the dependency that needed to be updated first, has been merged! We are now one step closer to having this updated in PWABuilder itself. I apologize for those having to use the workaround for now, but I much appreciate the patience as this is not a one-and-done kind of update. We plan to have PWABuilder updated long before the end of August deadline.

Hi @jgw96 , What is the update on this? Thank you.

Hello @iAmKabiru, from what I've seen and read we are now waiting for a new release of Bubblewrap now that the PR has been merged. I haven't found any release schedule on behalf of Bubblewrap.

Hello @jgw96 Is there any update on this? MT

Hi all!

As you can see in the linked issue on the Bubblewrap repo, we are waiting for them to release the latest version. We are very well aware of the schedule here, as is the Bubblewrap team. Just like everyone here, we would love to already have this update out, but that is simply not possible in a manageable way unfortunately. Please know that I am keeping a close eye on this and will update everyone as soon as the update has happened.

Thanks everyone!

Hi, I have the same problem. My application is pwa and I think the person who generates this pac is the PWA Builder itself. Do we have any plans to update? error "App needs to target Android 14 (API level 34) or newer"

Boa tarde! Alguma novidade sobre a versΓ£o SDK34 no PWA Builder?

@leeobrum this comment #4766 (comment) has the current status, thanks!

Hi all!

As you can see in the linked issue on the Bubblewrap repo, we are waiting for them to release the latest version. We are very well aware of the schedule here, as is the Bubblewrap team. Just like everyone here, we would love to already have this update out, but that is simply not possible in a manageable way unfortunately. Please know that I am keeping a close eye on this and will update everyone as soon as the update has happened.

Thanks everyone!

Can this be added as a note on PWABuilder.com site so that everyone using will be aware of this issue.

Hi, I have the same problem. any updates?

BubbleWrap just released a new version with support for sdk 35.
https://github.com/GoogleChromeLabs/bubblewrap/releases/tag/v1.22.0

Hello all! I am finally kicking off work to update our service. We have been waiting on the Bubblewrap team to do a release and as @catalescu put above, they published an updated version. I am starting on this today and hope to have it out asap. The latest would be the end of next week.

Hello all! I have things working in the PR linked above. It is late today where I am and my team does not deploy on Fridays, so I will do last testing, merge and then publish to production on Monday (the 12th)

@jgw96 Something went wrong

image

@michalzaq12

lilpwa mentioned in discord that was pushed from codespace to get around a Github actions issue, you can confirm the last version is deployed because the new signed key is working + txt file contains same password (workaround for now)

they are probably going to investigate/address the issues related to GH action and other things, but you should be good to generate the app already (worked for me)

Solved for me. Thank you.

Hello all! I have things working in the PR linked above. It is late today where I am and my team does not deploy on Fridays, so I will do last testing, merge and then publish to production on Monday (the 12th)

Something is quite wrong, I'm getting this error when I'm trying PWA Builder:

Internal Server Error

Status code: 500. Error generating app package: Command failed: ./gradlew assembleRelease --stacktrace Picked up JAVA_TOOL_OPTIONS: -javaagent:/agents/java/applicationinsights-agent-codeless.jar OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':app:minifyReleaseWithR8'. > Failed to find target with hash string 'android-35' in: /opt/android-sdk * Try: > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. * Exception is: org.gradle.api.internal.tasks.TaskDependencyResolveException: Could not determine the dependencies of task ':app:minifyReleaseWithR8'. at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:70) at org.gradle.execution.plan.TaskDependencyResolver.resolveDependenciesFor(TaskDependencyResolver.java:49) at org.gradle.execution.plan.LocalTaskNode.getDependencies(LocalTaskNode.java:148) at org.gradle.execution.plan.LocalTaskNode.resolveDependencies(LocalTaskNode.java:122) at org.gradle.execution.plan.DefaultExecutionPlan.discoverNodeRelationships(DefaultExecutionPlan.java:182) at org.gradle.execution.plan.DefaultExecutionPlan.doAddEntryNodes(DefaultExecutionPlan.java:154) at org.gradle.execution.plan.DefaultExecutionPlan.addEntryTasks(DefaultExecutionPlan.java:129) at org.gradle.execution.plan.DefaultExecutionPlan.addEntryTasks(DefaultExecutionPlan.java:121) at org.gradle.execution.TaskNameResolvingBuildTaskScheduler.scheduleRequestedTasks(TaskNameResolvingBuildTaskScheduler.java:54) at org.gradle.execution.DefaultTasksBuildTaskScheduler.scheduleRequestedTasks(DefaultTasksBuildTaskScheduler.java:72) at org.gradle.initialization.DefaultTaskExecutionPreparer.lambda$scheduleRequestedTasks$0(DefaultTaskExecutionPreparer.java:46) at org.gradle.internal.Factories$1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withReplacedLocks(DefaultWorkerLeaseService.java:360) at org.gradle.api.internal.project.DefaultProjectStateRegistry$DefaultBuildProjectRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:240) at org.gradle.api.internal.project.DefaultProjectStateRegistry$DefaultBuildProjectRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:233) at org.gradle.initialization.DefaultTaskExecutionPreparer.scheduleRequestedTasks(DefaultTaskExecutionPreparer.java:45) at org.gradle.initialization.VintageBuildModelController.lambda$scheduleRequestedTasks$0(VintageBuildModelController.java:76) at org.gradle.internal.model.StateTransitionController.lambda$inState$1(StateTransitionController.java:99) at org.gradle.internal.model.StateTransitionController.lambda$inState$2(StateTransitionController.java:114) at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44) at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:110) at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:98) at org.gradle.initialization.VintageBuildModelController.scheduleRequestedTasks(VintageBuildModelController.java:76) at org.gradle.internal.build.DefaultBuildLifecycleController$DefaultWorkGraphBuilder.addRequestedTasks(DefaultBuildLifecycleController.java:404) at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.lambda$scheduleRequestedTasks$0(DefaultBuildTreeWorkPreparer.java:41) at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$populateWorkGraph$7(DefaultBuildLifecycleController.java:189) at org.gradle.internal.build.DefaultBuildWorkPreparer.populateWorkGraph(DefaultBuildWorkPreparer.java:42) at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.populateTaskGraph(BuildOperationFiringBuildWorkPreparer.java:106) at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.run(BuildOperationFiringBuildWorkPreparer.java:92) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer.populateWorkGraph(BuildOperationFiringBuildWorkPreparer.java:67) at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$populateWorkGraph$8(DefaultBuildLifecycleController.java:189) at org.gradle.internal.model.StateTransitionController.lambda$inState$1(StateTransitionController.java:99) at org.gradle.internal.model.StateTransitionController.lambda$inState$2(StateTransitionController.java:114) at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44) at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:110) at org.gradle.internal.model.StateTransitionController.inState(StateTransitionController.java:98) at org.gradle.internal.build.DefaultBuildLifecycleController.populateWorkGraph(DefaultBuildLifecycleController.java:189) at org.gradle.internal.build.DefaultBuildWorkGraphController$DefaultBuildWorkGraph.populateWorkGraph(DefaultBuildWorkGraphController.java:169) at org.gradle.composite.internal.DefaultBuildController.populateWorkGraph(DefaultBuildController.java:76) at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraphBuilder.withWorkGraph(DefaultIncludedBuildTaskGraph.java:153) at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.lambda$scheduleRequestedTasks$1(DefaultBuildTreeWorkPreparer.java:41) at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1.run(DefaultIncludedBuildTaskGraph.java:209) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29) at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47) at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph.scheduleWork(DefaultIncludedBuildTaskGraph.java:204) at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.scheduleRequestedTasks(DefaultBuildTreeWorkPreparer.java:37) at org.gradle.configurationcache.VintageBuildTreeWorkController$scheduleAndRunRequestedTasks$1.apply(VintageBuildTreeWorkController.kt:36) at org.gradle.configurationcache.VintageBuildTreeWorkController$scheduleAndRunRequestedTasks$1.apply(VintageBuildTreeWorkController.kt:35) at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewWorkGraph(DefaultIncludedBuildTaskGraph.java:112) at org.gradle.configurationcache.VintageBuildTreeWorkController.scheduleAndRunRequestedTasks(VintageBuildTreeWorkController.kt:35) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$scheduleAndRunTasks$1(DefaultBuildTreeLifecycleController.java:77) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:120) at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:169) at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266) at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:169) at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:44) at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:169) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:117) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:77) at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:72) at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49) at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:65) at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:140) at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40) at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:123) at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40) at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:66) at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:36) at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:71) at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:60) at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:71) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:264) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:128) at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36) at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110) at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64) at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:92) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:80) at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:71) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62) at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:51) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:39) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.lambda$execute$0(ForwardClientInput.java:39) at org.gradle.launcher.daemon.server.clientinput.ClientInputForwarder.forwardInput(ClientInputForwarder.java:88) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:64) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) Caused by: com.android.builder.errors.EvalIssueException: Failed to find target with hash string 'android-35' in: /opt/android-sdk at com.android.builder.errors.IssueReporter.reportError(IssueReporter.kt:131) at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:151) at com.android.build.gradle.internal.SdkFullLoadingStrategy.init(SdkFullLoadingStrategy.kt:49) at com.android.build.gradle.internal.SdkFullLoadingStrategy.getBuildToolsInfo(SdkFullLoadingStrategy.kt:74) at com.android.build.gradle.internal.SdkFullLoadingStrategy.getFileFromBuildTool(SdkFullLoadingStrategy.kt:78) at com.android.build.gradle.internal.SdkFullLoadingStrategy.getCoreLambaStubs(SdkFullLoadingStrategy.kt:81) at com.android.build.gradle.internal.SdkLoadingStrategy.getCoreLambaStubs(SdkLoadingStrategy.kt:41) at com.android.build.gradle.internal.SdkComponentsBuildService$VersionedSdkLoader$coreLambdaStubsProvider$1.call(SdkComponents.kt:243) at com.android.build.gradle.internal.SdkComponentsBuildService$VersionedSdkLoader$coreLambdaStubsProvider$1.call(SdkComponents.kt:243) at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:72) at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115) at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:81) at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115) at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:81) at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115) at org.gradle.api.internal.provider.DefaultProperty.calculateValueFrom(DefaultProperty.java:152) at org.gradle.api.internal.provider.DefaultProperty.calculateValueFrom(DefaultProperty.java:33) at org.gradle.api.internal.provider.AbstractProperty.doCalculateValue(AbstractProperty.java:170) at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValue(AbstractProperty.java:163) at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:115) at org.gradle.api.internal.provider.FlatMapProvider.calculateOwnValue(FlatMapProvider.java:53) at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateOwnPresentValue(AbstractMinimalProvider.java:80) at org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:100) at org.gradle.api.internal.provider.ProviderResolutionStrategy$2.resolve(ProviderResolutionStrategy.java:33) at org.gradle.api.internal.file.collections.ProviderBackedFileCollection.visitDependencies(ProviderBackedFileCollection.java:57) at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:108) at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmptyEdges.getNodeValues(CachingDirectedGraphWalker.java:213) at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:121) at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:73) at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:67) ... 139 more Caused by: java.lang.IllegalStateException: Failed to find target with hash string 'android-35' in: /opt/android-sdk at com.android.builder.sdk.DefaultSdkLoader.getTargetInfo(DefaultSdkLoader.java:174) at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:131) ... 167 more BUILD FAILED in 6s cmd: ./gradlew assembleRelease --stacktrace code: 1

Hi, when is this going to be available on https://www.pwabuilder.com ?

I made a package recently and the target SDK is still below the required one. I'm not sure where releases to the web version are tracked. Thanks πŸ™

@angrykoala when did you generate? lilpwa updated the website, if there is still an issue you can open a new issue, or ask help in discord.

Thanks @maiconcarraro I did it a couple of days ago, I'll try again today

It works for me, but the Playstore review process takes a long time. (3-5 days)

Today, I downloaded the source files for an Android application from pwabuilder.com, and the target sdk is set to 35. @angrykoala

Today, I downloaded the source files for an Android application from pwabuilder.com, and the target sdk is set to 35. @angrykoala

Just to +1 this is correct and I was also able to publish via pwabuilder.com last week. sdk of my app is now v35 and has been published to google play without issue.

Hello all! I am finally kicking off work to update our service. We have been waiting on the Bubblewrap team to do a release and as @catalescu put above, they published an updated version. I am starting on this today and hope to have it out asap. The latest would be the end of next week.

Hello! Can you tell me what the problem is?

Screenshot (2)

Is there any fix yet?

image
Looks like they've updated the minimum SDK version again. Is there a way to specify the target in PWA Builder?

Yes update again is needed. Until then source code export, change min/targed sdk version and recompile again...