App rejected by Apple due to UIWebView being deprecated - codenameone

I was working on a minor update to an app already accepted and available in the Apple App Store, and when I uploaded the new version, I got an e-mail that the binary was rejected because:
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no
longer accepted. Instead, use WKWebView for improved security and
reliability. Learn more
(https://developer.apple.com/documentation/uikit/uiwebview).
How do I go about doing that? Is there a build hint or something?
Additional Information:
My app is using some CN1 extensions:
SENSORS,
BLUETOOTHLE,
JSON (required for BLUETOOTHLE)
As the BLUETOOTHLE extension uses a Cordova plugin, and Cordova was using UIWebView, I think that is the likely source.

According to Cordova's issue tracker, the Cordova plugin doesn't use UIWebView in its latest. It is possible that the build server has an old version cached. Try explicitly setting the version to 6.1 by adding the following build hint:
ios.pods=Cordova ~> 6.1
You'll already have this build hint, you just need to add the "~> 6.1" part.
Please post to indicate whether this fixed your issue, and I'll update the cn1lib to automatically add the version to the build hint.

Codename One doesn't use UIWebView at all. Make sure all your cn1libs are up to date and list them. Review your own native code and dependencies if you have any to make sure there's no usage there.

Related

Issue installing react-reveal

I am new to react and I am even newer to typescript. I am working on this project right now and I need to use this specific git repository which is a typescript project. I want to add react-reveal so I can have some cool animations on my website but I get this error message.
I am not sure why this specific library is not working because I have installed other librarys like reactstrap. If anyone could give me any information on how to get this to work or why this isn't working it would be much appreciated!
React-reveal doesn't seem to be actively maintained as it was last updated on August 2018.
Based on the error you received it looks that there is a library that is explicitly configured to only work with React v15 or v16. You could use a slightly older version of React that works with react-reveal. You're using React 17.0.2. You could try using React v16.14.0.
You could also follow the instructions in the error message - using the force option. Here is a link(npm: When to use `--force` and `--legacy-peer-deps`) that describes how that works.
A better way to go is search for a more popular actively maintained alternative like react-spring(https://react-spring.io/) or react-awesome-reveal(https://www.npmjs.com/package/react-awesome-reveal).
I found the problem, you must put this command in the terminal => npm config set legacy-peer-deps true

expo-ads-admob not updating as expected

As I'm sure many are aware, admob needed an update to use a newer SDK (7.64+) and this message appears on your admob account if you have apps using an SDK below that version:
Some of your iOS apps require a GMA SDK update To keep ads serving normally and minimize a loss in ad revenue, implement the GMA SDK 7.64.0 (or later) for your iOS apps. And configure the SKAdNetwork in your apps with Google's network ID.
Expo had a PR here that was merged 6 days ago. This should have updated the GMA SDK to 7.69.0. However, when I ran expo upgrade it states that it updated expo-ads-admob,
✅ The following packages were updated:
expo-ads-admob, expo-av, expo-keep-awake, expo-updates, react-native, react, react-dom, #babel/core, react-native-web, babel-preset-expo, expo
but no changes actually take effect. And if I have the newer version (10.0.0) that I manually installed as stated below, it downgrades it to 8.4.0.
When that wasn't working, I then went and manually updated expo-ads-admob to 10.0.0 via npm (also tried yarn) and it looked like the node package was actually updated (checking the CHANGELOG and it has info about 10.0.0).
Still when I build my app with expo build:ios, run the new app, and check my GMA SDK version on admob it is still using 7.55.1.
I have also tried completely removing expo-ads-admob and reinstalling, but the same issue occurs.
Any ideas as to why this is occurring? Is there some other method I should be using to upgrade to the latest commit on expo's master branch?
Appreciate all the assistance in advance and let me know if there is any additional info I can provide.
Additional Info:
SDK Version: 40.0.0
Platform: iOS
Workflow: Managed
EDIT: Received answer from Expo member, see answer below.
You cannot use updated packages if using the managed workflow, it must be bare workflow in order to update module versions manually. Therefore, this admob update won't take place for managed workflows until expo SDK 41 is released.
See expo forum here for more.

Gradle for AngularJS Application

I´m pretty new to gradle and currently there is question that bugs me. The situation appears as follows: Based on a bower technology stack I implemented an Angular App. The app as it is doesn't change nor has it to be built in any way since there are just static javascript and HTML pages. In my opinion the used versions of angular, bootstrap and other libraries should also stay the same due to compatibility of the single libraries so these files also shouldn't change. Is this a correct behavior or should I get at least the latest build of the used libraries version as I deploy the application?
Also less is used in the application. Is there a way to compile the CSS every time I run the gradle build file or should I deliver just the compiled and finished CSS file?
As a result I´m also not quite sure if it's recommended at all using gradle to deploy an "static" angular application.
I hope someone out there can help me to answer the questions above. As you can guess, I´m not very experienced at deploying of such angular applications since this is my first project with this kind of problem.
This goes for all package managers, not just gradle but npm, gem, nuget, maven, whatever.
Use static dependancy version numbers. Otherwise you will end up finding breaking dependencies in QA or Prod rather than production.
This means you need to be aware of security fixes in your dependencies.
When you need a feature or fix in a new version of your dependencies, unlock the versions, rebuild and test in dev. Re-lock the dependencies and send to QA for verification.

NoClassDefFoundError: Could not initialize OauthRawGcsServiceFactory on production environment

I'm using appengine-sdk 1.9.3.
In devserver, works in Eclipse and Ant normally.
When I deploy (update) to appengine (production environment), I get this error:
event.getResults(): [<pre>Error for /p7/formPanelServlet
java.lang.NoClassDefFoundError: Could not initialize class
com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:42)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:34)
at com.bitvisio.p7.server.FormPanelServlet.<init>(FormPanelServlet.java:27)
At FormPanelServlet.java:27, the code is:
private final GcsService gcsService = GcsServiceFactory
.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());
I put the lib appengine-gcs-client-0.3.9.jar in war/WEB-INF/lib. I think there is a problem with this lib.
Thanks for help.
Always use tools like Maven or Ivy to resolve dependencies for you. Copying JARs to war/WEB-INF/lib/ directory and editing .classpath file manually will be painful and may not help you always. If you use Eclipse & Google App Engine plugin, use Add Google APIs... as mentioned here - Google Plugin for Eclipse. In my case, adding Cloud Storage API via Google Plugin for Eclipse helped resolve this NoClassDefFoundError.
I had the same problem. I use Ivy to resolve dependencies and always get the latest.integration (with Maven use RELEASE) for revisions.
However I usually ignore transitive libraries. It looks like Google is expanding the API family - at least splitting out discrete functionality.
There are now quite a few transitive dependencies and it seems they released a new version of the GCS client around the same time as 1.9.3.
Getting all dependencies and packaging them in my deployment fixed my issue. I did not have the issue in development which made it more confusing.
You are facing this issue because you are not adding the some of the jar like
google-api-services-storage-v1-rev78-1.22.0.jar download link
joda-time-2.94.jar download link
guava-19.0.jar link to download
you can use the different version of jar according to your appengine-gcs-client jar file.
Note : Add all these jar and build path with the project and problem will get solve.

CakePHP2 file upload plugin

I use paperclip plugin for Ruby on Rails app.
What is the defacto standard file upload plugin like paperclip for CakePHP2?
https://github.com/davidpersson/media supports only CakePHP1.3?
There is no default plugin defined, a suggestion would be to use the Uppy Plugin with ajax request, for more information go to:
[1]: https://uppy.io/docs/plugins/
I hope this helps.
David Persson's Media Plugin doesn't have a 2.0 compatible release, but somebody forked it to make it run on newer versions of Cake. This fork is actively developed (which also means things might still be broken) and with no official release incumbent it seems the best option to run the Media Plugin.
Apart from Persson's plugin there's MeioUpload which is also widely used and seems to be compatible with Cake 2.0.
There's Uploader (currently at version 3.3), which is compatible with Cake 2.0 (probably 2.1 as well).
Lastly, the plugin FileUpload by WebTechnick (known for his Facebook plugin for Cake) has a 2.0 branch which hasn't seen an official release, so proceed with caution.

Resources