Open Capacitor project in Intellij Idea Ultimate as one project - android-studio

I am currently evaluating Capacitor as framework and try to open it in IDEA Ultimate.
What I want is to have one project with the android platform as module (or facet?), so that I don't have to switch the IDE between deploying the app to my device and making changes to the webapp code.
I tried a few approaches:
open the android folder as project
now I have a working android project with three modules: "app", "capacitor-android" and "capacitor-cordova-android-plugins"
add the project root as web module
now I have two root folders in project view: "android" and my project root
open the project root folder as project
add angular as module/ add angular as facet
now I have four main folders "app", "capacitor-android", "capacitor-cordova-android-plugins" and my project root.
All of them look fine, but in the end IDEA is no longer recognizing the dependency of "capacitor-android" that the "app" module has. So the MainActivity class has a lot of red lines because the imports "com.getcapacitor" are not found.
Has anyone successfully worked with IDEA Ultimate and capacitor without using two instances of idea, one for the webapp and one for the angular app?
Also, I don't understand the difference between facet and module, it seems IDEA is using the same approach, no matter what I use. Maybe there is a better approach that I could try?

Related

Excel add-in Shared runtime configuration, webpack.config.js is not present in project

I created an Excel Add-in project few months back using Visual Studio 2019. Now I am facing some issues and came to conclusion that Shared Runtime might not be configured correctly. So I followed this tutorial to update manifest of the project.
https://learn.microsoft.com/en-us/office/dev/add-ins/tutorials/share-data-and-events-between-custom-functions-and-the-task-pane-tutorial
However after that It is mention to update webpack.config.js, but this file is not present in project. Even if I create a new project using VS2019, this file is not there. Can anyone guide me how to add this file like its location, contents etc so that I can add it and follow next steps to configure Shared Runtime correctly.
You need to use the VSCode with yeoman generator to scaffold an add-in project which uses webpack for bundling. For example, the Build an Excel task pane add-in page contains guides for Visual Studio and Yeoman generator (as a rule VSCode or WebStorm developers).
Reply from Rick Kirkham on Github page is below.
https://github.com/OfficeDev/office-js-docs-pr/issues/3568#issuecomment-1201573455
This tutorial creates an add-in project with Yo Office. That kind of
project runs in Node.js. WebPack is a tool for bundling multiple
JavaScript files into one. WebPack is only relevant to Node.js based
projects. Since you created your project in VS 2019, your project uses
C# or VB.NET on the server side and runs in an IIS server. WebPack is
not used in that environment. That's why there is no webpack.config.js
file. Whatever problems you are having with the shared runtime, you're
not going to solve it with WebPack.
Consider raising your problem on Microsoft Q&A. Be sure to
"office-addin-dev".
Alternatively, consider recreating your project as a Node.js project.
You can use this tutorial as a good place to start.

Importing LIBGDX library gdx-backend-android.jar into Android Studio Project

After a hiatus of a couple of years I'm picking up Android development again.
I installed the newest Android Studio(4.1.1) with the latest Android SDK version (Android 11, API 30). After that I created a new project with gdx-setup.
If I add the old java source to my newly generated project I get this error:
error: package com.badlogic.gdx.backends.android does not exist
I'm not sure how to add this jar into the new project. In the Gradle configuration I see mentions of the backend, but it's not available.
I also downloaded the 'gdx-backend-android.jar' from the nightly build and put the jar in the Android library folder, all to no avail.
Does anyone actually know how to correctly add this dependency into my project?
I added the jar but still have an error, don't mind the other errors, I first need to fix the GDX import.
The project dependencies are managed by Gradle, so there is no need for you to directly touch any .jar files at all.
The most likely issue you're facing is that you are trying to use Android-specific classes from the core module, which is platform agnostic.
In a typical libGDX project, you do almost all your game code in the core module so it can easily be compiled for any platform. The code you showed above would be in the android module, but your LiveWallpaperStarter class would be part of core.
Some might say there's no reason to use core at all if you're making a Live Wallpaper, since it can't run on any other platforms besides Android. But there is some advantage in keeping the rendering in core so you can test in a desktop game window, because you can more rapidly compile and run on the desktop. This library has some tools that make it easy to wrap your rendering code in a class that lets you simulate a live wallpaper on desktop, for testing.

Adding unit tests to existing Android Studio project

