Coder Social home page Coder Social logo

egorbo / xamarin.gradlebindings Goto Github PK

View Code? Open in Web Editor NEW
145.0 7.0 19.0 343 KB

VS add-in. Creates Xamarin.Android Binding Projects using gradle

Home Page: https://visualstudiogallery.msdn.microsoft.com/3a3257c7-473a-4790-9610-9a561eed0b8c

License: MIT License

C# 100.00%
xamarin gradle android-bindings xamarin-android visual-studio-extension

xamarin.gradlebindings's Introduction

Xamarin.GradleBindings - Adding Java libs to Xamarin.Android is as simple as "Adding Reference" in VS.

Link to extensions gallery: https://visualstudiogallery.msdn.microsoft.com/3a3257c7-473a-4790-9610-9a561eed0b8c

How do java developers add dependencies to their projects? Yes that's right, via gradle (something like this or that). As you can see some java-projects use those dependencies a lot so it'd be nice to use those huge amount of 3rd party libraries in your Xamarin project, right? I believe this Add-in for Visual Studio 2017 will help you with it:

Alt text

How to use

Step 1: Execute the command over "References" folder

Alt text

Step 2: Set an external dependency id and a name for Xamarin Android Binding Project (will be generated). This dialog will allow you to specify custom repositories as well soon.

Alt text

The Plugin executes gradle scripts and receives dependencies list (including transitive ones). At this step you can select or deselect needed binaries (transitive dependencies are deselected by default). NOTE: you'd better use "Xamarin Components" or directly NuGet for Support dependencies (v4, RecyclerView, AppCompact, etc..).

Alt text

Step 3: The binding project will be generated but you still may have to fix some issues via Metadata.xml because the Add-in is not smart enough. For our example you will have to change visibility of DialogBase class because it's private in Java and C# doesn't support deriving public classes from private ones. So just add it to the Transforms/Metadata.xml (more info here):

<attr path="/api/package[@name='com.afollestad.materialdialogs']/class[@name='DialogBase']" name="visibility">public</attr>

Step 4: Now you are ready to use them! i.e. the Material Dialogs:

Alt text

Enjoy!

xamarin.gradlebindings's People

Contributors

egorbo avatar mkorolev-igs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xamarin.gradlebindings's Issues

Not installing on VS 16.2

I am not able to install this plugin on the latest Visual Studio version 16.2.
Attached error image.
image

gradle version is outdated

Please, update distributionUrl from gradle-wrapper.properties with the latest version.
Is it also possible to give an ability for a manual update?

vs2017 15.9.5

System.IO.FileNotFoundException: 系统找不到指定的文件。 (异常来自 HRESULT:0x80070002)
在 EnvDTE80.Solution2.GetProjectTemplate(String TemplateName, String Language)
在 EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.CreateProjectAndAddReferenceToIt(VSProject sourceProject, Solution2 solution, String newProjectTemplate, String newProjectName, String newProjectDirectory)
在 EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.CreateBindingProject(VSProject sourceProject, Solution2 solution, String bindingProjectName, IEnumerable1 aarFiles, IEnumerable1 jarFiles, IEnumerable`1 referencedJarFiles, String infoFile)
在 EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.d__5.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
在 GradleBindings.BindingProjectGenerator.d__7.MoveNext()

System.IO.FileNotFoundException with latest(At current moment) VS2017

i am trying to add binding to com.arasthel:spannedgridlayoutmanager:2.0.2.
and i then got:

System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
в EnvDTE80.Solution2.GetProjectTemplate(String TemplateName, String Language)
в EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.CreateProjectAndAddReferenceToIt(VSProject sourceProject, Solution2 solution, String newProjectTemplate, String newProjectName, String newProjectDirectory)
в EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.CreateBindingProject(VSProject sourceProject, Solution2 solution, String bindingProjectName, IEnumerable1 aarFiles, IEnumerable1 jarFiles, IEnumerable`1 referencedJarFiles, String infoFile)
в EgorBo.GradleBindings_VisualStudio.GradleBindings_VisualStudioPackage.d__5.MoveNext()
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
в GradleBindings.BindingProjectGenerator.d__7.MoveNext()

looks like template path is outdated?

Build failed with an exception

i was going to build CircularFloatingActionMenu Library and build failed with exception.
here is the log

Gradle log:
========

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\Masih\AppData\Local\Temp\Xamarin.GradleBindings\71db05\build.gradle' line: 5

* What went wrong:
A problem occurred evaluating root project '71db05'.
> Could not resolve all files for configuration ':detachedConfiguration1'.
   > Could not resolve com.oguzdev:CircularFloatingActionMenu:1.0.2.
     Required by:
         project :
      > Could not resolve com.oguzdev:CircularFloatingActionMenu:1.0.2.
         > Could not get resource 'https://jcenter.bintray.com/com/oguzdev/CircularFloatingActionMenu/1.0.2/CircularFloatingActionMenu-1.0.2.pom'.
            > Could not GET 'https://jcenter.bintray.com/com/oguzdev/CircularFloatingActionMenu/1.0.2/CircularFloatingActionMenu-1.0.2.pom'.
               > Connect to jcenter.bintray.com:443 [jcenter.bintray.com/5.153.35.248] failed: Connection timed out: connect

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 24s



