Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error Gradle "Could not resolve project" on compile #116

Open
NiSHoW opened this issue Nov 23, 2017 · 13 comments
Open

Error Gradle "Could not resolve project" on compile #116

NiSHoW opened this issue Nov 23, 2017 · 13 comments

Comments

@NiSHoW
Copy link

NiSHoW commented Nov 23, 2017

There is a new system to add dependencies
build-extra.gradle file of project download-library must be change like this

dependencies {
    implementation project(':com.flyingsoftgames.xapkreader:library')
}

android {
    useLibrary 'org.apache.http.legacy'
}

see this reference:
https://stackoverflow.com/questions/33718663/gradle-error-configuration-declares-dependency-which-is-not-declared

@renzoolguin
Copy link

Resolving this issue actually takes two parts. @NiSHoW mentioned the first step. I confirmed it by testing that change in this fork.

The second step is fixing the plugin-build.gradle template in cordova-android. My current hacky solution is to run the following script as a cordova hook:

config.xml

<hook
  comment="Update Cordova Plugin Gradle Template for Gradle 3.0+"
  src="hooks/cordova-plugin-gradle-update.js"
  type="after_platform_add"
/>

hooks/cordova-plugin-gradle-update.js

module.exports = function(context) {
  var fs = require('fs');
  var pattern = /debugCompile (project\(.*)\,.*(\))\n\s*releaseCompile.*/g;
  var replacement = 'implementation $1)';
  var target = 'platforms/android/cordova/lib/plugin-build.gradle';

  console.log('Updating Cordova Plugin Gradle Template to work with gradle 3.0+');

  fs.readFile(target, 'utf8', function (err,data) {
    if (err) return console.log(err);

    data = data.replace(pattern, replacement);

    fs.writeFile(target, data, 'utf8', function (err) {
      if (err) return console.log(err);

      console.log('Updated: ' + target);
    });
  });
};

I'm not sure if and when cordova-android plans on fixing that. Ideally they will fix that in both versions 6.4.0 and 7.0.0. I say that because v7.0.0 introduced structural changes that I don't think most developers want to make right now.

If anyone has a better solution or knows of something that I'm missing, then please share.

Environment:
Cordova-CLI: 7.0.1
Cordova-Android: 6.4.0
Gradle: 4.4.1

@agamemnus
Copy link
Owner

agamemnus commented Jan 16, 2018 via email

@eAi
Copy link

eAi commented May 1, 2018

I've hit this issue and fixed it in a similar way to @renzoolguin above (many thanks!) I'm pretty new to Cordova, but I'm a bit baffled as to why this hasn't been fixed in cordova-android itself and in this project - is this an unusual bug? I'm not demanding for it to be fixed, I'm just confused as to why it hasn't been an issue for lots of other people.

One thing I found was that 'after_platform_add' seems to be called too late - when I use 'cordova prepare' this doesn't get called until after the whole project has been generated - at which point the plugin has already had the gradle file generated. I tried changing this to 'before_plugin_install' - which initially seemed to work, but I believe there's a race condition of sorts - this appears to run in parallel with the generation of the gradle configs. The ultimate fix I ended up with was to modify the generated gradle files - rather than the template, using the same code as above.

It all feels a bit dirty!

Environment
Cordova: 7.0.1
Cordova-Android: 6.4.0
Gradle: 4.1

@Saturnyn
Copy link

Had the same problem, fixed it thanks to the info on this thread:

However, I had to modify the hook code to avoid timing issues: by making the hook return a promise we can ensure the build won't continue until the hook is finished.

let fse = require('fs-extra');

module.exports = function(context) {
	let pattern = /debugCompile (project\(.*)\,.*(\))\n\s*releaseCompile.*/g;
	let replacement = 'implementation $1)';
	let target = 'platforms/android/cordova/lib/plugin-build.gradle';

	const deferral = context.requireCordovaModule('q').defer();

	console.log('srcipts/cordovaPluginGradleUpdate: fixing gradle');
	fse.readFile(target, 'utf8')
	.then((data)=>{
		data = data.replace(pattern, replacement);

		return fse.writeFile(target, data, 'utf8')
		.then(()=>{
			console.log('srcipts/cordovaPluginGradleUpdate: done !');
			deferral.resolve();
		});
	})
	.catch((e)=>{
		deferral.reject('srcipts/cordovaPluginGradleUpdate: error '+e);
	});
	return deferral.promise;
};

erobertson42 referenced this issue in erobertson42/cordova-plugin-xapkreader Jun 4, 2019
fixes some issues in cordova default plugin-build.gradle file:
- replace deprecated "compile" configurations with "implementation"
- replace old Java 1_6 variables with 1_8
- fix "cdvCompileSdkVersion" and "cdvBuildToolsVersion" undefined vars
@erobertson42
Copy link

