├── .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 |