@@ -99,9 +99,12 @@ class AndroidBuild extends JavaBuild {
99
99
static public final String target_sdk = "25" ; // Nougat (7.1.1)
100
100
static public final String target_platform = "android-" + target_sdk ;
101
101
102
- // Versions of Support, AppCompatn, Wear and VR in use
102
+ // Versions of Support, AppCompat, Wear and VR in use
103
+ // All of these are hard-coded, as the target_sdk. Should obtained from the
104
+ // repository files? Or users being able to change them in the preferences
105
+ // file?
103
106
static public final String support_version = "25.2.0" ;
104
- static public final String appcompat_version = "25 .2.0" ;
107
+ static public final String play_services_version = "10 .2.0" ;
105
108
static public final String wear_version = "2.0.0" ;
106
109
static public final String gvr_sdk_version = "1.20.0" ;
107
110
@@ -317,26 +320,84 @@ public File createProject(boolean wear) throws IOException, SketchException {
317
320
// package included in the SDK:
318
321
wearAarFile = new File (sdk .getWearableFolder (), wear_version + "/wearable-" + wear_version + ".aar" );
319
322
explodeDir = new File (tmpFolder , "aar" );
320
- AndroidMode .explodeAar (wearAarFile , explodeDir , new File (libsFolder , "wearable-" + wear_version + ".jar" ));
323
+ AndroidMode .extractClassesJarFromAar (wearAarFile , explodeDir , new File (libsFolder , "wearable-" + wear_version + ".jar" ));
324
+
325
+ // Copy support packages (core-utils, compat, fragment, and annotations)
326
+ wearAarFile = new File (sdk .getSupportLibrary (), "/support-core-utils/" + support_version + "/support-core-utils-" + support_version + ".aar" );
327
+ explodeDir = new File (tmpFolder , "aar" );
328
+ AndroidMode .extractClassesJarFromAar (wearAarFile , explodeDir , new File (libsFolder , "support-core-utils-" + support_version + ".jar" ));
321
329
322
- // Copy support packages (compat, fragment, and annotations)
323
330
wearAarFile = new File (sdk .getSupportLibrary (), "/support-compat/" + support_version + "/support-compat-" + support_version + ".aar" );
324
331
explodeDir = new File (tmpFolder , "aar" );
325
- AndroidMode .explodeAar (wearAarFile , explodeDir , new File (libsFolder , "support-compat-" + support_version + ".jar" ));
332
+ AndroidMode .extractClassesJarFromAar (wearAarFile , explodeDir , new File (libsFolder , "support-compat-" + support_version + ".jar" ));
326
333
327
334
wearAarFile = new File (sdk .getSupportLibrary (), "/support-fragment/" + support_version + "/support-fragment-" + support_version + ".aar" );
328
335
explodeDir = new File (tmpFolder , "aar" );
329
- AndroidMode .explodeAar (wearAarFile , explodeDir , new File (libsFolder , "support-fragment-" + support_version + ".jar" ));
336
+ AndroidMode .extractClassesJarFromAar (wearAarFile , explodeDir , new File (libsFolder , "support-fragment-" + support_version + ".jar" ));
330
337
331
- wearAarFile = new File (sdk .getSupportLibrary (), "/support-annotations/" + support_version + "/support-annotations-" + support_version + ".aar" );
332
- explodeDir = new File (tmpFolder , "aar" );
333
- AndroidMode .explodeAar (wearAarFile , explodeDir , new File (libsFolder , "support-annotations-" + support_version + ".jar" ));
338
+ File compatJarFile = new File (sdk .getSupportLibrary (), "/support-annotations/" + support_version + "/support-annotations-" + support_version + ".jar" );
339
+ Util .copyFile (compatJarFile , new File (libsFolder , "support-annotations-" + support_version + ".jar" ));
334
340
335
341
if (getAppComponent () == FRAGMENT ) {
336
- // Copy support appcompat-v7 package
337
- wearAarFile = new File (sdk .getSupportLibrary (), "/appcompat-v7/" + support_version + "/appcompat-v7-" + appcompat_version + ".aar" );
338
- explodeDir = new File (tmpFolder , "aar" );
339
- AndroidMode .explodeAar (wearAarFile , explodeDir , new File (libsFolder , "appcompat-v7-" + appcompat_version + ".jar" ));
342
+ ////////////////////////////////////////////////////////////////////////
343
+ // first step: extract appcompat library project
344
+
345
+ wearAarFile = new File (sdk .getSupportLibrary (), "/appcompat-v7/" + support_version + "/appcompat-v7-" + support_version + ".aar" );
346
+ File appCompatFolder = new File (libsFolder , "appcompat" );
347
+ AndroidMode .extractFolder (wearAarFile , appCompatFolder , false );
348
+ Util .removeDir (new File (appCompatFolder , "aidl" ));
349
+ Util .removeDir (new File (appCompatFolder , "android" ));
350
+ Util .removeDir (new File (appCompatFolder , "assets" ));
351
+ File classesJar = new File (appCompatFolder , "classes.jar" );
352
+ File appCompatLibsFolder = new File (appCompatFolder , "/libs" );
353
+ if (!appCompatLibsFolder .exists ()) appCompatLibsFolder .mkdir ();
354
+ File appCompatJar = new File (appCompatLibsFolder , "android-support-v7-appcompat.jar" );
355
+ Util .copyFile (classesJar , appCompatJar );
356
+ classesJar .delete ();
357
+
358
+ // remove aidl
359
+ // remove android
360
+ // remove annotations
361
+ // remove assets
362
+ // move classes.jar to libs as android-support-v7-appcompat.jar
363
+ // remove jni
364
+
365
+
366
+ /*
367
+ // Need to add appcompat as a library project (includes v4 support)
368
+
369
+ // TODO: the support-v7 library project should be copied from the Android
370
+ // Support Repository, and not from the Support Library.
371
+ File appCompatFolderSrc = new File(sdk.getSupportLibrary(), "v7/appcompat");
372
+ // Delete the project.properties files because Processing will regenerate
373
+ // it when building the project
374
+ File propFile = new File(appCompatFolderSrc, "project.properties");
375
+ propFile.delete();
376
+ File appCompatFolder = new File(libsFolder, "appcompat");
377
+ Util.copyDir(appCompatFolderSrc, appCompatFolder);
378
+ */
379
+
380
+ ////////////////////////////////////////////////////////////////////////
381
+ // second step: create library projects
382
+ boolean appCompatRes = createLibraryProject ("appcompat" , targetID ,
383
+ appCompatFolder .getAbsolutePath (), "android.support.v7.appcompat" );
384
+
385
+ ////////////////////////////////////////////////////////////////////////
386
+ // third step: reference library projects from main project
387
+ if (appCompatRes ) {
388
+ System .out .println ("Library project created succesfully in " + libsFolder .toString ());
389
+ appCompatRes = referenceLibraryProject (targetID , tmpFolder .getAbsolutePath (), "libs/appcompat" );
390
+ if (appCompatRes ) {
391
+ System .out .println ("Library project referenced succesfully!" );
392
+ // Finally, re-write the build files so they use org.eclipse.jdt.core.JDTCompilerAdapter
393
+ // instead of com.sun.tools.javac.Main
394
+ // TODO: use the build file generated by the android tools, and
395
+ // add the custom section redefining the target
396
+ File appCompatBuildFile = new File (appCompatFolder , "build.xml" );
397
+ writeBuildXML (appCompatBuildFile , "appcompat" );
398
+ }
399
+ }
400
+
340
401
}
341
402
342
403
// Copy any imported libraries (their libs and assets),
@@ -535,7 +596,7 @@ private void writeHandheldManifest(final File tmpFolder, String versionCode, Str
535
596
replaceMap .put ("@@package_name@@" , getPackageName ());
536
597
replaceMap .put ("@@version_code@@" , versionCode );
537
598
replaceMap .put ("@@version_name@@" , versionName );
538
- replaceMap .put ("@@min_sdk@@" , AndroidBuild . min_sdk_handheld );
599
+ replaceMap .put ("@@min_sdk@@" , min_sdk_handheld );
539
600
replaceMap .put ("@@sketch_class_name@@" , sketchClassName );
540
601
replaceMap .put ("@@uses_permissions@@" , usesPermissions );
541
602
@@ -1577,8 +1638,9 @@ private void createAppModule(File projectFolder, File exportFolder, String build
1577
1638
replaceMap .put ("@@build_tools@@" , buildToolsVer );
1578
1639
replaceMap .put ("@@package_name@@" , getPackageName ());
1579
1640
replaceMap .put ("@@min_sdk@@" , minSdk );
1580
- replaceMap .put ("@@target_sdk@@" , AndroidBuild .target_sdk );
1581
- replaceMap .put ("@@wear_version@@" , wear_version );
1641
+ replaceMap .put ("@@target_sdk@@" , target_sdk );
1642
+ replaceMap .put ("@@support_version@@" , support_version );
1643
+ replaceMap .put ("@@wear_version@@" , wear_version );
1582
1644
replaceMap .put ("@@gvr_version@@" , gvr_sdk_version );
1583
1645
replaceMap .put ("@@version_code@@" , manifest .getVersionCode ());
1584
1646
replaceMap .put ("@@version_name@@" , manifest .getVersionName ());
@@ -1615,8 +1677,9 @@ private void createMobileModule(File projectFolder, File exportFolder, String bu
1615
1677
HashMap <String , String > replaceMap = new HashMap <String , String >();
1616
1678
replaceMap .put ("@@build_tools@@" , buildToolsVer );
1617
1679
replaceMap .put ("@@package_name@@" , getPackageName ());
1618
- replaceMap .put ("@@min_sdk@@" , AndroidBuild .min_sdk_handheld );
1619
- replaceMap .put ("@@target_sdk@@" , AndroidBuild .target_sdk );
1680
+ replaceMap .put ("@@min_sdk@@" , min_sdk_handheld );
1681
+ replaceMap .put ("@@target_sdk@@" , target_sdk );
1682
+ replaceMap .put ("@@play_services_version@@" , play_services_version );
1620
1683
replaceMap .put ("@@wear_version@@" , wear_version );
1621
1684
replaceMap .put ("@@version_code@@" , manifest .getVersionCode ());
1622
1685
replaceMap .put ("@@version_name@@" , manifest .getVersionName ());
@@ -1644,8 +1707,9 @@ private void createWearModule(File projectFolder, File exportFolder, String buil
1644
1707
HashMap <String , String > replaceMap = new HashMap <String , String >();
1645
1708
replaceMap .put ("@@build_tools@@" , buildToolsVer );
1646
1709
replaceMap .put ("@@package_name@@" , getPackageName ());
1647
- replaceMap .put ("@@min_sdk@@" , AndroidBuild .min_sdk_watchface );
1648
- replaceMap .put ("@@target_sdk@@" , AndroidBuild .target_sdk );
1710
+ replaceMap .put ("@@min_sdk@@" , min_sdk_watchface );
1711
+ replaceMap .put ("@@target_sdk@@" , target_sdk );
1712
+ replaceMap .put ("@@play_services_version@@" , play_services_version );
1649
1713
replaceMap .put ("@@wear_version@@" , wear_version );
1650
1714
replaceMap .put ("@@version_code@@" , manifest .getVersionCode ());
1651
1715
replaceMap .put ("@@version_name@@" , manifest .getVersionName ());
0 commit comments