@nativescript/android 8.1.1 → 8.2.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/framework/app/build.gradle +43 -132
- package/framework/app/libs/runtime-libs/nativescript-optimized-with-inspector.aar +0 -0
- package/framework/app/libs/runtime-libs/nativescript-optimized.aar +0 -0
- package/framework/app/libs/runtime-libs/nativescript-regular.aar +0 -0
- package/framework/app/src/debug/java/com/tns/ErrorReport.java +7 -1
- package/framework/app/src/debug/java/com/tns/ErrorReportActivity.java +1 -0
- package/framework/build-tools/android-metadata-generator.jar +0 -0
- package/framework/build-tools/dts-generator.jar +0 -0
- package/framework/build-tools/jsparser/js_parser.js +1 -1
- package/framework/build-tools/static-binding-generator.jar +0 -0
- package/framework/build.gradle +111 -4
- package/framework/gradle/wrapper/gradle-wrapper.properties +2 -2
- package/framework/gradle-helpers/paths.gradle +5 -3
- package/framework/gradle.properties +26 -0
- package/framework/settings.json +2 -2
- package/package.json +12 -6
- package/.DS_Store +0 -0
|
@@ -23,13 +23,17 @@
|
|
|
23
23
|
|
|
24
24
|
import groovy.io.FileType
|
|
25
25
|
import groovy.json.JsonSlurper
|
|
26
|
+
import org.apache.commons.io.FileUtils
|
|
26
27
|
|
|
27
28
|
import javax.inject.Inject
|
|
28
29
|
import java.nio.file.Files
|
|
29
30
|
import java.nio.file.Paths
|
|
30
31
|
import java.nio.file.StandardCopyOption
|
|
31
32
|
import java.security.MessageDigest
|
|
32
|
-
|
|
33
|
+
|
|
34
|
+
import java.util.jar.JarEntry
|
|
35
|
+
import java.util.jar.JarFile
|
|
36
|
+
|
|
33
37
|
import static org.gradle.internal.logging.text.StyledTextOutput.Style
|
|
34
38
|
|
|
35
39
|
apply plugin: "com.android.application"
|
|
@@ -41,7 +45,7 @@ def enableKotlin = (project.hasProperty("useKotlin") && project.useKotlin == "tr
|
|
|
41
45
|
|
|
42
46
|
if (enableKotlin) {
|
|
43
47
|
apply plugin: 'kotlin-android'
|
|
44
|
-
apply plugin: 'kotlin-
|
|
48
|
+
apply plugin: 'kotlin-parcelize'
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
def onlyX86 = project.hasProperty("onlyX86")
|
|
@@ -78,11 +82,11 @@ def METADATA_OUT_PATH = "$projectDir/src/main/assets/metadata"
|
|
|
78
82
|
def pluginsJarLibraries = new LinkedList<String>()
|
|
79
83
|
def allJarLibraries = new LinkedList<String>()
|
|
80
84
|
|
|
81
|
-
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "
|
|
82
|
-
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk :
|
|
83
|
-
def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk :
|
|
85
|
+
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "${kotlin_version}" }
|
|
86
|
+
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : COMPILE_SDK_VERSION as int }
|
|
87
|
+
def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk : COMPILE_SDK_VERSION as int }
|
|
84
88
|
def computeBuildToolsVersion = { ->
|
|
85
|
-
project.hasProperty("buildToolsVersion") ? buildToolsVersion :
|
|
89
|
+
project.hasProperty("buildToolsVersion") ? buildToolsVersion : BUILD_TOOLS_VERSION as String
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
def enableAnalytics = (project.hasProperty("gatherAnalyticsData") && project.gatherAnalyticsData == "true")
|
|
@@ -97,76 +101,6 @@ if (enableAnalytics) {
|
|
|
97
101
|
project.ext.selectedBuildType = project.hasProperty("release") ? "release" : "debug"
|
|
98
102
|
|
|
99
103
|
buildscript {
|
|
100
|
-
// we have moved these initializations here as we need getAppResourcesPath to search for buildscript.gradle files,
|
|
101
|
-
// but the buildscript is executed before executing anything else from the gradle file
|
|
102
|
-
def initialize = { ->
|
|
103
|
-
// the build script will not work with previous versions of the CLI (3.1 or earlier)
|
|
104
|
-
def dependenciesJson = file("$rootDir/dependencies.json")
|
|
105
|
-
if (!dependenciesJson.exists()) {
|
|
106
|
-
throw new BuildCancelledException("""
|
|
107
|
-
'dependencies.json' file not found. Check whether the NativeScript CLI has prepared the project beforehand,
|
|
108
|
-
and that your NativeScript version is 3.3, or a more recent one. To build an android project with the current
|
|
109
|
-
version of the {N} CLI install a previous version of the runtime package - 'tns platform add android@3.2'.
|
|
110
|
-
""")
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
project.ext.extractedDependenciesDir = "${project.buildDir}/exploded-dependencies"
|
|
114
|
-
project.ext.cleanupAllJarsTimestamp = "${project.buildDir}/cleanupAllJars.timestamp"
|
|
115
|
-
project.ext.extractAllJarsTimestamp = "${project.buildDir}/extractAllJars.timestamp"
|
|
116
|
-
project.ext.nativescriptDependencies = new JsonSlurper().parseText(dependenciesJson.text)
|
|
117
|
-
project.ext.PLATFORMS_ANDROID = "platforms/android"
|
|
118
|
-
project.ext.USER_PROJECT_ROOT = "$rootDir/../.."
|
|
119
|
-
project.ext.outLogger = services.get(StyledTextOutputFactory).create("colouredOutputLogger")
|
|
120
|
-
|
|
121
|
-
project.ext.getAppPath = { ->
|
|
122
|
-
def relativePathToApp = "app"
|
|
123
|
-
def nsConfigFile = file("$USER_PROJECT_ROOT/nsconfig.json")
|
|
124
|
-
def nsConfig
|
|
125
|
-
|
|
126
|
-
if (nsConfigFile.exists()) {
|
|
127
|
-
nsConfig = new JsonSlurper().parseText(nsConfigFile.getText("UTF-8"))
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (project.hasProperty("appPath")) {
|
|
131
|
-
// when appPath is passed through -PappPath=/path/to/app
|
|
132
|
-
// the path could be relative or absolute - either case will work
|
|
133
|
-
relativePathToApp = appPath
|
|
134
|
-
} else if (nsConfig != null && nsConfig.appPath != null) {
|
|
135
|
-
relativePathToApp = nsConfig.appPath
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
project.ext.appPath = java.nio.file.Paths.get(USER_PROJECT_ROOT).resolve(relativePathToApp).toAbsolutePath()
|
|
139
|
-
|
|
140
|
-
return project.ext.appPath
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
project.ext.getAppResourcesPath = { ->
|
|
144
|
-
def relativePathToAppResources
|
|
145
|
-
def absolutePathToAppResources
|
|
146
|
-
def nsConfigFile = file("$USER_PROJECT_ROOT/nsconfig.json")
|
|
147
|
-
def nsConfig
|
|
148
|
-
|
|
149
|
-
if (nsConfigFile.exists()) {
|
|
150
|
-
nsConfig = new JsonSlurper().parseText(nsConfigFile.getText("UTF-8"))
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (project.hasProperty("appResourcesPath")) {
|
|
154
|
-
// when appResourcesPath is passed through -PappResourcesPath=/path/to/App_Resources
|
|
155
|
-
// the path could be relative or absolute - either case will work
|
|
156
|
-
relativePathToAppResources = appResourcesPath
|
|
157
|
-
absolutePathToAppResources = java.nio.file.Paths.get(USER_PROJECT_ROOT).resolve(relativePathToAppResources).toAbsolutePath()
|
|
158
|
-
} else if (nsConfig != null && nsConfig.appResourcesPath != null) {
|
|
159
|
-
relativePathToAppResources = nsConfig.appResourcesPath
|
|
160
|
-
absolutePathToAppResources = java.nio.file.Paths.get(USER_PROJECT_ROOT).resolve(relativePathToAppResources).toAbsolutePath()
|
|
161
|
-
} else {
|
|
162
|
-
absolutePathToAppResources = "${getAppPath()}/App_Resources"
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
project.ext.appResourcesPath = absolutePathToAppResources
|
|
166
|
-
|
|
167
|
-
return absolutePathToAppResources
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
104
|
def applyBuildScriptConfigurations = { ->
|
|
171
105
|
def absolutePathToAppResources = getAppResourcesPath()
|
|
172
106
|
def pathToBuildScriptGradle = "$absolutePathToAppResources/Android/buildscript.gradle"
|
|
@@ -185,8 +119,6 @@ version of the {N} CLI install a previous version of the runtime package - 'tns
|
|
|
185
119
|
}
|
|
186
120
|
}
|
|
187
121
|
}
|
|
188
|
-
|
|
189
|
-
initialize()
|
|
190
122
|
applyBuildScriptConfigurations()
|
|
191
123
|
}
|
|
192
124
|
////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -266,7 +198,7 @@ android {
|
|
|
266
198
|
|
|
267
199
|
defaultConfig {
|
|
268
200
|
def manifest = new XmlSlurper().parse(file(android.sourceSets.main.manifest.srcFile))
|
|
269
|
-
def minSdkVer = manifest."uses-sdk"."@android:minSdkVersion".text() ?:
|
|
201
|
+
def minSdkVer = manifest."uses-sdk"."@android:minSdkVersion".text() ?: MIN_SDK_VERSION
|
|
270
202
|
minSdkVersion minSdkVer
|
|
271
203
|
targetSdkVersion computeTargetSdkVersion()
|
|
272
204
|
ndk {
|
|
@@ -276,9 +208,6 @@ android {
|
|
|
276
208
|
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
|
277
209
|
}
|
|
278
210
|
}
|
|
279
|
-
dexOptions {
|
|
280
|
-
jumboMode = true
|
|
281
|
-
}
|
|
282
211
|
}
|
|
283
212
|
|
|
284
213
|
compileOptions {
|
|
@@ -373,54 +302,55 @@ repositories {
|
|
|
373
302
|
}
|
|
374
303
|
|
|
375
304
|
dependencies {
|
|
376
|
-
def androidXLegacyVersion = "1.0.0"
|
|
377
|
-
if (project.hasProperty("androidXLegacy")) {
|
|
378
|
-
androidXLegacyVersion = androidXLegacy
|
|
379
|
-
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.legacy:legacy-support-v4:$androidXLegacyVersion"
|
|
380
|
-
}
|
|
381
305
|
|
|
382
|
-
def androidXAppCompatVersion = "
|
|
306
|
+
def androidXAppCompatVersion = "${android_x_app_compat_version}"
|
|
383
307
|
if (project.hasProperty("androidXAppCompat")) {
|
|
384
308
|
androidXAppCompatVersion = androidXAppCompat
|
|
385
309
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.appcompat:appcompat:$androidXAppCompatVersion"
|
|
386
310
|
}
|
|
387
311
|
|
|
388
|
-
def androidXMaterialVersion = "
|
|
312
|
+
def androidXMaterialVersion = "${android_x_material_version}"
|
|
389
313
|
if (project.hasProperty("androidXMaterial")) {
|
|
390
314
|
androidXMaterialVersion = androidXMaterial
|
|
391
315
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library com.google.android.material:material:$androidXMaterialVersion"
|
|
392
316
|
}
|
|
393
317
|
|
|
394
|
-
def androidXExifInterfaceVersion = "
|
|
318
|
+
def androidXExifInterfaceVersion = "${android_x_exif_interface_version}"
|
|
395
319
|
if (project.hasProperty("androidXExifInterface")) {
|
|
396
320
|
androidXExifInterfaceVersion = androidXExifInterface
|
|
397
321
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.exifinterface:exifinterface:$androidXExifInterfaceVersion"
|
|
398
322
|
}
|
|
399
323
|
|
|
400
|
-
def androidXViewPagerVersion = "
|
|
324
|
+
def androidXViewPagerVersion = "${android_x_view_pager_version}"
|
|
401
325
|
if (project.hasProperty("androidXViewPager")) {
|
|
402
326
|
androidXViewPagerVersion = androidXViewPager
|
|
403
327
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.viewpager2:viewpager2:$androidXViewPagerVersion"
|
|
404
328
|
}
|
|
405
329
|
|
|
406
|
-
def androidXFragmentVersion = "
|
|
330
|
+
def androidXFragmentVersion = "${android_x_fragment_version}"
|
|
407
331
|
if (project.hasProperty("androidXFragment")) {
|
|
408
332
|
androidXFragmentVersion = androidXFragment
|
|
409
333
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.fragment:fragment:$androidXFragmentVersion"
|
|
410
334
|
}
|
|
411
335
|
|
|
412
|
-
def androidXTransitionVersion = "
|
|
336
|
+
def androidXTransitionVersion = "${android_x_transition_version}"
|
|
413
337
|
if (project.hasProperty("androidXTransition")) {
|
|
414
338
|
androidXTransitionVersion = androidXTransition
|
|
415
339
|
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.transition:transition:$androidXTransitionVersion"
|
|
416
340
|
}
|
|
417
341
|
|
|
418
|
-
|
|
419
|
-
|
|
342
|
+
def androidXMultidexVersion = "${android_x_multidex_version}"
|
|
343
|
+
if (project.hasProperty("androidXMultidex")) {
|
|
344
|
+
androidXMultidexVersion = androidXMultidex
|
|
345
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.multidex:multidex:$androidXMultidexVersion"
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
implementation "androidx.multidex:multidex:$androidXMultidexVersion"
|
|
420
349
|
implementation "androidx.appcompat:appcompat:$androidXAppCompatVersion"
|
|
421
350
|
implementation "com.google.android.material:material:$androidXMaterialVersion"
|
|
422
351
|
implementation "androidx.exifinterface:exifinterface:$androidXExifInterfaceVersion"
|
|
423
352
|
implementation "androidx.viewpager2:viewpager2:$androidXViewPagerVersion"
|
|
353
|
+
//noinspection KtxExtensionAvailable
|
|
424
354
|
implementation "androidx.fragment:fragment:$androidXFragmentVersion"
|
|
425
355
|
implementation "androidx.transition:transition:$androidXTransitionVersion"
|
|
426
356
|
|
|
@@ -520,7 +450,7 @@ if (failOnCompilationWarningsEnabled()) {
|
|
|
520
450
|
}
|
|
521
451
|
}
|
|
522
452
|
|
|
523
|
-
tasks.whenTaskAdded({
|
|
453
|
+
tasks.whenTaskAdded({ DefaultTask currentTask ->
|
|
524
454
|
if (currentTask =~ /generate.+BuildConfig/) {
|
|
525
455
|
currentTask.finalizedBy(extractAllJars)
|
|
526
456
|
extractAllJars.finalizedBy(collectAllJars)
|
|
@@ -530,7 +460,7 @@ tasks.whenTaskAdded({ org.gradle.api.DefaultTask currentTask ->
|
|
|
530
460
|
currentTask.finalizedBy(buildMetadata)
|
|
531
461
|
}
|
|
532
462
|
if (currentTask =~ /merge.*Assets/) {
|
|
533
|
-
currentTask.
|
|
463
|
+
currentTask.dependsOn(buildMetadata)
|
|
534
464
|
}
|
|
535
465
|
if (currentTask =~ /assemble.*Debug/ || currentTask =~ /assemble.*Release/) {
|
|
536
466
|
currentTask.finalizedBy("validateAppIdMatch")
|
|
@@ -578,19 +508,19 @@ def explodeAar(File compileDependency, File outputDir) {
|
|
|
578
508
|
logger.info("explodeAar: Extracting ${compileDependency.path} -> ${outputDir.path}")
|
|
579
509
|
|
|
580
510
|
if (compileDependency.name.endsWith(".aar")) {
|
|
581
|
-
|
|
511
|
+
JarFile jar = new JarFile(compileDependency)
|
|
582
512
|
Enumeration enumEntries = jar.entries()
|
|
583
513
|
while (enumEntries.hasMoreElements()) {
|
|
584
|
-
|
|
514
|
+
JarEntry file = (JarEntry) enumEntries.nextElement()
|
|
515
|
+
if (file.isDirectory()) {
|
|
516
|
+
continue
|
|
517
|
+
}
|
|
585
518
|
if (file.name.endsWith(".jar")) {
|
|
586
519
|
def targetFile = new File(outputDir, file.name)
|
|
587
520
|
InputStream inputStream = jar.getInputStream(file)
|
|
588
521
|
new File(targetFile.parent).mkdirs()
|
|
589
522
|
Files.copy(inputStream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
|
590
523
|
}
|
|
591
|
-
if (file.isDirectory()) {
|
|
592
|
-
continue
|
|
593
|
-
}
|
|
594
524
|
}
|
|
595
525
|
jar.close()
|
|
596
526
|
} else if (compileDependency.name.endsWith(".jar")) {
|
|
@@ -629,34 +559,15 @@ def getMergedAssetsOutputPath() {
|
|
|
629
559
|
|
|
630
560
|
// Discover all jars and dynamically create tasks for the extraction of each of them
|
|
631
561
|
project.ext.allJars = []
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
}
|
|
642
|
-
}.artifacts.each {
|
|
643
|
-
processJar(it.file, jars)
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
def projectDependencies = config.getAllDependencies().withType(ProjectDependency)
|
|
647
|
-
def dependentProjects = projectDependencies*.dependencyProject
|
|
648
|
-
dependentProjects.findAll {
|
|
649
|
-
// if there's a project dependency search for its result jar file in the build/intermediates/runtime_library_classes folder
|
|
650
|
-
// this is the output folder in gradle 5.1.1, but it can be changed in the future versions of gradle
|
|
651
|
-
def jarDir = new File("${it.getBuildDir()}/intermediates/runtime_library_classes/${buildType.toLowerCase()}")
|
|
652
|
-
if (jarDir.exists()) {
|
|
653
|
-
jarDir.eachFileRecurse(FileType.FILES) { file ->
|
|
654
|
-
if (file.path.endsWith(".jar")) {
|
|
655
|
-
processJar(file, jars)
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
} else {
|
|
659
|
-
outLogger.withStyle(Style.Info).println "WARNING: Folder ${jarDir.path} does not exists, the dependent project's classes won't be included in the metadata"
|
|
562
|
+
allprojects {
|
|
563
|
+
afterEvaluate { project ->
|
|
564
|
+
def buildType = project.selectedBuildType
|
|
565
|
+
def jars = []
|
|
566
|
+
def artifactType = Attribute.of('artifactType', String)
|
|
567
|
+
android.applicationVariants.all { variant ->
|
|
568
|
+
if (variant.buildType.name == buildType) {
|
|
569
|
+
variant.getCompileClasspath().each { fileDependency ->
|
|
570
|
+
processJar(fileDependency, jars)
|
|
660
571
|
}
|
|
661
572
|
}
|
|
662
573
|
}
|
|
@@ -718,7 +629,7 @@ task cleanupAllJars {
|
|
|
718
629
|
// An old directory which is no longer a dependency (e.g. orphaned by a deleted plugin)
|
|
719
630
|
if (!allDests.contains(it.name)) {
|
|
720
631
|
logger.info("Task cleanupAllJars: Deleting orphaned ${it.path}")
|
|
721
|
-
|
|
632
|
+
FileUtils.deleteDirectory(it)
|
|
722
633
|
}
|
|
723
634
|
}
|
|
724
635
|
}
|
|
@@ -836,7 +747,7 @@ task buildMetadata(type: BuildToolTask) {
|
|
|
836
747
|
|
|
837
748
|
def generatedClasses = new LinkedList<String>()
|
|
838
749
|
for (File subDir : classesSubDirs) {
|
|
839
|
-
if (subDir.getName()
|
|
750
|
+
if (subDir.getName() == selectedBuildType) {
|
|
840
751
|
generatedClasses.add(subDir.getAbsolutePath())
|
|
841
752
|
}
|
|
842
753
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -154,7 +154,13 @@ class ErrorReport implements TabLayout.OnTabSelectedListener {
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
static void startPendingErrorActivity(Context context, Intent intent) throws CanceledException {
|
|
157
|
-
|
|
157
|
+
int flags = PendingIntent.FLAG_CANCEL_CURRENT;
|
|
158
|
+
if (Build.VERSION.SDK_INT >= 31) {
|
|
159
|
+
int FLAG_MUTABLE = 1<<25;
|
|
160
|
+
flags = PendingIntent.FLAG_CANCEL_CURRENT | FLAG_MUTABLE;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, flags);
|
|
158
164
|
|
|
159
165
|
pendingIntent.send(context, 0, intent);
|
|
160
166
|
}
|
|
@@ -35,6 +35,7 @@ public class ErrorReportActivity extends AppCompatActivity {
|
|
|
35
35
|
|
|
36
36
|
// @Override
|
|
37
37
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
38
|
+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
38
39
|
try {
|
|
39
40
|
Method onRequestPermissionsResultMethod = AppCompatActivity.class.getMethod("onRequestPermissionsResult", int.class, permissions.getClass(), grantResults.getClass());
|
|
40
41
|
onRequestPermissionsResultMethod.invoke(new AppCompatActivity() /* never do this */, requestCode, permissions, grantResults);
|
|
Binary file
|
|
Binary file
|