├── library ├── gradle.properties ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── uphyca │ │ └── galette │ │ ├── LongFieldBuilder.java │ │ ├── StringFieldBuilder.java │ │ ├── Fields.java │ │ ├── ContextProvider.java │ │ ├── TrackerProvider.java │ │ ├── SendScreenView.java │ │ ├── SendAppView.java │ │ ├── FieldBuilder.java │ │ ├── HitInterceptor.java │ │ ├── SendEvent.java │ │ ├── ScreenViewBuilderDelegate.java │ │ ├── EventBuilderDelegate.java │ │ └── GAlette.java ├── consumer-rules.pro └── build.gradle ├── plugin ├── gradle.properties ├── src │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── gradle-plugins │ │ │ ├── galette.properties │ │ │ └── com.uphyca.galette.properties │ │ └── groovy │ │ └── com │ │ └── uphyca │ │ └── galette │ │ └── GAlettePlugin.groovy └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── tests ├── src │ ├── main │ │ ├── ic_launcher-web.png │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── uphyca │ │ │ └── galette │ │ │ └── tests │ │ │ └── TestActivity.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── uphyca │ │ └── galette │ │ └── tests │ │ ├── HitInterceptorTest.java │ │ └── GAletteTest.java ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── proguard-rules.txt ├── build.gradle ├── gradlew.bat └── gradlew ├── example ├── src │ └── main │ │ ├── ic_launcher-web.png │ │ ├── res │ │ ├── drawable-hdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-xhdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── styles.xml │ │ │ └── dimens.xml │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ └── layout │ │ │ └── activity_main.xml │ │ ├── java │ │ └── com │ │ │ └── uphyca │ │ │ └── example │ │ │ └── galette │ │ │ ├── MyApplication.java │ │ │ └── MainActivity.java │ │ └── AndroidManifest.xml ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── proguard-rules.txt ├── build.gradle ├── gradlew.bat └── gradlew ├── instrumentation ├── gradle.properties ├── src │ ├── test │ │ └── java │ │ │ ├── android │ │ │ ├── content │ │ │ │ ├── Context.java │ │ │ │ └── ContextWrapper.java │ │ │ ├── support │ │ │ │ └── v4 │ │ │ │ │ └── app │ │ │ │ │ ├── FragmentActivity.java │ │ │ │ │ └── Fragment.java │ │ │ ├── app │ │ │ │ ├── Fragment.java │ │ │ │ ├── Application.java │ │ │ │ ├── Activity.java │ │ │ │ └── Service.java │ │ │ └── view │ │ │ │ ├── View.java │ │ │ │ └── ContextThemeWrapper.java │ │ │ └── com │ │ │ └── uphyca │ │ │ └── galette │ │ │ ├── ContextProvider.java │ │ │ ├── SendEvent.java │ │ │ ├── SendScreenView.java │ │ │ ├── SendAppView.java │ │ │ ├── GAlette.java │ │ │ └── GAletteInstrumentationTest.java │ └── main │ │ └── java │ │ └── com │ │ └── uphyca │ │ └── galette │ │ └── GAletteInstrumentation.java └── build.gradle ├── .gitignore ├── settings.gradle ├── RELEASING.md ├── gradle.properties ├── wercker.yml ├── CHANGELOG.md ├── gradlew.bat ├── gradlew ├── README.md └── LICENSE /library/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=GAlette 2 | POM_ARTIFACT_ID=galette 3 | POM_PACKAGING=aar 4 | -------------------------------------------------------------------------------- /plugin/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=GAlette Plugin 2 | POM_ARTIFACT_ID=galette-plugin 3 | POM_PACKAGING=jar 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tests/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/tests/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /example/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /tests/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/tests/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /example/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /plugin/src/main/resources/META-INF/gradle-plugins/galette.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.uphyca.galette.GAlettePlugin 2 | 3 | -------------------------------------------------------------------------------- /instrumentation/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=GAlette Instrumentation 2 | POM_ARTIFACT_ID=galette-instrumentation 3 | POM_PACKAGING=jar 4 | -------------------------------------------------------------------------------- /plugin/src/main/resources/META-INF/gradle-plugins/com.uphyca.galette.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.uphyca.galette.GAlettePlugin 2 | 3 | -------------------------------------------------------------------------------- /example/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uPhyca/GAlette/HEAD/example/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GAlette-example 5 | 6 | 7 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/content/Context.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | /** 4 | * Stub 5 | */ 6 | public abstract class Context { 7 | public abstract Context getApplicationContext(); 8 | } 9 | -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/support/v4/app/FragmentActivity.java: -------------------------------------------------------------------------------- 1 | package android.support.v4.app; 2 | 3 | import android.app.Activity; 4 | 5 | /** 6 | * Stub 7 | */ 8 | public class FragmentActivity extends Activity { 9 | } 10 | -------------------------------------------------------------------------------- /library/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -keepclassmembernames class * { 2 | @com.uphyca.galette.SendScreenView *; 3 | @com.uphyca.galette.SendEvent *; 4 | } 5 | 6 | -keepclassmembers class * implements com.uphyca.galette.FieldBuilder { 7 | (); 8 | } 9 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /example/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /example/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /example/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .settings 4 | eclipsebin 5 | 6 | bin 7 | gen 8 | build 9 | out 10 | lib 11 | 12 | target 13 | pom.xml.* 14 | release.properties 15 | 16 | .idea 17 | *.iml 18 | classes 19 | 20 | obj 21 | 22 | .gradle 23 | local.properties 24 | 25 | .DS_Store 26 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/app/Fragment.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | /** 4 | * Stub 5 | */ 6 | public class Fragment { 7 | 8 | private Activity mActivity; 9 | 10 | public Activity getActivity() { 11 | return mActivity; 12 | } 13 | 14 | public void setActivity(Activity activity) { 15 | mActivity = activity; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/view/View.java: -------------------------------------------------------------------------------- 1 | package android.view; 2 | 3 | import android.content.Context; 4 | 5 | /** 6 | * Stub 7 | */ 8 | public class View { 9 | 10 | private Context mContext; 11 | 12 | public View(Context context) { 13 | mContext = context; 14 | } 15 | 16 | public Context getContext() { 17 | return mContext; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /example/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/support/v4/app/Fragment.java: -------------------------------------------------------------------------------- 1 | package android.support.v4.app; 2 | 3 | /** 4 | * Stub 5 | */ 6 | public class Fragment { 7 | 8 | private FragmentActivity mActivity; 9 | 10 | public FragmentActivity getActivity() { 11 | return mActivity; 12 | } 13 | 14 | public void setActivity(FragmentActivity activity) { 15 | mActivity = activity; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/app/Application.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.Context; 4 | import android.content.ContextWrapper; 5 | 6 | /** 7 | * Stub 8 | */ 9 | public class Application extends ContextWrapper { 10 | 11 | public Application() { 12 | super(null); 13 | } 14 | 15 | public void attach(Context context) { 16 | attachBaseContext(context); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include 'library' 2 | project(':library').name = 'galette' 3 | 4 | include 'instrumentation' 5 | project(':instrumentation').name = 'galette-instrumentation' 6 | 7 | include 'plugin' 8 | project(':plugin').name = 'galette-plugin' 9 | 10 | //include 'tests' 11 | //project(':tests').name = 'tests' 12 | // 13 | //include 'example' 14 | //project(':example').name = 'example' 15 | 16 | project(':').name = 'galette-parent' 17 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/app/Activity.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.view.ContextThemeWrapper; 4 | 5 | /** 6 | * Stub 7 | */ 8 | public class Activity extends ContextThemeWrapper { 9 | 10 | private Application mApplication; 11 | 12 | public Application getApplication() { 13 | return mApplication; 14 | } 15 | 16 | public void attach(Application application) { 17 | mApplication = application; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/app/Service.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.ContextWrapper; 4 | 5 | /** 6 | * Stub 7 | */ 8 | public class Service extends ContextWrapper { 9 | 10 | private Application mApplication; 11 | 12 | public Service() { 13 | super(null); 14 | } 15 | 16 | public Application getApplication() { 17 | return mApplication; 18 | } 19 | 20 | public void setApplication(Application application) { 21 | mApplication = application; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /instrumentation/src/test/java/android/content/ContextWrapper.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | /** 4 | * Stub 5 | */ 6 | public class ContextWrapper extends Context { 7 | 8 | private Context mBase; 9 | 10 | public ContextWrapper(Context base) { 11 | mBase = base; 12 | } 13 | 14 | protected void attachBaseContext(Context base) { 15 | if (mBase != null) { 16 | throw new IllegalStateException("Base context already set"); 17 | } 18 | mBase = base; 19 | } 20 | 21 | @Override 22 | public Context getApplicationContext() { 23 | return mBase.getApplicationContext(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /RELEASING.md: -------------------------------------------------------------------------------- 1 | Release Process 2 | =============== 3 | 4 | 1. Update the `CHANGELOG.md` file with relevant info and date. 5 | 2. Update version number in `gradle.properties` file. 6 | 3. Update version number in `README.md` file. 7 | 4. Commit: `git commit -am "Prepare version X.Y.Z."` 8 | 5. Tag: `git tag -a X.Y.Z -m "Version X.Y.Z"` 9 | 6. Push: `git push && git push --tags` 10 | 7. Release: `./gradlew clean check assemble uploadArchives` 11 | 8. Update version number in `gradle.properties` file to next "SNAPSHOT" version. 12 | 9. Commit: `git commit -am "Prepare next development version."` 13 | 10. Push: `git push` 14 | 11. Write a script for steps 2 - 11. *(Optional)* 15 | -------------------------------------------------------------------------------- /example/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 |