Original script:
========
apply plugin: 'java'

def resolveDependencyString(String dependencyString) {
    def dependency = dependencies.create(dependencyString)
    configurations.detachedConfiguration(dependency).setTransitive(false).resolve()
}

def resolveDependencyStringTransitive(String dependencyString) {
    def dependency = dependencies.create(dependencyString)
    configurations.detachedConfiguration(dependency).setTransitive(true).resolve()
}

repositories { 
    maven { url "C:/Developments/android-sdk/extras/android/m2repository/" } // will be replaced by the add-in
    jcenter()
    maven { url "https://jitpack.io" }
    // add custom repositores here
 }

task getDeps(type: Copy) {
  def resultFileAll = new File("C:/Users/Masih/AppData/Local/Temp/Xamarin.GradleBindings/71db05/result_main.txt")
  def resultFileMain = new File("C:/Users/Masih/AppData/Local/Temp/Xamarin.GradleBindings/71db05/result_all.txt")
  resolveDependencyString('com.oguzdev:CircularFloatingActionMenu:1.0.2').sort().each { resultFileMain.append('\n' + it.toString()) }
  resolveDependencyStringTransitive('com.oguzdev:CircularFloatingActionMenu:1.0.2').sort().each { resultFileAll.append('\n' + it.toString()) }
}

Stack-Trace:
========
   at GradleBindings.Gradle.ExtractDependencies(String dependency, String androidSdkHome, String& workingDirectory, String customRepositories, Boolean detailedLog)
   at GradleBindings.BindingProjectGenerator.<>c__DisplayClass7_1.<Generate>b__1()

I can't add gradle dependency i have this error

Gradle log:

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_131\bin

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

Binding Dll does not contain anything but Dll sucessfully Generated

I tried Xamarin.GradleBindings to add library from gradle. The dll is successfully created and that dll also added into my android project automatically. But the dll does not contain anything.
I cannot also added namespace of the Dll into my Activity by using 'using mybinding_projectname'.

Please provide some suggestion regarding this issue

How install appcompat-v7-28.0.0 to m2repository?

Hi! I try use chart library "com.github.AnyChart:AnyChart-Android:1.0.8"
and get error.
I understand that there is not enough library "appcompat-v7-28" in m2repository, but I do not know how to install them.
I hope for your help. Thanks!

Error:

Gradle log:

FAILURE: Build failed with an exception.

  • Where:
    Build file 'C:\Users\Vladimir\AppData\Local\Temp\Xamarin.GradleBindings\bcd4d5\build.gradle' line: 10

  • What went wrong:
    A problem occurred evaluating root project 'bcd4d5'.

Could not resolve all files for configuration ':detachedConfiguration2'.
Could not find com.android.support:appcompat-v7:28.0.0.
Searched in the following locations:
file:/C:/Program Files (x86)/Android/android-sdk/extras/android/m2repository/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.pom
file:/C:/Program Files (x86)/Android/android-sdk/extras/android/m2repository/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.jar
https://jcenter.bintray.com/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.pom
https://jcenter.bintray.com/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.jar
https://jitpack.io/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.pom
https://jitpack.io/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.jar
Required by:
project : > com.github.AnyChart:AnyChart-Android:1.0.8

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

  • Get more help at https://help.gradle.org

BUILD FAILED in 4s

Original script:

apply plugin: 'java'

def resolveDependencyString(String dependencyString) {
def dependency = dependencies.create(dependencyString)
configurations.detachedConfiguration(dependency).setTransitive(false).resolve()
}

def resolveDependencyStringTransitive(String dependencyString) {
def dependency = dependencies.create(dependencyString)
configurations.detachedConfiguration(dependency).setTransitive(true).resolve()
}

repositories {
maven { url "C:/Program Files (x86)/Android/android-sdk/extras/android/m2repository/" } // will be replaced by the add-in
jcenter()
maven { url "https://jitpack.io" }
// add custom repositores here
}

task getDeps(type: Copy) {
def resultFileAll = new File("C:/Users/Vladimir/AppData/Local/Temp/Xamarin.GradleBindings/bcd4d5/result_main.txt")
def resultFileMain = new File("C:/Users/Vladimir/AppData/Local/Temp/Xamarin.GradleBindings/bcd4d5/result_all.txt")
resolveDependencyString('com.github.AnyChart:AnyChart-Android:1.0.8').sort().each { resultFileMain.append('\n' + it.toString()) }
resolveDependencyStringTransitive('com.github.AnyChart:AnyChart-Android:1.0.8').sort().each { resultFileAll.append('\n' + it.toString()) }
}

Stack-Trace:

в GradleBindings.Gradle.ExtractDependencies(String dependency, String androidSdkHome, String& workingDirectory, String customRepositories, Boolean detailedLog)
в GradleBindings.BindingProjectGenerator.<>c__DisplayClass7_1.b__1()

Project outdated

This project seems to be outdated, most likely the author forgot about or doesn't have the time anymore.
I'll make a fork and will try to make updates from time to time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.