├── .androidide
└── editor
│ └── openedFiles.json.bak
├── .gradle
├── 8.6
│ ├── checksums
│ │ ├── checksums.lock
│ │ ├── md5-checksums.bin
│ │ └── sha1-checksums.bin
│ ├── dependencies-accessors
│ │ ├── 19666b7ee7477488faba75fa6199859f9eeb0a35
│ │ │ ├── classes
│ │ │ │ └── org
│ │ │ │ │ └── gradle
│ │ │ │ │ └── accessors
│ │ │ │ │ └── dm
│ │ │ │ │ ├── LibrariesForLibs$AndroidPluginAccessors.class
│ │ │ │ │ ├── LibrariesForLibs$BundleAccessors.class
│ │ │ │ │ ├── LibrariesForLibs$EspressoLibraryAccessors.class
│ │ │ │ │ ├── LibrariesForLibs$ExtLibraryAccessors.class
│ │ │ │ │ ├── LibrariesForLibs$PluginAccessors.class
│ │ │ │ │ ├── LibrariesForLibs$VersionAccessors.class
│ │ │ │ │ ├── LibrariesForLibs.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$BundleAccessors.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$EspressoLibraryAccessors.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$ExtLibraryAccessors.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$PluginAccessors.class
│ │ │ │ │ ├── LibrariesForLibsInPluginsBlock$VersionAccessors.class
│ │ │ │ │ └── LibrariesForLibsInPluginsBlock.class
│ │ │ ├── metadata.bin
│ │ │ └── sources
│ │ │ │ └── org
│ │ │ │ └── gradle
│ │ │ │ └── accessors
│ │ │ │ └── dm
│ │ │ │ ├── LibrariesForLibs.java
│ │ │ │ └── LibrariesForLibsInPluginsBlock.java
│ │ └── gc.properties
│ ├── executionHistory
│ │ ├── executionHistory.bin
│ │ └── executionHistory.lock
│ ├── fileChanges
│ │ └── last-build.bin
│ ├── fileHashes
│ │ ├── fileHashes.bin
│ │ ├── fileHashes.lock
│ │ └── resourceHashesCache.bin
│ └── gc.properties
├── buildOutputCleanup
│ ├── buildOutputCleanup.lock
│ ├── cache.properties
│ └── outputFiles.bin
├── config.properties
├── file-system.probe
└── vcs-1
│ └── gc.properties
├── README.md
├── app
├── .gitignore
├── build.gradle.kts
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ └── lib
│ │ ├── arm64-v8a
│ │ └── libpine.so
│ │ └── armeabi-v7a
│ │ └── libpine.so
│ ├── java
│ └── com
│ │ └── newpine
│ │ └── example
│ │ ├── MainActivity.java
│ │ ├── MyApplication.java
│ │ └── README.md
│ └── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ ├── ic_launcher_background.xml
│ └── ic_launcher_foreground.xml
│ ├── layout
│ └── activity_main.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-mdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.webp
│ └── ic_launcher_round.webp
│ ├── values-night
│ └── themes.xml
│ ├── values
│ ├── colors.xml
│ ├── strings.xml
│ └── themes.xml
│ └── xml
│ ├── backup_rules.xml
│ └── data_extraction_rules.xml
├── build.gradle.kts
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
/.androidide/editor/openedFiles.json.bak:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.androidide/editor/openedFiles.json.bak
--------------------------------------------------------------------------------
/.gradle/8.6/checksums/checksums.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/checksums/checksums.lock
--------------------------------------------------------------------------------
/.gradle/8.6/checksums/md5-checksums.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/checksums/md5-checksums.bin
--------------------------------------------------------------------------------
/.gradle/8.6/checksums/sha1-checksums.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/checksums/sha1-checksums.bin
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$AndroidPluginAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$BundleAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$EspressoLibraryAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$EspressoLibraryAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$ExtLibraryAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$ExtLibraryAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$PluginAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs$VersionAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibs.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$AndroidPluginAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$BundleAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$EspressoLibraryAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$EspressoLibraryAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$ExtLibraryAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$ExtLibraryAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$PluginAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock$VersionAccessors.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/classes/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.class
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/metadata.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/metadata.bin
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/sources/org/gradle/accessors/dm/LibrariesForLibs.java:
--------------------------------------------------------------------------------
1 | package org.gradle.accessors.dm;
2 |
3 | import org.gradle.api.NonNullApi;
4 | import org.gradle.api.artifacts.MinimalExternalModuleDependency;
5 | import org.gradle.plugin.use.PluginDependency;
6 | import org.gradle.api.artifacts.ExternalModuleDependencyBundle;
7 | import org.gradle.api.artifacts.MutableVersionConstraint;
8 | import org.gradle.api.provider.Provider;
9 | import org.gradle.api.model.ObjectFactory;
10 | import org.gradle.api.provider.ProviderFactory;
11 | import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory;
12 | import org.gradle.api.internal.catalog.DefaultVersionCatalog;
13 | import java.util.Map;
14 | import org.gradle.api.internal.attributes.ImmutableAttributesFactory;
15 | import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser;
16 | import javax.inject.Inject;
17 |
18 | /**
19 | * A catalog of dependencies accessible via the {@code libs} extension.
20 | */
21 | @NonNullApi
22 | public class LibrariesForLibs extends AbstractExternalDependencyFactory {
23 |
24 | private final AbstractExternalDependencyFactory owner = this;
25 | private final EspressoLibraryAccessors laccForEspressoLibraryAccessors = new EspressoLibraryAccessors(owner);
26 | private final ExtLibraryAccessors laccForExtLibraryAccessors = new ExtLibraryAccessors(owner);
27 | private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config);
28 | private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser);
29 | private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config);
30 |
31 | @Inject
32 | public LibrariesForLibs(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) {
33 | super(config, providers, objects, attributesFactory, capabilityNotationParser);
34 | }
35 |
36 | /**
37 | * Dependency provider for activity with androidx.activity:activity coordinates and
38 | * with version reference activity
39 | *
40 | * This dependency was declared in catalog libs.versions.toml
41 | */
42 | public Provider getActivity() {
43 | return create("activity");
44 | }
45 |
46 | /**
47 | * Dependency provider for appcompat with androidx.appcompat:appcompat coordinates and
48 | * with version reference appcompat
49 | *
50 | * This dependency was declared in catalog libs.versions.toml
51 | */
52 | public Provider getAppcompat() {
53 | return create("appcompat");
54 | }
55 |
56 | /**
57 | * Dependency provider for constraintlayout with androidx.constraintlayout:constraintlayout coordinates and
58 | * with version reference constraintlayout
59 | *
60 | * This dependency was declared in catalog libs.versions.toml
61 | */
62 | public Provider getConstraintlayout() {
63 | return create("constraintlayout");
64 | }
65 |
66 | /**
67 | * Dependency provider for junit with junit:junit coordinates and
68 | * with version reference junit
69 | *
70 | * This dependency was declared in catalog libs.versions.toml
71 | */
72 | public Provider getJunit() {
73 | return create("junit");
74 | }
75 |
76 | /**
77 | * Dependency provider for material with com.google.android.material:material coordinates and
78 | * with version reference material
79 | *
80 | * This dependency was declared in catalog libs.versions.toml
81 | */
82 | public Provider getMaterial() {
83 | return create("material");
84 | }
85 |
86 | /**
87 | * Group of libraries at espresso
88 | */
89 | public EspressoLibraryAccessors getEspresso() {
90 | return laccForEspressoLibraryAccessors;
91 | }
92 |
93 | /**
94 | * Group of libraries at ext
95 | */
96 | public ExtLibraryAccessors getExt() {
97 | return laccForExtLibraryAccessors;
98 | }
99 |
100 | /**
101 | * Group of versions at versions
102 | */
103 | public VersionAccessors getVersions() {
104 | return vaccForVersionAccessors;
105 | }
106 |
107 | /**
108 | * Group of bundles at bundles
109 | */
110 | public BundleAccessors getBundles() {
111 | return baccForBundleAccessors;
112 | }
113 |
114 | /**
115 | * Group of plugins at plugins
116 | */
117 | public PluginAccessors getPlugins() {
118 | return paccForPluginAccessors;
119 | }
120 |
121 | public static class EspressoLibraryAccessors extends SubDependencyFactory {
122 |
123 | public EspressoLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); }
124 |
125 | /**
126 | * Dependency provider for core with androidx.test.espresso:espresso-core coordinates and
127 | * with version reference espressoCore
128 | *
129 | * This dependency was declared in catalog libs.versions.toml
130 | */
131 | public Provider getCore() {
132 | return create("espresso.core");
133 | }
134 |
135 | }
136 |
137 | public static class ExtLibraryAccessors extends SubDependencyFactory {
138 |
139 | public ExtLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); }
140 |
141 | /**
142 | * Dependency provider for junit with androidx.test.ext:junit coordinates and
143 | * with version reference junitVersion
144 | *
145 | * This dependency was declared in catalog libs.versions.toml
146 | */
147 | public Provider getJunit() {
148 | return create("ext.junit");
149 | }
150 |
151 | }
152 |
153 | public static class VersionAccessors extends VersionFactory {
154 |
155 | public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
156 |
157 | /**
158 | * Version alias activity with value 1.8.0
159 | *
160 | * If the version is a rich version and cannot be represented as a
161 | * single version string, an empty string is returned.
162 | *
163 | * This version was declared in catalog libs.versions.toml
164 | */
165 | public Provider getActivity() { return getVersion("activity"); }
166 |
167 | /**
168 | * Version alias agp with value 8.4.0
169 | *
170 | * If the version is a rich version and cannot be represented as a
171 | * single version string, an empty string is returned.
172 | *
173 | * This version was declared in catalog libs.versions.toml
174 | */
175 | public Provider getAgp() { return getVersion("agp"); }
176 |
177 | /**
178 | * Version alias appcompat with value 1.6.1
179 | *
180 | * If the version is a rich version and cannot be represented as a
181 | * single version string, an empty string is returned.
182 | *
183 | * This version was declared in catalog libs.versions.toml
184 | */
185 | public Provider getAppcompat() { return getVersion("appcompat"); }
186 |
187 | /**
188 | * Version alias constraintlayout with value 2.1.4
189 | *
190 | * If the version is a rich version and cannot be represented as a
191 | * single version string, an empty string is returned.
192 | *
193 | * This version was declared in catalog libs.versions.toml
194 | */
195 | public Provider getConstraintlayout() { return getVersion("constraintlayout"); }
196 |
197 | /**
198 | * Version alias espressoCore with value 3.5.1
199 | *
200 | * If the version is a rich version and cannot be represented as a
201 | * single version string, an empty string is returned.
202 | *
203 | * This version was declared in catalog libs.versions.toml
204 | */
205 | public Provider getEspressoCore() { return getVersion("espressoCore"); }
206 |
207 | /**
208 | * Version alias junit with value 4.13.2
209 | *
210 | * If the version is a rich version and cannot be represented as a
211 | * single version string, an empty string is returned.
212 | *
213 | * This version was declared in catalog libs.versions.toml
214 | */
215 | public Provider getJunit() { return getVersion("junit"); }
216 |
217 | /**
218 | * Version alias junitVersion with value 1.1.5
219 | *
220 | * If the version is a rich version and cannot be represented as a
221 | * single version string, an empty string is returned.
222 | *
223 | * This version was declared in catalog libs.versions.toml
224 | */
225 | public Provider getJunitVersion() { return getVersion("junitVersion"); }
226 |
227 | /**
228 | * Version alias material with value 1.10.0
229 | *
230 | * If the version is a rich version and cannot be represented as a
231 | * single version string, an empty string is returned.
232 | *
233 | * This version was declared in catalog libs.versions.toml
234 | */
235 | public Provider getMaterial() { return getVersion("material"); }
236 |
237 | }
238 |
239 | public static class BundleAccessors extends BundleFactory {
240 |
241 | public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); }
242 |
243 | }
244 |
245 | public static class PluginAccessors extends PluginFactory {
246 | private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config);
247 |
248 | public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
249 |
250 | /**
251 | * Group of plugins at plugins.android
252 | */
253 | public AndroidPluginAccessors getAndroid() {
254 | return paccForAndroidPluginAccessors;
255 | }
256 |
257 | }
258 |
259 | public static class AndroidPluginAccessors extends PluginFactory {
260 |
261 | public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
262 |
263 | /**
264 | * Plugin provider for android.application with plugin id com.android.application and
265 | * with version reference agp
266 | *
267 | * This plugin was declared in catalog libs.versions.toml
268 | */
269 | public Provider getApplication() { return createPlugin("android.application"); }
270 |
271 | }
272 |
273 | }
274 |
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/19666b7ee7477488faba75fa6199859f9eeb0a35/sources/org/gradle/accessors/dm/LibrariesForLibsInPluginsBlock.java:
--------------------------------------------------------------------------------
1 | package org.gradle.accessors.dm;
2 |
3 | import org.gradle.api.NonNullApi;
4 | import org.gradle.api.artifacts.MinimalExternalModuleDependency;
5 | import org.gradle.plugin.use.PluginDependency;
6 | import org.gradle.api.artifacts.ExternalModuleDependencyBundle;
7 | import org.gradle.api.artifacts.MutableVersionConstraint;
8 | import org.gradle.api.provider.Provider;
9 | import org.gradle.api.model.ObjectFactory;
10 | import org.gradle.api.provider.ProviderFactory;
11 | import org.gradle.api.internal.catalog.AbstractExternalDependencyFactory;
12 | import org.gradle.api.internal.catalog.DefaultVersionCatalog;
13 | import java.util.Map;
14 | import org.gradle.api.internal.attributes.ImmutableAttributesFactory;
15 | import org.gradle.api.internal.artifacts.dsl.CapabilityNotationParser;
16 | import javax.inject.Inject;
17 |
18 | /**
19 | * A catalog of dependencies accessible via the {@code libs} extension.
20 | */
21 | @NonNullApi
22 | public class LibrariesForLibsInPluginsBlock extends AbstractExternalDependencyFactory {
23 |
24 | private final AbstractExternalDependencyFactory owner = this;
25 | private final EspressoLibraryAccessors laccForEspressoLibraryAccessors = new EspressoLibraryAccessors(owner);
26 | private final ExtLibraryAccessors laccForExtLibraryAccessors = new ExtLibraryAccessors(owner);
27 | private final VersionAccessors vaccForVersionAccessors = new VersionAccessors(providers, config);
28 | private final BundleAccessors baccForBundleAccessors = new BundleAccessors(objects, providers, config, attributesFactory, capabilityNotationParser);
29 | private final PluginAccessors paccForPluginAccessors = new PluginAccessors(providers, config);
30 |
31 | @Inject
32 | public LibrariesForLibsInPluginsBlock(DefaultVersionCatalog config, ProviderFactory providers, ObjectFactory objects, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) {
33 | super(config, providers, objects, attributesFactory, capabilityNotationParser);
34 | }
35 |
36 | /**
37 | * Dependency provider for activity with androidx.activity:activity coordinates and
38 | * with version reference activity
39 | *
40 | * This dependency was declared in catalog libs.versions.toml
41 | *
42 | * @deprecated Will be removed in Gradle 9.0.
43 | */
44 | @Deprecated
45 | public Provider getActivity() {
46 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
47 | return create("activity");
48 | }
49 |
50 | /**
51 | * Dependency provider for appcompat with androidx.appcompat:appcompat coordinates and
52 | * with version reference appcompat
53 | *
54 | * This dependency was declared in catalog libs.versions.toml
55 | *
56 | * @deprecated Will be removed in Gradle 9.0.
57 | */
58 | @Deprecated
59 | public Provider getAppcompat() {
60 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
61 | return create("appcompat");
62 | }
63 |
64 | /**
65 | * Dependency provider for constraintlayout with androidx.constraintlayout:constraintlayout coordinates and
66 | * with version reference constraintlayout
67 | *
68 | * This dependency was declared in catalog libs.versions.toml
69 | *
70 | * @deprecated Will be removed in Gradle 9.0.
71 | */
72 | @Deprecated
73 | public Provider getConstraintlayout() {
74 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
75 | return create("constraintlayout");
76 | }
77 |
78 | /**
79 | * Dependency provider for junit with junit:junit coordinates and
80 | * with version reference junit
81 | *
82 | * This dependency was declared in catalog libs.versions.toml
83 | *
84 | * @deprecated Will be removed in Gradle 9.0.
85 | */
86 | @Deprecated
87 | public Provider getJunit() {
88 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
89 | return create("junit");
90 | }
91 |
92 | /**
93 | * Dependency provider for material with com.google.android.material:material coordinates and
94 | * with version reference material
95 | *
96 | * This dependency was declared in catalog libs.versions.toml
97 | *
98 | * @deprecated Will be removed in Gradle 9.0.
99 | */
100 | @Deprecated
101 | public Provider getMaterial() {
102 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
103 | return create("material");
104 | }
105 |
106 | /**
107 | * Group of libraries at espresso
108 | *
109 | * @deprecated Will be removed in Gradle 9.0.
110 | */
111 | @Deprecated
112 | public EspressoLibraryAccessors getEspresso() {
113 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
114 | return laccForEspressoLibraryAccessors;
115 | }
116 |
117 | /**
118 | * Group of libraries at ext
119 | *
120 | * @deprecated Will be removed in Gradle 9.0.
121 | */
122 | @Deprecated
123 | public ExtLibraryAccessors getExt() {
124 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
125 | return laccForExtLibraryAccessors;
126 | }
127 |
128 | /**
129 | * Group of versions at versions
130 | */
131 | public VersionAccessors getVersions() {
132 | return vaccForVersionAccessors;
133 | }
134 |
135 | /**
136 | * Group of bundles at bundles
137 | *
138 | * @deprecated Will be removed in Gradle 9.0.
139 | */
140 | @Deprecated
141 | public BundleAccessors getBundles() {
142 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
143 | return baccForBundleAccessors;
144 | }
145 |
146 | /**
147 | * Group of plugins at plugins
148 | */
149 | public PluginAccessors getPlugins() {
150 | return paccForPluginAccessors;
151 | }
152 |
153 | /**
154 | * @deprecated Will be removed in Gradle 9.0.
155 | */
156 | @Deprecated
157 | public static class EspressoLibraryAccessors extends SubDependencyFactory {
158 |
159 | public EspressoLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); }
160 |
161 | /**
162 | * Dependency provider for core with androidx.test.espresso:espresso-core coordinates and
163 | * with version reference espressoCore
164 | *
165 | * This dependency was declared in catalog libs.versions.toml
166 | *
167 | * @deprecated Will be removed in Gradle 9.0.
168 | */
169 | @Deprecated
170 | public Provider getCore() {
171 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
172 | return create("espresso.core");
173 | }
174 |
175 | }
176 |
177 | /**
178 | * @deprecated Will be removed in Gradle 9.0.
179 | */
180 | @Deprecated
181 | public static class ExtLibraryAccessors extends SubDependencyFactory {
182 |
183 | public ExtLibraryAccessors(AbstractExternalDependencyFactory owner) { super(owner); }
184 |
185 | /**
186 | * Dependency provider for junit with androidx.test.ext:junit coordinates and
187 | * with version reference junitVersion
188 | *
189 | * This dependency was declared in catalog libs.versions.toml
190 | *
191 | * @deprecated Will be removed in Gradle 9.0.
192 | */
193 | @Deprecated
194 | public Provider getJunit() {
195 | org.gradle.internal.deprecation.DeprecationLogger.deprecateBehaviour("Accessing libraries or bundles from version catalogs in the plugins block.").withAdvice("Only use versions or plugins from catalogs in the plugins block.").willBeRemovedInGradle9().withUpgradeGuideSection(8, "kotlin_dsl_deprecated_catalogs_plugins_block").nagUser();
196 | return create("ext.junit");
197 | }
198 |
199 | }
200 |
201 | public static class VersionAccessors extends VersionFactory {
202 |
203 | public VersionAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
204 |
205 | /**
206 | * Version alias activity with value 1.8.0
207 | *
208 | * If the version is a rich version and cannot be represented as a
209 | * single version string, an empty string is returned.
210 | *
211 | * This version was declared in catalog libs.versions.toml
212 | */
213 | public Provider getActivity() { return getVersion("activity"); }
214 |
215 | /**
216 | * Version alias agp with value 8.4.0
217 | *
218 | * If the version is a rich version and cannot be represented as a
219 | * single version string, an empty string is returned.
220 | *
221 | * This version was declared in catalog libs.versions.toml
222 | */
223 | public Provider getAgp() { return getVersion("agp"); }
224 |
225 | /**
226 | * Version alias appcompat with value 1.6.1
227 | *
228 | * If the version is a rich version and cannot be represented as a
229 | * single version string, an empty string is returned.
230 | *
231 | * This version was declared in catalog libs.versions.toml
232 | */
233 | public Provider getAppcompat() { return getVersion("appcompat"); }
234 |
235 | /**
236 | * Version alias constraintlayout with value 2.1.4
237 | *
238 | * If the version is a rich version and cannot be represented as a
239 | * single version string, an empty string is returned.
240 | *
241 | * This version was declared in catalog libs.versions.toml
242 | */
243 | public Provider getConstraintlayout() { return getVersion("constraintlayout"); }
244 |
245 | /**
246 | * Version alias espressoCore with value 3.5.1
247 | *
248 | * If the version is a rich version and cannot be represented as a
249 | * single version string, an empty string is returned.
250 | *
251 | * This version was declared in catalog libs.versions.toml
252 | */
253 | public Provider getEspressoCore() { return getVersion("espressoCore"); }
254 |
255 | /**
256 | * Version alias junit with value 4.13.2
257 | *
258 | * If the version is a rich version and cannot be represented as a
259 | * single version string, an empty string is returned.
260 | *
261 | * This version was declared in catalog libs.versions.toml
262 | */
263 | public Provider getJunit() { return getVersion("junit"); }
264 |
265 | /**
266 | * Version alias junitVersion with value 1.1.5
267 | *
268 | * If the version is a rich version and cannot be represented as a
269 | * single version string, an empty string is returned.
270 | *
271 | * This version was declared in catalog libs.versions.toml
272 | */
273 | public Provider getJunitVersion() { return getVersion("junitVersion"); }
274 |
275 | /**
276 | * Version alias material with value 1.10.0
277 | *
278 | * If the version is a rich version and cannot be represented as a
279 | * single version string, an empty string is returned.
280 | *
281 | * This version was declared in catalog libs.versions.toml
282 | */
283 | public Provider getMaterial() { return getVersion("material"); }
284 |
285 | }
286 |
287 | /**
288 | * @deprecated Will be removed in Gradle 9.0.
289 | */
290 | @Deprecated
291 | public static class BundleAccessors extends BundleFactory {
292 |
293 | public BundleAccessors(ObjectFactory objects, ProviderFactory providers, DefaultVersionCatalog config, ImmutableAttributesFactory attributesFactory, CapabilityNotationParser capabilityNotationParser) { super(objects, providers, config, attributesFactory, capabilityNotationParser); }
294 |
295 | }
296 |
297 | public static class PluginAccessors extends PluginFactory {
298 | private final AndroidPluginAccessors paccForAndroidPluginAccessors = new AndroidPluginAccessors(providers, config);
299 |
300 | public PluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
301 |
302 | /**
303 | * Group of plugins at plugins.android
304 | */
305 | public AndroidPluginAccessors getAndroid() {
306 | return paccForAndroidPluginAccessors;
307 | }
308 |
309 | }
310 |
311 | public static class AndroidPluginAccessors extends PluginFactory {
312 |
313 | public AndroidPluginAccessors(ProviderFactory providers, DefaultVersionCatalog config) { super(providers, config); }
314 |
315 | /**
316 | * Plugin provider for android.application with plugin id com.android.application and
317 | * with version reference agp
318 | *
319 | * This plugin was declared in catalog libs.versions.toml
320 | */
321 | public Provider getApplication() { return createPlugin("android.application"); }
322 |
323 | }
324 |
325 | }
326 |
--------------------------------------------------------------------------------
/.gradle/8.6/dependencies-accessors/gc.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/dependencies-accessors/gc.properties
--------------------------------------------------------------------------------
/.gradle/8.6/executionHistory/executionHistory.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/executionHistory/executionHistory.bin
--------------------------------------------------------------------------------
/.gradle/8.6/executionHistory/executionHistory.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/executionHistory/executionHistory.lock
--------------------------------------------------------------------------------
/.gradle/8.6/fileChanges/last-build.bin:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gradle/8.6/fileHashes/fileHashes.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/fileHashes/fileHashes.bin
--------------------------------------------------------------------------------
/.gradle/8.6/fileHashes/fileHashes.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/fileHashes/fileHashes.lock
--------------------------------------------------------------------------------
/.gradle/8.6/fileHashes/resourceHashesCache.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/fileHashes/resourceHashesCache.bin
--------------------------------------------------------------------------------
/.gradle/8.6/gc.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/8.6/gc.properties
--------------------------------------------------------------------------------
/.gradle/buildOutputCleanup/buildOutputCleanup.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/buildOutputCleanup/buildOutputCleanup.lock
--------------------------------------------------------------------------------
/.gradle/buildOutputCleanup/cache.properties:
--------------------------------------------------------------------------------
1 | #Mon May 20 20:02:46 WIB 2024
2 | gradle.version=8.6
3 |
--------------------------------------------------------------------------------
/.gradle/buildOutputCleanup/outputFiles.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/buildOutputCleanup/outputFiles.bin
--------------------------------------------------------------------------------
/.gradle/config.properties:
--------------------------------------------------------------------------------
1 | #Mon May 20 19:55:48 WIB 2024
2 | java.home=/opt/android-studio/jbr
3 |
--------------------------------------------------------------------------------
/.gradle/file-system.probe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/file-system.probe
--------------------------------------------------------------------------------
/.gradle/vcs-1/gc.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/.gradle/vcs-1/gc.properties
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NewPineExample
2 |
3 | - [AndroidIDE](https://m.androidide.com/) project
4 | - To import for Android Studio you can change just few things in settings gradle and gradle inside `/app`
5 | - Instead of using `AppComponentFactory`, this uses `.MyApplication` (i.e, `android:name`[Manifest] or `.super`[Smali]) for loading library
6 | - loading [pine](https://github.com/canyie/pine) library from assets
7 | - By default architecture specific
8 | - if you want to load specific library without checking for specific arch [read](/app/src/main/java/com/newpine/example/README.md)
9 | - needs only one class rather than using different classes unlike `AppComponentFactory` method (check [this](https://github.com/AbhiTheModder/Fine/blob/main/app/src/main/java/com/abhi/pineexample/Loader.java) project in case you wanna see how that is done) to load libs
10 | - Load libraries based on arch of user system automatically
11 |
12 | > [!TIP]
13 | > If you're looking for [Android Studio](https://developer.android.com/studio) Version of this check out [studio](https://github.com/AbhiTheModder/NewPineExample/tree/studio) branch of this repo.
14 |
15 | > [!NOTE]
16 | > This is just an approach to showcase we can use `android:name` attribute also for hooking our target apps
17 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 |
2 | plugins {
3 | id("com.android.application")
4 |
5 | }
6 |
7 | android {
8 | namespace = "com.newpine.example"
9 | compileSdk = 33
10 |
11 | defaultConfig {
12 | applicationId = "com.newpine.example"
13 | minSdk = 26
14 | targetSdk = 33
15 | versionCode = 1
16 | versionName = "1.0"
17 |
18 | vectorDrawables {
19 | useSupportLibrary = true
20 | }
21 | }
22 |
23 | compileOptions {
24 | sourceCompatibility = JavaVersion.VERSION_11
25 | targetCompatibility = JavaVersion.VERSION_11
26 | }
27 |
28 | buildTypes {
29 | release {
30 | isMinifyEnabled = false
31 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
32 | }
33 | }
34 |
35 | buildFeatures {
36 | viewBinding = true
37 |
38 | }
39 |
40 | }
41 |
42 | dependencies {
43 |
44 |
45 | implementation("androidx.appcompat:appcompat:1.6.1")
46 | implementation("androidx.core:core:1.7.0")
47 | implementation("com.google.android.material:material:1.9.0")
48 | implementation("androidx.constraintlayout:constraintlayout:2.1.4")
49 | implementation("top.canyie.pine:core:0.2.9")
50 | }
51 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
18 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/assets/lib/arm64-v8a/libpine.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/assets/lib/arm64-v8a/libpine.so
--------------------------------------------------------------------------------
/app/src/main/assets/lib/armeabi-v7a/libpine.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/assets/lib/armeabi-v7a/libpine.so
--------------------------------------------------------------------------------
/app/src/main/java/com/newpine/example/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.newpine.example;
2 |
3 | import android.Manifest;
4 | import android.content.Context;
5 | import android.content.pm.PackageManager;
6 | import android.os.Bundle;
7 | import android.view.Gravity;
8 | import android.widget.TextView;
9 | import android.widget.Toast;
10 |
11 | import androidx.appcompat.app.AppCompatActivity;
12 | import androidx.core.app.ActivityCompat;
13 | import androidx.core.content.ContextCompat;
14 | import androidx.core.graphics.Insets;
15 | import androidx.core.view.ViewCompat;
16 | import androidx.core.view.WindowInsetsCompat;
17 | import androidx.annotation.NonNull;
18 |
19 | public class MainActivity extends AppCompatActivity {
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 |
25 | TextView tv = new TextView(this);
26 | tv.setGravity(Gravity.CENTER);
27 | tv.setTextSize(20);
28 | if (isPro()) {
29 | tv.setText("Pro");
30 | } else {
31 | tv.setText("Free");
32 | }
33 |
34 | setContentView(tv);
35 | }
36 |
37 | public boolean isPro() {
38 | return false;
39 | }
40 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/newpine/example/MyApplication.java:
--------------------------------------------------------------------------------
1 | package com.newpine.example;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 | import android.content.res.AssetManager;
6 | import android.os.Build;
7 | import androidx.core.app.AppComponentFactory;
8 | import java.io.File;
9 | import java.io.FileOutputStream;
10 | import java.io.IOException;
11 | import java.io.InputStream;
12 |
13 | import java.lang.reflect.Field;
14 | import java.lang.reflect.Method;
15 |
16 | import top.canyie.pine.Pine;
17 | import top.canyie.pine.callback.MethodReplacement;
18 |
19 | public class MyApplication extends Application {
20 | // Name of the folder inside assets/ containing your libs
21 | private static final String NATIVE_LIB_DIR = "lib";
22 |
23 | public static void loadNativeLibraries(Context context) {
24 | try {
25 | // Get the data directory of the app
26 | File dataDir = context.getDataDir();
27 |
28 | // Create a directory for the native libraries if it doesn't exist
29 | File libDir = new File(dataDir, NATIVE_LIB_DIR);
30 | if (!libDir.exists()) {
31 | libDir.mkdirs();
32 | }
33 |
34 | // Get the AssetManager to access the files in the assets folder
35 | AssetManager assetManager = context.getAssets();
36 |
37 | // uncomment and Use below commented code when you've libraries just under path NATIVE_LIB_DIR and you don't wanna check for architecture specific libs
38 | // For more understanding read README.md present in this directory
39 |
40 | // Get the list of native libraries in the assets folder
41 | // String[] libs = assetManager.list(NATIVE_LIB_DIR);
42 |
43 | // Copy each native library to the app's data directory
44 | // for (String lib : libs) {
45 | // InputStream in = assetManager.open(NATIVE_LIB_DIR + "/" + lib);
46 |
47 | // Get the list of the device's supported ABIs
48 | String[] supportedAbis = Build.SUPPORTED_ABIS;
49 |
50 | // Iterate through the supported ABIs and check if there's a matching architecture-specific folder
51 | for (String abi : supportedAbis) {
52 | // Get libraries present inside assets on our defined directory with user's system architecture
53 | String[] libs = assetManager.list(NATIVE_LIB_DIR + "/" + abi);
54 | if (libs.length > 0) {
55 | // Load the native libraries from the matching folder
56 | for (String lib : libs) {
57 | // Open the input stream
58 | InputStream in = assetManager.open(NATIVE_LIB_DIR + "/" + abi + "/" + lib);
59 | // Create an output stream
60 | // This is the folder where the library files will be copied to
61 | FileOutputStream out = new FileOutputStream(new File(libDir, lib));
62 | // Create a buffer to hold the data being read from the input stream
63 | byte[] buffer = new byte[1024];
64 | //Read data from input stream into buffer
65 | int read;
66 | // Write our read data from input stream to output stream
67 | while ((read = in.read(buffer)) != -1) {
68 | out.write(buffer, 0, read);
69 | }
70 |
71 | // close input and output stream after done
72 | in.close();
73 | out.close();
74 | }
75 | break; // Exit the loop once a matching folder is found
76 | }
77 | }
78 |
79 | // Load our library
80 | String lib = "libpine.so"; // Name of the library, You can change as per your need
81 | System.load(new File(libDir, lib).getAbsolutePath()); // Load our library
82 |
83 | } catch (IOException e) {
84 | e.printStackTrace();
85 | }
86 | }
87 |
88 | public static void hook() {
89 | // PineHook process
90 | try {
91 | // Define a target method
92 | Method isPro = Class.forName("com.newpine.example.MainActivity").getDeclaredMethod("isPro");
93 | // Start hook on target method
94 | Pine.hook(isPro, MethodReplacement.returnConstant(true));
95 | } catch (Throwable th) {
96 | throw new ExceptionInInitializerError(th);
97 | }
98 | }
99 | @Override
100 | public void onCreate() {
101 | super.onCreate();
102 | // Load native libraries
103 | loadNativeLibraries(this);
104 | // Start hook()
105 | hook();
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/app/src/main/java/com/newpine/example/README.md:
--------------------------------------------------------------------------------
1 | > [!NOTE]
2 | > The code used in this directory `MyApplication.java` requires this type of placement for libraries to be able to identify and load the libraries by identifying user specific architecture:
3 | ```plaintext
4 | assets/
5 | └── lib
6 | ├── arm64-v8a
7 | │ └── libpine.so
8 | └── armeabi-v7a
9 | └── libpine.so
10 | ```
11 |
12 | Now in case you want a single library like `assets/lib/libpine.so`:
13 | ```plaintext
14 | assets/
15 | └── lib
16 | └── libpine.so
17 | ```
18 |
19 | for that you can modify `MyApplication.java` where it's checking device architecture for user to:
20 |
21 | ```java
22 | AssetManager assetManager = context.getAssets();
23 |
24 | // Get the list of native libraries in the assets folder
25 | String[] libs = assetManager.list(NATIVE_LIB_DIR);
26 |
27 | // Copy each native library to the app's data directory
28 | for (String lib : libs) {
29 | InputStream in = assetManager.open(NATIVE_LIB_DIR + "/" + lib);
30 | ```
31 |
32 | I've commented this in the class also.
33 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FF000000
4 | #FFFFFFFF
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | NewPineExample
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | plugins {
3 | id("com.android.application") version "8.0.0" apply false
4 | id("com.android.library") version "8.0.0" apply false
5 |
6 | }
7 |
8 | tasks.register("clean") {
9 | delete(rootProject.buildDir)
10 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx512m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Kotlin code style for this project: "official" or "obsolete":
19 | kotlin.code.style=official
20 | # Enables namespacing of each library's R class so that its R class includes only the
21 | # resources declared in the library itself and none from the library's dependencies,
22 | # thereby reducing the size of the R class for that library
23 | android.nonTransitiveRClass=true
--------------------------------------------------------------------------------
/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | agp = "8.4.0"
3 | junit = "4.13.2"
4 | junitVersion = "1.1.5"
5 | espressoCore = "3.5.1"
6 | appcompat = "1.6.1"
7 | material = "1.10.0"
8 | activity = "1.8.0"
9 | constraintlayout = "2.1.4"
10 |
11 | [libraries]
12 | junit = { group = "junit", name = "junit", version.ref = "junit" }
13 | ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
14 | espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
15 | appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
16 | material = { group = "com.google.android.material", name = "material", version.ref = "material" }
17 | activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
18 | constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
19 |
20 | [plugins]
21 | android-application = { id = "com.android.application", version.ref = "agp" }
22 |
23 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AbhiTheModder/NewPineExample/7e50a91866b463584ea2471eed3880bd684b0aea/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon May 20 19:55:55 WIB 2024
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | gradlePluginPortal()
4 | google()
5 | mavenCentral()
6 | }
7 | }
8 |
9 | dependencyResolutionManagement {
10 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
11 | repositories {
12 | google()
13 | mavenCentral()
14 | }
15 | }
16 |
17 | rootProject.name = "NewPineExample"
18 |
19 | include(":app")
--------------------------------------------------------------------------------