diff --git a/Troubleshooting.md b/Troubleshooting.md index d9107ec..3e80a67 100644 --- a/Troubleshooting.md +++ b/Troubleshooting.md @@ -55,9 +55,82 @@ If you are an Android Studio user, you can modify the SKYSTONE Android Studio pr 3. Double click on build.common.gradle to edit the file. 4. In the script find the line _**abiFilters "armeabi-v7a", "arm64-v8a"**_ and remove the _**, "arm64-v8a"**_ portion of the line. - Note that there should be two references to _**arm64-v8a**_, one for the release version and the other for the debug version of the app. - - Remove the _**arm64-v8a**_ references from all instances within the build.common.gradle file. Your file should file should like the following: + - Remove the _**arm64-v8a**_ references from all instances within the build.common.gradle file. + - When you are done, your build.common.gradle file should like the following: ``` +/** + * build.common.gradle + * + * Try to avoid editing this file, as it may be updated from time to time as the FTC SDK + * evolves. Rather, if it is necessary to customize the build process, do those edits in + * the build.gradle file in TeamCode. + * + * This file contains the necessary content of the 'build.gradle' files for robot controller + * applications built using the FTC SDK. Each individual 'build.gradle' in those applications + * can simply contain the one line: + * + * apply from: '../build.common.gradle' + * + * which will pick up this file here. This approach allows makes it easier to integrate + * updates to the FTC SDK into your code. + */ + +import java.util.regex.Pattern + +apply plugin: 'com.android.application' + +android { + + compileSdkVersion 28 + + signingConfigs { + debug { + keyAlias 'androiddebugkey' + keyPassword 'android' + storeFile rootProject.file('libs/ftc.debug.keystore') + storePassword 'android' + } + } + + aaptOptions { + noCompress "tflite" + } + + defaultConfig { + applicationId 'com.qualcomm.ftcrobotcontroller' + minSdkVersion 19 + targetSdkVersion 26 + + /** + * We keep the versionCode and versionName of robot controller applications in sync with + * the master information published in the AndroidManifest.xml file of the FtcRobotController + * module. This helps avoid confusion that might arise from having multiple versions of + * a robot controller app simultaneously installed on a robot controller device. + * + * We accomplish this with the help of a funky little Groovy script that maintains that + * correspondence automatically. + * + * @see Configure Your Build + * @see Versioning Your App + */ + def manifestFile = project(':FtcRobotController').file('src/main/AndroidManifest.xml'); + def manifestText = manifestFile.getText() + // + def vCodePattern = Pattern.compile("versionCode=\"(\\d+(\\.\\d+)*)\"") + def matcher = vCodePattern.matcher(manifestText) + matcher.find() + def vCode = Integer.parseInt(matcher.group(1)) + // + def vNamePattern = Pattern.compile("versionName=\"(.*)\"") + matcher = vNamePattern.matcher(manifestText); + matcher.find() + def vName = matcher.group(1) + // + versionCode vCode + versionName vName + } + // Advanced user code might just want to use Vuforia directly, so we set up the libs as needed // http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html buildTypes { @@ -77,6 +150,24 @@ If you are an Android Studio user, you can modify the SKYSTONE Android Studio pr } } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + sourceSets.main { + jni.srcDirs = [] + jniLibs.srcDir rootProject.file('libs') + } +} + +repositories { + flatDir { + dirs rootProject.file('libs') + } +} +apply from: 'build.release.gradle' ``` 5. In Android Studio, select Build->Clean Project to clean the project.