How do I add unit or integration tests to and existing Android Studio project?
I've tried adding folders in Project View as well as creating tests through the context menu (right-click).
I can't get Android Studio to recognize the folder as test folders.
I've also tried:
How to get Android Studio to recognize file as source (test)
Unit testing in android studio
Create unit tests in android studio
I can't get Android Studio to recognize the folder as test folders.
Following below folder structure, you should be able to see all your test cases labeled as "test" when select your Project View as "Android"
|- src
\-- androidTest // for android instrumentation tests
\-- main // your source code
\-- test // for unit tests
Adding a test directory labeled 'androidTest' is only recognized as a test directory if you already have directory 'test' under your src/ directory.
This is as of Android 3.1.3.
I had a similar issue, my Android TV had no 'androidTest' nor 'Test' directories, and I wanted to add some unit tests to the project.
What I did was to create an new Android project from scratch (regular app, not for TV), and I copied the test directory from the new project into my existing project (mantaining the folder structure that #shizhen mentioned above).
Finally I renamed the package folder's names and I got the ExampleUnitTest to run and work ok. After that, I could begin writing unit tests on my Android TV project.
Hope it Helps! It's probably not the best solution, but it works
Although posted answers are pretty straight forward, you may also try this auto generation plugin. This will handle everything for you and more, it'll also try to auto write test cases.
Use Unit Test Architect
Although TDD should be the approach for writing tests, but there may be a lot of untested code already written many times in larger projects.
One day I got frustrated with writing test cases of existing, older codebase. Hence, I thought of auto generating all the unit test cases.
I have created an Open-source Gradle Plugin which can be used for the above task. It is already hosted on mavenCentral. I have used it to generate test cases for my projects. But it can be used in any gradle project, (android, java, kotlin, kotlin+java). It may be rough around the edges but it has done it's job well for me.
BuildScript Dependency:
classpath "io.github.orange-3:unit-test-architect:$PLUGIN_VERSION"

Unable to use #Entity ,#Id annotations in android studio

I am a newbie in using google loud endpoints in m android app.
I followed several tutorials on developing a GAE back-end for my android app in android studio.
I made an android app and then auto-generated back-end for it.
In back-end module I created a bean and auto-generated end point class for it. But when I try to add annotations like #Entity,#Id etc then they are not recogniZed.
I have added objectify-4.0b1 jar to WEB-INF/lib in api project.
What am I missing?
Please advise.
Manish
The IDE needs to know about the objectify library. Did you use the Google Cloud Module generation built into Android Studio to create your endpoint? If so you should have your backend configured through Gradle. This would give you two options:
option 1) is add the following line to your dependencies clause in your backend build.gradle:
compile 'com.googlecode.objectify:objectify:4.0b1'
Although the latest version is 5.1.4 so if you can you should just use that.
option 2) is to go to file -> project structure, then select your backend module and add a library dependency. That will popup a search dialog where you can search for the objectify dependency and automatically add it to your module. This will update your build.gradle for you.

Android Studio - How to open multiple project in single window?

I have downloaded Android Studio and started using it for my Android development.
I need to know, how to open multiple number of projects in a single window like Eclipse. Expecting some help, thanks.
IntelliJ IDEA creates a project for the entire code base you work with, and a module for each of its individual components. So, IntelliJ IDEA module is more like an Eclipse project, and project is roughly similar to Eclipse workspace. There's no exact equivalent to Eclipse's workspace that contains all your work, but you can open multiple projects in multiple frames at the same time.
This table can help you see how Eclipse and IntelliJ IDEA concepts map to each other:
Eclipse IDEA
Workspace Project
Project Module
Project-specific JRE Module JDK
User library Global library
Classpath variable Path variable
Project dependency Module dependency
Library Module library
To use the library add it as a dependancy:
File > Project Structure > Modules > Dependencies
Then add the module (android library) as a module dependency.
Open two projects in a single window is not possible in Android Studio / IntelliJ IDEA. So, when you open a second project, you'll have to decide:
New projects can either be opened in a new window or replace the project in the existing window.
How would you like to open the project?
This limitation is useful because your window offers project specific features, like the Changes tab for VCS information, etc.
How to use library projects?
For now, you can copy the library project into your project folder and declare it as a module dependency. If you use the same libraries in different projects, you will end up having the code multiple times.
ProjectA ProjectB
facebook-sdk/ actionbarsherlock/
actionbarsherlock/ bin/
bin/ src/
src/ ...
AndroidManifest.xml
While this feels kind of inconvenient, it helps having all the required sources in VCS. Soon, Gradle, the new build system, will manage these dependencies pleasantly. Here's an example of how the Gradle build could look like to include ActionBarSherlock or similar libs:
repositories {
mavenCentral()
}
dependencies {
compile 'com.actionbarsherlock:library:4.2.0'
}
In this answer you'll find some reasons why this solution does not work yet.
write code in settings.gradle
include ':ProjectName'
project(':ProjectName').projectDir = new File(rootDir, '/ProjectName')

Resources