motion-gradle 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +42 -10
- data/lib/motion-gradle.rb +1 -0
- data/lib/motion/project/aidl.rb +54 -0
- data/lib/motion/project/aidl_build_gradle.erb +27 -0
- data/lib/motion/project/gradle.erb +22 -1
- data/lib/motion/project/gradle.rb +28 -2
- data/lib/motion/project/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50c2e48c77d0f368ee44667ae5d574c85ceb2c25
|
4
|
+
data.tar.gz: 577d8d409dd2fd063f9ca2d1e224561353279bfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98c82bdc75995ee8bfbe97bf5dda498089bf64b25350751aed15768ba5f8cb94727c698d1861dd7291b212ff6c3c66a822902618b71b0fe76081aa2f0646d600
|
7
|
+
data.tar.gz: 1492d7d43990043f70e0613af41ee12218a4a4be77308672902ac8ee9683d3ed36f39f40ee57366daaf840e7428c35ad3ec1fa7e10bb663c7ccff0bf221b69cc
|
data/README.md
CHANGED
@@ -31,15 +31,14 @@ You also need to install `Extras/Android Support Repository` and `Extras/Google
|
|
31
31
|
|
32
32
|
## Setup
|
33
33
|
|
34
|
-
|
35
|
-
lines:
|
34
|
+
Edit the `Rakefile` of your RubyMotion project and add the following require lines:
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
```ruby
|
37
|
+
require 'rubygems'
|
38
|
+
require 'motion-gradle'
|
39
|
+
```
|
41
40
|
|
42
|
-
|
41
|
+
### Dependencies
|
43
42
|
|
44
43
|
From version 1.1.0 you can use the same gradle dependency string that Java users use.
|
45
44
|
|
@@ -53,7 +52,7 @@ From version 1.1.0 you can use the same gradle dependency string that Java users
|
|
53
52
|
end
|
54
53
|
```
|
55
54
|
|
56
|
-
|
55
|
+
### Configuration
|
57
56
|
|
58
57
|
If the `gradle` command is not found in your PATH, you can configure it:
|
59
58
|
|
@@ -64,7 +63,7 @@ Motion::Project::App.setup do |app|
|
|
64
63
|
end
|
65
64
|
```
|
66
65
|
|
67
|
-
|
66
|
+
### Repositories :
|
68
67
|
|
69
68
|
```ruby
|
70
69
|
Motion::Project::App.setup do |app|
|
@@ -76,7 +75,7 @@ Motion::Project::App.setup do |app|
|
|
76
75
|
end
|
77
76
|
```
|
78
77
|
|
79
|
-
|
78
|
+
### Java libraries
|
80
79
|
|
81
80
|
```ruby
|
82
81
|
Motion::Project::App.setup do |app|
|
@@ -89,6 +88,39 @@ end
|
|
89
88
|
|
90
89
|
If relative path is used it's relative to your Rakefile, if you don't specify a path it will search in your_app/my_lib.
|
91
90
|
|
91
|
+
### Plugins
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
Motion::Project::App.setup do |app|
|
95
|
+
# ...
|
96
|
+
app.gradle do
|
97
|
+
plugin 'com.google.gms.google-services'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
102
|
+
### Classpaths
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
Motion::Project::App.setup do |app|
|
106
|
+
# ...
|
107
|
+
app.gradle do
|
108
|
+
classpath 'com.google.gms:google-services:1.3.0-beta1'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
### Aidl
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
Motion::Project::App.setup do |app|
|
117
|
+
# ...
|
118
|
+
app.gradle do
|
119
|
+
aidl 'com.android.vending.billing', './vendor/IInAppBillingService.aidl'
|
120
|
+
end
|
121
|
+
end
|
122
|
+
```
|
123
|
+
|
92
124
|
|
93
125
|
## Tasks
|
94
126
|
|
data/lib/motion-gradle.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
class Aidl
|
2
|
+
def initialize(package, aidl_file_path)
|
3
|
+
@package = package
|
4
|
+
@aidl_file_path = File.expand_path(aidl_file_path)
|
5
|
+
end
|
6
|
+
|
7
|
+
def create_lib
|
8
|
+
create_lib_structure
|
9
|
+
create_gradle_build_file
|
10
|
+
create_manifest
|
11
|
+
end
|
12
|
+
|
13
|
+
def name
|
14
|
+
@name ||= File.basename(@aidl_file_path, '.aidl').downcase
|
15
|
+
end
|
16
|
+
|
17
|
+
def path
|
18
|
+
@path ||= File.join(Motion::Project::Gradle::GRADLE_ROOT, name)
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def create_manifest
|
24
|
+
io = File.new(File.join(path, 'src', 'main', 'AndroidManifest.xml'), "w")
|
25
|
+
io.puts("<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"#{@package}\"></manifest>")
|
26
|
+
io.close
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_gradle_build_file
|
30
|
+
locals = {last_build_tools_version: last_build_tools_version}
|
31
|
+
erb_template = generate_erb_template(File.expand_path("../aidl_build_gradle.erb", __FILE__), locals)
|
32
|
+
io = File.new(File.join(path, 'build.gradle',), "w")
|
33
|
+
io.puts(erb_template)
|
34
|
+
io.close
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_lib_structure
|
38
|
+
aidl_file_dir = File.join(path, 'src', 'main', 'aidl', *@package.split('.'))
|
39
|
+
FileUtils.mkdir_p(aidl_file_dir)
|
40
|
+
FileUtils.cp(@aidl_file_path, aidl_file_dir)
|
41
|
+
end
|
42
|
+
|
43
|
+
def generate_erb_template(path, locals)
|
44
|
+
template_path = File.expand_path(path, __FILE__)
|
45
|
+
template = File.new(template_path).read
|
46
|
+
ERB.new(template).result(OpenStruct.new(locals).instance_eval { binding })
|
47
|
+
end
|
48
|
+
|
49
|
+
def last_build_tools_version
|
50
|
+
build_tools = File.join(ENV['RUBYMOTION_ANDROID_SDK'], 'build-tools')
|
51
|
+
builds_tools_directories = Dir.glob(File.join(build_tools, '*')).select {|f| File.directory? f}
|
52
|
+
File.basename(builds_tools_directories.last)
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
apply plugin: 'com.android.library'
|
2
|
+
|
3
|
+
buildscript {
|
4
|
+
repositories {
|
5
|
+
mavenCentral()
|
6
|
+
}
|
7
|
+
dependencies {
|
8
|
+
classpath 'com.android.tools.build:gradle:1.0.+'
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
android {
|
13
|
+
compileSdkVersion <%= App.config.api_version %>
|
14
|
+
buildToolsVersion "<%= last_build_tools_version %>"
|
15
|
+
|
16
|
+
defaultConfig {
|
17
|
+
minSdkVersion <%= App.config.api_version %>
|
18
|
+
targetSdkVersion <%= App.config.api_version %>
|
19
|
+
versionCode 1
|
20
|
+
versionName "1.0"
|
21
|
+
}
|
22
|
+
buildTypes {
|
23
|
+
release {
|
24
|
+
minifyEnabled false
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
@@ -1,5 +1,27 @@
|
|
1
|
+
buildscript {
|
2
|
+
repositories {
|
3
|
+
jcenter()
|
4
|
+
mavenCentral()
|
5
|
+
}
|
6
|
+
dependencies {
|
7
|
+
<% @classpaths.each do |classpath| %>
|
8
|
+
classpath '<%= classpath %>'
|
9
|
+
<% end %>
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
allprojects {
|
14
|
+
repositories {
|
15
|
+
jcenter()
|
16
|
+
mavenCentral()
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
1
20
|
apply plugin: 'java'
|
2
21
|
apply plugin: 'eclipse'
|
22
|
+
<% @plugins.each do |plugin| %>
|
23
|
+
apply plugin: '<%= plugin %>'
|
24
|
+
<% end %>
|
3
25
|
|
4
26
|
task generateDependencies(type: Copy) {
|
5
27
|
from sourceSets.main.runtimeClasspath
|
@@ -22,7 +44,6 @@ repositories {
|
|
22
44
|
url "<%= url %>"
|
23
45
|
}
|
24
46
|
<% end %>
|
25
|
-
mavenCentral()
|
26
47
|
}
|
27
48
|
|
28
49
|
dependencies {
|
@@ -23,12 +23,16 @@ module Motion::Project
|
|
23
23
|
GRADLE_ROOT = 'vendor/Gradle'
|
24
24
|
attr_reader :dependencies
|
25
25
|
attr_reader :libraries
|
26
|
+
attr_reader :aidls
|
26
27
|
|
27
28
|
def initialize(config)
|
28
29
|
@gradle_path = '/usr/bin/env gradle'
|
29
30
|
@config = config
|
31
|
+
@classpaths = []
|
32
|
+
@plugins = []
|
30
33
|
@dependencies = []
|
31
34
|
@repositories = []
|
35
|
+
@aidl_files = []
|
32
36
|
@libraries = []
|
33
37
|
configure_project
|
34
38
|
end
|
@@ -62,11 +66,24 @@ module Motion::Project
|
|
62
66
|
}
|
63
67
|
end
|
64
68
|
|
69
|
+
def aidl(package, aidl_file_path)
|
70
|
+
@aidl_files << Aidl.new(package, aidl_file_path)
|
71
|
+
end
|
72
|
+
|
73
|
+
def classpath(classpath)
|
74
|
+
@classpaths << classpath
|
75
|
+
end
|
76
|
+
|
77
|
+
def plugin(plugin)
|
78
|
+
@plugins << plugin
|
79
|
+
end
|
80
|
+
|
65
81
|
def repository(url)
|
66
82
|
@repositories << url
|
67
83
|
end
|
68
84
|
|
69
85
|
def install!(update)
|
86
|
+
vendor_aidl_files
|
70
87
|
generate_gradle_settings_file
|
71
88
|
generate_gradle_build_file
|
72
89
|
system("#{gradle_command} --build-file #{gradle_build_file} generateDependencies")
|
@@ -93,12 +110,21 @@ module Motion::Project
|
|
93
110
|
end
|
94
111
|
|
95
112
|
# Helpers
|
113
|
+
def vendor_aidl_files
|
114
|
+
@aidl_files.each do |aidl_file|
|
115
|
+
aidl_file.create_lib
|
116
|
+
library(aidl_file.name, path: aidl_file.path)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
96
120
|
def vendor_aars
|
97
121
|
aars_dependendies = Dir[File.join(GRADLE_ROOT, 'aar/*')]
|
98
122
|
aars_dependendies.each do |dependency|
|
99
123
|
main_jar = File.join(dependency, 'classes.jar')
|
100
124
|
if File.exist?(main_jar)
|
101
|
-
|
125
|
+
jar_path = File.join(dependency, "#{File.basename(dependency)}.jar")
|
126
|
+
FileUtils.mv(main_jar, jar_path)
|
127
|
+
vendor_options = {:jar => jar_path}
|
102
128
|
else
|
103
129
|
next
|
104
130
|
end
|
@@ -148,7 +174,7 @@ module Motion::Project
|
|
148
174
|
FileUtils.mkdir_p(aar_dir)
|
149
175
|
aars.each do |aar|
|
150
176
|
filename = File.basename(aar, '.aar')
|
151
|
-
system("unzip -o -qq #{aar} -d #{aar_dir
|
177
|
+
system("/usr/bin/unzip -o -qq #{aar} -d #{ File.join(aar_dir, filename)}")
|
152
178
|
end
|
153
179
|
end
|
154
180
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-gradle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joffrey Jaffeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: motion-gradle allows RubyMotion Android projects to have access to the
|
14
14
|
Gradle dependency manager.
|
@@ -20,6 +20,8 @@ files:
|
|
20
20
|
- LICENSE
|
21
21
|
- README.md
|
22
22
|
- lib/motion-gradle.rb
|
23
|
+
- lib/motion/project/aidl.rb
|
24
|
+
- lib/motion/project/aidl_build_gradle.erb
|
23
25
|
- lib/motion/project/gradle.erb
|
24
26
|
- lib/motion/project/gradle.rb
|
25
27
|
- lib/motion/project/legacy_dependency.rb
|
@@ -45,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
47
|
version: '0'
|
46
48
|
requirements: []
|
47
49
|
rubyforge_project:
|
48
|
-
rubygems_version: 2.
|
50
|
+
rubygems_version: 2.4.5
|
49
51
|
signing_key:
|
50
52
|
specification_version: 4
|
51
53
|
summary: Gradle integration for RubyMotion Android projects
|