Thanks to everyone in the thread contributing to the install hook helping me get past some of the build issues I was having. I wanted to mention though, that using Cordova 9 causes this to break with the error:

Using "requireCordovaModule" to load non-cordova module "q" is not supported

The fix was easy enough however. Just add let q = require('q'); to the top, and then replace

const deferral = context.requireCordovaModule('q').defer();

with

const deferral = q.defer();

(or you could make it a one-liner, dealer's choice)

That said, I created a new fork in order to add several other fixes I needed for my application (including a couple others added to this hook script), and some changes to make it simpler to install/configure for others in my organization that will also need to maintain our app. Maybe it'll be of use to others as well:
https://github.com/erobertson42/cordova-plugin-xapkreader/tree/cordova-9

And here is a summary of the changes:
https://github.com/erobertson42/cordova-plugin-xapkreader/blob/cordova-9/README.md#changes

@agamemnus
Copy link
Owner

agamemnus commented Jun 5, 2019

Thank you. I will review those some time soon. It is really annoying that everything keeps breaking, but I try to keep up now and then.

@Johnafriedman
Copy link

https://github.com/erobertson42/cordova-plugin-xapkreader/tree/cordova-9

And here is a summary of the changes:
https://github.com/erobertson42/cordova-plugin-xapkreader/blob/cordova-9/README.md#changes

@erobertson42 thanks for sharing this! When I try to build my project I get
platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:17: error: package android.support.v4.content does not exist
I've tried adding a android.support.v4 plugin but then I get duplicate definitions.
I'm sure it's a problem in my setup, I just wondered if a simple answer is available. My output is attached below.

`Checking Java JDK and Android SDK versions
ANDROID_SDK_ROOT=/Users/johnfriedman/Library/Android/sdk (recommended setting)
ANDROID_HOME=/Users/johnfriedman/Library/Android/sdk (DEPRECATED)
Subproject Path: CordovaLib
Subproject Path: app
Subproject Path: com.flyingsoftgames.xapkreader/FamilyPortal-downloader_library
Subproject Path: com.flyingsoftgames.xapkreader/FamilyPortal-library

Task :app:preBuild UP-TO-DATE
Task :CordovaLib:preBuild UP-TO-DATE
Task :CordovaLib:preDebugBuild UP-TO-DATE
Task :CordovaLib:checkDebugManifest UP-TO-DATE
Task :CordovaLib:processDebugManifest UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:preBuild UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:preDebugBuild UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:checkDebugManifest UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:processDebugManifest UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:preBuild UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:preDebugBuild UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:checkDebugManifest UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:processDebugManifest UP-TO-DATE
Task :app:preDebugBuild UP-TO-DATE
Task :CordovaLib:compileDebugAidl NO-SOURCE
Task :com.flyingsoftgames.xapkreader:library:compileDebugAidl NO-SOURCE
Task :com.flyingsoftgames.xapkreader:downloader_library:compileDebugAidl NO-SOURCE
Task :app:compileDebugAidl NO-SOURCE
Task :CordovaLib:packageDebugRenderscript NO-SOURCE
Task :com.flyingsoftgames.xapkreader:downloader_library:packageDebugRenderscript NO-SOURCE
Task :com.flyingsoftgames.xapkreader:library:packageDebugRenderscript NO-SOURCE
Task :app:compileDebugRenderscript UP-TO-DATE
Task :app:checkDebugManifest UP-TO-DATE
Task :app:generateDebugBuildConfig UP-TO-DATE
Task :app:prepareLintJar UP-TO-DATE
Task :app:generateDebugSources UP-TO-DATE
Task :CordovaLib:compileDebugRenderscript UP-TO-DATE
Task :CordovaLib:generateDebugBuildConfig UP-TO-DATE
Task :CordovaLib:generateDebugResValues UP-TO-DATE
Task :CordovaLib:generateDebugResources UP-TO-DATE
Task :CordovaLib:packageDebugResources UP-TO-DATE
Task :CordovaLib:generateDebugRFile UP-TO-DATE
Task :CordovaLib:prepareLintJar UP-TO-DATE
Task :CordovaLib:generateDebugSources UP-TO-DATE
Task :CordovaLib:javaPreCompileDebug UP-TO-DATE
Task :CordovaLib:compileDebugJavaWithJavac UP-TO-DATE
Task :CordovaLib:processDebugJavaRes NO-SOURCE
Task :CordovaLib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:compileDebugRenderscript UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:generateDebugBuildConfig UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:generateDebugResValues UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:generateDebugResources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:packageDebugResources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:compileDebugRenderscript UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:generateDebugResValues UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:generateDebugResources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:packageDebugResources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:generateDebugRFile UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:generateDebugRFile UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:prepareLintJar UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:generateDebugSources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:generateDebugBuildConfig UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:prepareLintJar UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:generateDebugSources UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:javaPreCompileDebug UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:compileDebugJavaWithJavac UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:library:processDebugJavaRes NO-SOURCE
Task :com.flyingsoftgames.xapkreader:library:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:javaPreCompileDebug UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:compileDebugJavaWithJavac UP-TO-DATE
Task :com.flyingsoftgames.xapkreader:downloader_library:processDebugJavaRes NO-SOURCE
Task :com.flyingsoftgames.xapkreader:downloader_library:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug UP-TO-DATE
Task :app:javaPreCompileDebug UP-TO-DATE
Task :app:mainApkListPersistenceDebug UP-TO-DATE
Task :app:generateDebugResValues UP-TO-DATE
Task :app:generateDebugResources UP-TO-DATE
Task :app:mergeDebugResources UP-TO-DATE
Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
Task :app:processDebugManifest UP-TO-DATE
Task :app:processDebugResources UP-TO-DATE

Task :app:compileDebugJavaWithJavac FAILED
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:17: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
^
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:139: error: cannot find symbol
LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent);
^
symbol: variable LocalBroadcastManager
location: class XAPKDownloaderActivity
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:273: error: cannot find symbol
LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent);
^
symbol: variable LocalBroadcastManager
location: class XAPKDownloaderActivity
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/org/apache/cordova/file/AssetFilesystem.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. 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

BUILD FAILED in 1s
46 actionable tasks: 1 executed, 45 up-to-date
/Users/johnfriedman/dev/family-portal-native/platforms/android/gradlew: Command failed with exit code 1 Error output:
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:17: error: package android.support.v4.content does not exist
import android.support.v4.content.LocalBroadcastManager;
^
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:139: error: cannot find symbol
LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent);
^
symbol: variable LocalBroadcastManager
location: class XAPKDownloaderActivity
/Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/com/flyingsoftgames/xapkreader/XAPKDownloaderActivity.java:273: error: cannot find symbol
LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent);
^
symbol: variable LocalBroadcastManager
location: class XAPKDownloaderActivity
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/johnfriedman/dev/family-portal-native/platforms/android/app/src/main/java/org/apache/cordova/file/AssetFilesystem.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

  • Try:
    Run with --stacktrace option to get the stack trace. 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

BUILD FAILED in 1s
`

@agamemnus
Copy link
Owner

They keep deprecating everything... But shouldn't this be in a new thread?

@erobertson42
Copy link

erobertson42 commented Jun 20, 2019

@Johnafriedman, I'm sorry, but I don't know how much help I can be without knowing more about your setup. However I can say that I never had to explicitly install the android.support plugin, or manually add any support dependencies to any config file(s).

Although I do have the "Android Support Repository" package installed in Android Studio, you could check to see if you have that as well. I'm not sure if it will help, but it's worth a try. I'll admit I'm fairly new to Cordova and Android development in general.

SDK Manager -> SDK Tools tab -> Support Repository

android_support

@Johnafriedman
Copy link

Thanks for your response and suggestion. I am new to this and wasn't sure if I should open an issue in the forked repo.

I was able to build successfully by replacing
{Project}/plugins/com.flyingsoftgames.xapkreader/src/android/XAPKDownloaderActivity.java:17
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
with
import android.support.v4.content.LocalBroadcastManager;

@agamemnus
Copy link
Owner

agamemnus commented Jun 20, 2019

Very good. Teamwork makes the dream work!

@renzoolguin
Copy link

@Johnafriedman I'll take a look at it and update as necessary. I currently have an Android Support issue with Crosswalk, so I'm trying to work out anything related to that. Which minimum Android Support version are you targeting?

@Johnafriedman
Copy link

Johnafriedman commented Jun 20, 2019

@renzoolguin
I'm afraid I don't know enough to be sure I understand the question.

I am using

    "cordova": "^9.0.0",
    "cordova-android": "^8.0.0",

My Android Studio > Preferences > System Settings > Android SDK | SDK Tools |

Android Support Library shows rev. 23.2.1
Support Repository | Android Support Repository shows version 47.0.0

My cordova project config.xml has these preferences:

    <preference name="android-minSdkVersion" value="19" />
    <preference name="android-targetSdkVersion" value="29" />

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants