diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 6522ee3..a446cd7 100644
--- a/.idea/caches/build_file_checksums.ser
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1f755b2..73bde58 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,30 +21,6 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
index 66a0711..24d5bad 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleActivity.java
@@ -1,5 +1,7 @@
package org.ntlab.radishforandroidstudio.cactusClient.tests;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
@@ -11,5 +13,12 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
+
+ FragmentManager manager = getSupportFragmentManager();
+ FragmentTransaction transaction = manager.beginTransaction();
+ transaction.add(R.id.fragment_field, new StartFragment());
+ transaction.addToBackStack(null);
+ transaction.commit();
}
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java
new file mode 100644
index 0000000..54f31e0
--- /dev/null
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/SampleUiFragment.java
@@ -0,0 +1,115 @@
+package org.ntlab.radishforandroidstudio.cactusClient.tests;
+
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.ntlab.radishforandroidstudio.R;
+import org.ntlab.radishforandroidstudio.framework.gameMain.OvergroundActor;
+import org.ntlab.radishforandroidstudio.framework.gameMain.RealTime3DFragment;
+import org.ntlab.radishforandroidstudio.framework.model3D.BaseObject3D;
+import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
+import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
+import org.ntlab.radishforandroidstudio.framework.physics.Ground;
+import org.ntlab.radishforandroidstudio.java3d.Appearance;
+import org.ntlab.radishforandroidstudio.java3d.Box;
+import org.ntlab.radishforandroidstudio.java3d.IndexedTriangleArray;
+import org.ntlab.radishforandroidstudio.java3d.Material;
+import org.ntlab.radishforandroidstudio.java3d.Point3d;
+import org.ntlab.radishforandroidstudio.java3d.TextureCubeMap;
+import org.ntlab.radishforandroidstudio.java3d.TextureLoader;
+import org.ntlab.radishforandroidstudio.java3d.Vector3f;
+
+public class SampleUiFragment extends RealTime3DFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // 3Dモデルの作成
+
+ // サイコロの作成
+ Appearance ap1 = new Appearance();
+ Material m = new Material();
+ m.setDiffuseColor(1.0f, 1.0f, 1.0f);
+ ap1.setMaterial(m);
+ TextureCubeMap tex1 = new TextureCubeMap(TextureCubeMap.BASE_LEVEL, TextureCubeMap.RGB, 0);
+ TextureLoader loader = new TextureLoader(getResources(), R.drawable.dice_1, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.POSITIVE_Z, loader.getImage());
+ loader = new TextureLoader(getResources(), R.drawable.dice_6, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.NEGATIVE_Z, loader.getImage());
+ loader = new TextureLoader(getResources(), R.drawable.dice_4, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.POSITIVE_X, loader.getImage());
+ loader = new TextureLoader(getResources(), R.drawable.dice_3, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.NEGATIVE_X, loader.getImage());
+ loader = new TextureLoader(getResources(), R.drawable.dice_5, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.POSITIVE_Y, loader.getImage());
+ loader = new TextureLoader(getResources(), R.drawable.dice_2, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
+ tex1.setImage(0, TextureCubeMap.NEGATIVE_Y, loader.getImage());
+ ap1.setTexture(tex1);
+ Box b1 = new Box(1.0f, 1.0f, 1.0f, ap1);
+ final Object3D obj1 = new Object3D("box", b1);
+ obj1.scale(2.0, 2.0, 2.0);
+ obj1.apply(new Position3D(0.0 , 30.0, 0.0), false);
+ OvergroundActor actor = new OvergroundActor(obj1, null);
+ universe.place(actor);
+
+ // 地面の作成
+ IndexedTriangleArray groundGeometry = new IndexedTriangleArray(4,
+ IndexedTriangleArray.COORDINATES | IndexedTriangleArray.NORMALS, 6);
+ groundGeometry.setCoordinate(0, new Point3d(-20.0, 0.0, -20.0));
+ groundGeometry.setCoordinate(1, new Point3d(20.0, 0.0, -20.0));
+ groundGeometry.setCoordinate(2, new Point3d(20.0, 0.0, 20.0));
+ groundGeometry.setCoordinate(3, new Point3d(-20.0, 0.0, 20.0));
+ groundGeometry.setNormal(0, new Vector3f(0.0f, 1.0f, 0.0f));
+ groundGeometry.setNormal(1, new Vector3f(0.0f, 1.0f, 0.0f));
+ groundGeometry.setNormal(2, new Vector3f(0.0f, 1.0f, 0.0f));
+ groundGeometry.setNormal(3, new Vector3f(0.0f, 1.0f, 0.0f));
+ groundGeometry.setCoordinateIndices(0, new int[]{0, 3, 2});
+ groundGeometry.setCoordinateIndices(3, new int[]{0, 2, 1});
+ Appearance ap2 = new Appearance();
+ Material m2 = new Material();
+ m2.setDiffuseColor(0.5f, 1.0f, 0.2f);
+ ap2.setMaterial(m2);
+ Ground ground = new Ground(new BaseObject3D(groundGeometry, ap2));
+ universe.place(ground);
+
+ // カメラの設定
+ camera.setViewPoint(new Position3D(0.0, 10.0, -20.0));
+ camera.addTarget(actor);
+
+ // フレームの間隔(ms)
+ start(16);
+
+ //onCreateOptionMenuの呼び出し
+ setHasOptionsMenu(true);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ super.onCreateView(inflater, container, savedInstanceState);
+ return inflater.inflate(R.layout.fragment_real_time_3d, container, false);
+ }
+
+ @Override
+ public void onDestroy() {
+
+ super.onDestroy();
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item){
+ int id = item.getItemId();
+
+ if(id == R.id.action_settings){
+ return true;
+
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
index 04cc646..b6668d5 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/tests/StartFragment.java
@@ -31,7 +31,7 @@
public void onClick(View view) {
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
- transaction.replace(R.id.fragment_field,new SampleGame2Fragment());
+ transaction.replace(R.id.fragment_field,new SampleUiFragment());
transaction.addToBackStack(null);
transaction.commit();
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
index 1dd6ff2..10742e2 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTUIFragment.java
@@ -1,6 +1,6 @@
package org.ntlab.radishforandroidstudio.framework.RWT;
-import android.app.Fragment;
+import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTView.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTView.java
index f3b00d1..6037cb1 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTView.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/RWT/RWTView.java
@@ -6,6 +6,11 @@
import android.util.AttributeSet;
import android.view.View;
+/**
+ * ゲームに使用するViewの基底クラス
+ *
+ * @author s.iwatani
+ */
public abstract class RWTView extends View {
private float dp = 1;
private Point size = null;
@@ -60,6 +65,4 @@
public int applyDp(int a) {
return (int)(a * dp);
}
-
-
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java
index 9b4024d..ed41fa9 100644
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java
+++ b/app/src/main/java/org/ntlab/radishforandroidstudio/framework/gameMain/RealTime3DFragment.java
@@ -1,24 +1,27 @@
package org.ntlab.radishforandroidstudio.framework.gameMain;
-
+import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
import android.widget.LinearLayout;
import org.ntlab.radishforandroidstudio.R;
import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
+import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment;
import org.ntlab.radishforandroidstudio.framework.model3D.Universe;
import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D;
-import static android.content.ContentValues.TAG;
-
public class RealTime3DFragment extends RealTimeFragment{
protected Universe universe;
protected Camera3D camera;
protected RWTSurfaceView view;
+ protected View parentView = null;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -27,18 +30,20 @@
camera = new Camera3D(universe);
- view = new RWTSurfaceView(this.getActivity());
- view.setRenderMode(RWTSurfaceView.RENDERMODE_WHEN_DIRTY);
- view.attachCamera(camera);
-
- getActivity().addContentView(view,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+// getActivity().addContentView(view,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ parentView = inflater.inflate(R.layout.fragment_real_time_3d, container, false);
+ initGameWindowView();
return inflater.inflate(R.layout.fragment_real_time_3d, container, false);
}
+ public View getParentView() {
+ return parentView;
+ }
+
@Override
protected void update(long interval) {
progress(interval);
@@ -50,5 +55,23 @@
protected void progress(long interval) {
}
+
+ public void initGameWindowView() {
+ // 画面との関連付け
+ view = new RWTSurfaceView(this.getActivity());
+ view.setRenderMode(RWTSurfaceView.RENDERMODE_WHEN_DIRTY);
+ view.attachCamera(camera);
+ FrameLayout l = parentView.findViewById(R.id.game_layout);
+ l.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
+
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+ Fragment f = new RWTUIFragment();
+
+ View uiLayout = parentView.findViewById(R.id.ui_layout);
+ uiLayout.setOnTouchListener((RWTUIFragment)f);
+ transaction.add(R.id.ui_layout, f);
+ transaction.commit();
+ }
}
diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java
deleted file mode 100644
index 5d943a9..0000000
--- a/app/src/main/java/org/ntlab/radishforandroidstudio/spriteTest/TestActivity.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.ntlab.radishforandroidstudio.spriteTest;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-
-import org.ntlab.radishforandroidstudio.R;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTSprite;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTSurfaceView;
-import org.ntlab.radishforandroidstudio.framework.RWT.RWTUIFragment;
-import org.ntlab.radishforandroidstudio.framework.gameMain.RealTimeActivity;
-import org.ntlab.radishforandroidstudio.framework.listener.PadListener;
-import org.ntlab.radishforandroidstudio.framework.model3D.Object3D;
-import org.ntlab.radishforandroidstudio.framework.model3D.Position3D;
-import org.ntlab.radishforandroidstudio.framework.model3D.Universe;
-import org.ntlab.radishforandroidstudio.framework.physics.AngularVelocity3D;
-import org.ntlab.radishforandroidstudio.framework.physics.Force3D;
-import org.ntlab.radishforandroidstudio.framework.physics.PhysicalSystem;
-import org.ntlab.radishforandroidstudio.framework.physics.Solid3D;
-import org.ntlab.radishforandroidstudio.framework.physics.Velocity3D;
-import org.ntlab.radishforandroidstudio.framework.subject.PadSubject;
-import org.ntlab.radishforandroidstudio.framework.view3D.Camera3D;
-import org.ntlab.radishforandroidstudio.java3d.Appearance;
-import org.ntlab.radishforandroidstudio.java3d.Box;
-import org.ntlab.radishforandroidstudio.java3d.Material;
-import org.ntlab.radishforandroidstudio.java3d.TextureCubeMap;
-import org.ntlab.radishforandroidstudio.java3d.TextureLoader;
-import org.ntlab.radishforandroidstudio.java3d.Transform3D;
-
-public class TestActivity extends RealTimeActivity {
- private PhysicalSystem physicalSystem;
- private Object3D groundObj;
- private Solid3D ground;
- private Transform3D initTrans;
- private Solid3D diceObj;
- private long time = 0;
- private int side = 0;
-
- private RWTSurfaceView view = null;
-
- private RWTSprite[] sprite = new RWTSprite[3];
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- // 3Dモデルの作成
- Universe universe = new Universe();
-
- // サイコロの作成
- Appearance ap1 = new Appearance();
- TextureCubeMap tex1 = new TextureCubeMap(TextureCubeMap.BASE_LEVEL, TextureCubeMap.RGB, 0);
- TextureLoader loader = new TextureLoader(getResources(), R.drawable.dice_1, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.POSITIVE_Z, loader.getImage());
- loader = new TextureLoader(getResources(), R.drawable.dice_6, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.NEGATIVE_Z, loader.getImage());
- loader = new TextureLoader(getResources(), R.drawable.dice_4, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.POSITIVE_X, loader.getImage());
- loader = new TextureLoader(getResources(), R.drawable.dice_3, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.NEGATIVE_X, loader.getImage());
- loader = new TextureLoader(getResources(), R.drawable.dice_5, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.POSITIVE_Y, loader.getImage());
- loader = new TextureLoader(getResources(), R.drawable.dice_2, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP);
- tex1.setImage(0, TextureCubeMap.NEGATIVE_Y, loader.getImage());
- ap1.setTexture(tex1);
- physicalSystem = new PhysicalSystem();
- Box b1 = new Box(1.0f, 1.0f, 1.0f, ap1);
- Object3D obj1 = new Object3D("box", b1);
- obj1.apply(new Position3D(0.0 , 30.0, 0.0), false);
- diceObj = new Solid3D(obj1);
- diceObj.scale(2.0, 2.0, 2.0);
- diceObj.apply(new AngularVelocity3D(-0.4, 0.0, -0.6), false);
- universe.place(diceObj);
- physicalSystem.add(diceObj);
- initTrans = new Transform3D();
- obj1.rot.getTransform(initTrans);
-
- // 地面の作成
- Appearance ap2 = new Appearance();
- Material m = new Material();
- m.setDiffuseColor(1.0f, 1.0f, 1.0f);
- m.setAmbientColor(0.5f, 0.5f, 0.5f);
- m.setSpecularColor(0.0f, 0.0f, 0.0f);
- m.setShininess(1.0f);
- ap2.setMaterial(m);
-
- Box b2 = new Box(1.0f, 1.0f, 1.0f, ap1);
- groundObj = new Object3D("ground", b2);
- groundObj.apply(new Position3D(0.0, -3.0, 0.0), false);
- groundObj.scale(100.0, 3.0, -50.0);
- ground = new Solid3D(groundObj);
- ground.setMass(100000000);
- universe.place(ground);
- physicalSystem.add(ground);
-
- // カメラの作成
- Camera3D camera = new Camera3D(universe);
- camera.setViewPoint(new Position3D(0.0, 30, -30.0));
- camera.addTarget(diceObj);
-
- // 画面との関連付け
- FrameLayout l = findViewById(R.id.game_layout);
- view = new RWTSurfaceView(this);
- view.attachCamera(camera);
- l.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
-
- FragmentManager fragmentManager = getFragmentManager();
- FragmentTransaction transaction = fragmentManager.beginTransaction();
- Fragment f = new RWTUIFragment();
- View uiLayout = (View)findViewById(R.id.ui_layout);
- uiLayout.setOnTouchListener((RWTUIFragment)f);
- transaction.add(R.id.ui_layout, f);
- transaction.commit();
-
- start(10);
- }
-
- @Override
- protected void update(long interval) {
- ground.apply(new Position3D(0.0, -3.0, 0.0), false);
- ground.apply(new Velocity3D(), false);
- groundObj.rot.setTransform(initTrans);
-
- long newTime = System.nanoTime();
- physicalSystem.motion(0, 10, Force3D.ZERO, physicalSystem.objects.get(0).getGravityCenter(), null);
- // Log.v("moji", "" + ((System.nanoTime()-newTime)/1000.0));
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event){
- physicalSystem.objects.get(0).setPosition(new Position3D(0.0 , 30.0, 0.0));
- return true;
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-}
diff --git a/app/src/main/res/layout/activity_sample.xml b/app/src/main/res/layout/activity_sample.xml
index 6883ce2..ac0f24f 100644
--- a/app/src/main/res/layout/activity_sample.xml
+++ b/app/src/main/res/layout/activity_sample.xml
@@ -7,11 +7,10 @@
android:layout_height="match_parent"
tools:context=".cactusClient.tests.SampleActivity">
-
+ app:layout_constraintTop_toTopOf="parent">
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_real_time_3d.xml b/app/src/main/res/layout/fragment_real_time_3d.xml
index bb6264a..99fb49b 100644
--- a/app/src/main/res/layout/fragment_real_time_3d.xml
+++ b/app/src/main/res/layout/fragment_real_time_3d.xml
@@ -7,10 +7,18 @@
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_sample_game.xml b/app/src/main/res/layout/fragment_sample_game.xml
index 03fd74f..5a00b52 100644
--- a/app/src/main/res/layout/fragment_sample_game.xml
+++ b/app/src/main/res/layout/fragment_sample_game.xml
@@ -5,4 +5,5 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".cactusClient.tests.SampleGameFragment">
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 741b9e8..22d7231 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.2'
+ classpath 'com.android.tools.build:gradle:3.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}