Android実践プログラミング 現場で生まれた設計パターン
|
|
|
- ゆたか のあき
- 9 years ago
- Views:
Transcription
1 Android TechBooster TechBooster 1
2 Android Android Android 15 Gradle Docker TechBooster TechBooster Android *1 * 1 TechBooster Web 1
3 TechBooster Activity static OnClickListener Handler try-catch Exception Thread killprocess static AsyncTask Preference edit Application Service OutOfMemoryError Application xml View synchronized new
4 2 Android Google portrait minsdkversion DialogFragment PreferenceActivity ContentProvider UCD PlayStore UCD UCD Android Gradle applicationid minsdkversion build.gradle targetsdkversion build.gradle versioncode apk Product Flavor Build Type Build Type applicationid
5 ProGuard apk apk RenderScript Support Library ABI apk density apk / Build Type AndroidManifest BuildConfig Android Wear lint assets jni.so NDK *.c *.cpp / apk IDE Gradle ProGuard Docker
6 6.2 VM Docker Docker VM Docker Docker Docker Docker
7 1 Android View Handler Android 1.1 Activity static Android Activity Intent static : UserModel.java public class UserModel implements Serializable { public enum Role { PROGRAMMER, DESIGNNER, MANAGER private long id; private String username; private Role role; 6
8 1 /* Getter Setter */ 1.2 FirstDameActivity 1.3 SecondDameActivity 1.2: FirstDameActivity.java public class FirstDameActivity extends Activity implements View.OnClickListener { private UserModel musermodel; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); findviewbyid(r.id.button1).setonclicklistener(this); // musermodel /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { // SecondDameActivity.sUserModel = musermodel; Intent intent = new Intent(this, SecondDameActivity.class); startactivity(intent); 1.3: SecondDameActivity.java public class SecondDameActivity extends Activity { public static UserModel susermodel; private UserModel musermodel; 7
9 1 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // static musermodel = susermodel; 1.2 FirstDameActivity#onClick musermodel SecondDameActivity.sUserModel Android SecondDameActivity.sUserModel susermodel SecondDameActivity susermodel susermodel Android : FirstRefineActivity.java public class FirstRefineActivity extends Activity implements View.OnClickListener { private UserModel musermodel; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); findviewbyid(r.id.button1).setonclicklistener(this); // musermodel /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { Intent intent = new Intent(this, SecondRefineActivity.class); // 8
10 1 intent.putextra(secondrefineactivity.extra_user_model, musermodel); startactivity(intent); 1.5: SecondRefineActivity.java public class SecondRefineActivity extends Activity { public static final String EXTRA_USER_MODEL = "user_model"; private UserModel musermodel; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Intent musermodel = (UserModel) getintent().getserializableextra(extra_user_model); 1.4 Intent#putExtra Intent 1.5 Intent#putExtra Intent Activity 1.2 OnClickListener View OnClickListener OnClickListener 9
11 1 View#setOnClickListener OnClickListener 1.6 Activity#onCreate button1 button2 1.6: ManyOnClickListenerDameActivity.java public class ManyOnClickListenerDameActivity extends Activity { private EditText medittext1; private EditText medittext2; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); // button1 findviewbyid(r.id.button1).setonclicklistener( new View.OnClickListener() { public void onclick(view v) { medittext1.settext("button1 clicked!"); ); // button2 findviewbyid(r.id.button2).setonclicklistener( new View.OnClickListener() { public void onclick(view v) { medittext2.settext("button2 clicked!"); ); medittext1 = (EditText) findviewbyid(r.id.edittext1); medittext2 = (EditText) findviewbyid(r.id.edittext2); 1.6 Activity#onCreate 1. OnClickListener button1 button2 2. OnClickListener 3. OnClickListener 10
12 1 1.6 Activity#onCreate Activity#onCreate Activity 3. oncreate 1.7 OnClickListener Acitivity implements Activity#onClick 1.7: ManyOnClickListenerRefine1Activity.java public class ManyOnClickListenerRefine1Activity extends Activity implements View.OnClickListener { private EditText medittext1; private EditText medittext2; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); // OnClickListener findviewbyid(r.id.button1).setonclicklistener(this); findviewbyid(r.id.button2).setonclicklistener(this); medittext1 = (EditText) findviewbyid(r.id.edittext1); medittext2 = (EditText) findviewbyid(r.id.edittext2); public void onclick(view v) { if (v.getid() == R.id.button1) { medittext1.settext("button1 clicked!"); else if (v.getid() == R.id.button1) { medittext2.settext("button2 clicked!"); 1.7 Activity#onCreate Activity#onCreate View View View 11
13 1 OnClickListener Activity implements : ManyOnClickListenerRefine2Activity.java public class ManyOnClickListenerRefine2Activity extends Activity { private EditText medittext1; private EditText medittext2; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); findviewbyid(r.id.button1).setonclicklistener(monclicklistener); findviewbyid(r.id.button2).setonclicklistener(monclicklistener); medittext1 = (EditText) findviewbyid(r.id.edittext1); medittext2 = (EditText) findviewbyid(r.id.edittext2); private View.OnClickListener monclicklistener = new View.OnClickListener() { public void onclick(view v) { if (v.getid() == R.id.button1) { medittext1.settext("button1 clicked!"); else if (v.getid() == R.id.button1) { medittext2.settext("button2 clicked!"); ; 1.8 OnClickListener Activity implements OnClickListener Activity Activity implements 12
14 1 onclick onclick onclick 1.3 Handler Handler Android Handler 1.9 button1 button2 5000ms edittext1 edittext2 1.9: ManyHandlersDameActivity.java public class ManyHandlersDameActivity extends Activity implements View.OnClickListener { private EditText edittext1; private EditText edittext2; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { // Handler 5000ms new Handler().postDelayed(new Runnable() { public void run() { edittext1.settext("button1 clicked!");, 5000); else if (v.getid() == R.id.button2) { 13
15 1 // Handler 5000ms new Handler().postDelayed(new Runnable() { public void run() { edittext1.settext("button2 clicked!");, 5000); Handler postdelayed 5000ms Runnable Handler 1.10 Handler static 1.10: ManyHandlersRefine1Activity.java public class ManyHandlersRefine1Activity extends Activity implements View.OnClickListener { private EditText edittext1; private EditText edittext2; private static Handler shandler = new Handler(); protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { shandler.postdelayed(new Runnable() { public void run() { edittext1.settext("button1 clicked!");, 5000); else if (v.getid() == R.id.button2) { shandler.postdelayed(new Runnable() { 14
16 1 public void run() { edittext1.settext("button2 clicked!");, 5000); Runnable : ManyHandlersRefine2Activity.java public class ManyHandlersRefine2Activity extends Activity implements View.OnClickListener { private static final int EVENT_BUTTON1_CLICKED = 1; private static final int EVENT_BUTTON2_CLICKED = 2; private static Handler shandler = new Handler() { public void handlemessage(message msg) { super.handlemessage(msg); ManyHandlersRefine2Activity activity = (ManyHandlersRefine2Activity) msg.obj; if (msg.what == EVENT_BUTTON1_CLICKED) { activity.edittext1.settext("button1 clicked!"); else if (msg.what == EVENT_BUTTON2_CLICKED) { activity.edittext2.settext("button2 clicked!"); ; private EditText edittext1; private EditText edittext2; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { // shandler shandler 15
17 1 Message msg = shandler.obtainmessage(event_button1_clicked, this); shandler.sendmessagedelayed(msg, 5000); else if (v.getid() == R.id.button2) { // shandler shandler Message msg = shandler.obtainmessage(event_button2_clicked, this); shandler.sendmessagedelayed(msg, 5000); shandler edittext1 edittext2 shandler Runnable Handler UI 1.4 UI UI button1 edittext Thread taskfinished taskresult UI 1000ms taskfinished true true edittext 1.12: PollingDameActivity.java 16
18 1 public class PollingDameActivity extends Activity implements View.OnClickListener { private int taskresult; // private boolean taskfinished; // private EditText edittext1; private EditText edittext2; private static Handler shandler = new Handler(); protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { taskfinished = false; // new Thread() { public void run() { super.run(); int result = 0; { // for (int i = 0; i <= 100; i++) { result += i; // taskresult = result; taskfinished = true;.start(); Runnable runnable = new Runnable() { public void run() { // if (taskfinished) { edittext1.settext(string.valueof(taskresult)); else { shandler.postdelayed(this, 1000); 17
19 1 ; shandler.postdelayed(runnable, 1000); 1. taskfinished taskresult ms UI 1000ms ms 10ms CPU Thread new : PollingRefine1Activity.java public class PollingRefine1Activity extends Activity implements View.OnClickListener { private EditText edittext1; private EditText edittext2; /** UI Handler */ private static Handler shandler = new Handler(); protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { // new Thread() { 18
20 1 public void run() { super.run(); int result = 0; { // for (int i = 0; i <= 100; i++) { result += i; // UI final int finalresult = result; Runnable runnable = new Runnable() { public void run() { // edittext1 edittext1.settext(string.valueof(finalresult)); ; shandler.post(runnable); // shandler UI // runonuithread(runnable); //.start(); edittext1 shandler UI shandler.post Activity#runOnUiThread UI Android AsyncTask AsyncTask : PollingRefine2Activity.java public class PollingRefine2Activity extends Activity implements View.OnClickListener { private EditText edittext1; private EditText edittext2; 19
21 1 protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { AsyncTask<Void,Void,Integer> task = new AsyncTask<Void, Void, Integer>() { protected Integer doinbackground(void params) { // int result = 0; { // for (int i = 0; i <= 100; i++) { result += i; return result; protected void onpostexecute(integer result) { // UI edittext1.settext(string.valueof(result)); ; task.execute(); AsyncTask doinbackground onpostexecute UI doinbackground onpostexecute UI UI 1.12 taskfinished taskresult UI AsyncTask 20
22 1 1.5 try-catch Exception Java Exception Integer#parseInt String int String NumberFormatException IOException 1.15 EditText 1.15: ExceptionDameActivity.java EditText edittext1 = (EditText) findviewbyid(r.id.edittext1); int intvalue = -1; try { intvalue = Integer.parseInt(editText1.getText().toString()); catch (Exception e) { if (intvalue == -1) { Log.d("Hoge", "Bad input."); // else { // 1. try-catch Exception Exception edittext1 null "-1" intvalue edittext1 null NullPointerException "-1" 21
23 1 1.16: ExceptionRefineActivity.java EditText edittext1 = (EditText) findviewbyid(r.id.edittext1); try { int intvalue = Integer.parseInt(editText1.getText().toString()); // catch (NumberFormatException e) { Log.d("Hoge", "Bad input."); // Android Java Android Java Exception 1.6 Thread killprocess UI AsyncTask Thread kill 1.17 Service#onCreate new start 1.17: KillProcessDameService.java 22
24 1 public class KillProcessDameService extends Service { public IBinder onbind(intent intent) { /* */ public void oncreate() { super.oncreate(); new Thread() { public void run() { super.run(); while(true) { // do some thing.start(); public void ondestroy() { super.ondestroy(); Process.killProcess(Process.myPid()); Service#onDestroy Process#killProcess kill 1. kill 2. JUnit Service#onDestroy JUnit JUnit 3. Process.killProcess 23
25 Service#onCreate Thread Thread#interrupt() 1.18: KillProcessRefine1Service.java public class KillProcessRefine1Service extends Service { private Thread mthread; public IBinder onbind(intent intent) { /* */ public void oncreate() { super.oncreate(); mthread = new Thread() { public void run() { super.run(); while(!thread.currentthread().isinterrupted()) { // do some thing ; mthread.start(); public void ondestroy() { super.ondestroy(); mthread.interrupt(); Thread#interrupt Thread#isInterrupted volatile boolean 1.18 Service#onDestroy 24
26 Thread#join 1.19: KillProcessRefine2Service.java public class KillProcessRefine2Service extends Service { private Thread mthread; /* */ public void ondestroy() { super.ondestroy(); mthread.interrupt(); // ondestroy try { mthread.join(); catch (InterruptedException e) { // Bluetooth ADK 1.7 static Activity Service static Activity Service 1.20 Service HogeThread 25
27 1 static sthread 1.20: StaticFieldDameService.java public class StaticFieldDameService extends Service { private static Thread sthread; static class HogeThread extends Thread { public void run() { super.run(); while(!isinterrupted()) { // public IBinder onbind(intent intent) { /* */ public void oncreate() { super.oncreate(); // sthread = new HogeThread(); sthread.start(); static Service Service HogeThread HogeThread HogeThread oncreate ondestroy static HogeThread : StaticFieldRefineService.java 26
28 1 public class StaticFieldRefineService extends Service { private Thread mthread; static class HogeThread extends Thread { public void run() { super.run(); while(!isinterrupted()) { // public IBinder onbind(intent intent) { /* */ public void oncreate() { super.oncreate(); // mthread = new HogeThread(); mthread.start(); public void ondestroy() { super.ondestroy(); // mthread.interrupt(); mthread = null; Service static static Android Activity Service 27
29 1 1.8 AsyncTask UI AsyncTask AsyncTask 1.22 button medittext1 button medittext : ManyAsyncTaskDameActivity.java public class ManyAsyncTaskDameActivity extends Activity implements View.OnClickListener { private EditText medittext1; private EditText medittext2; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { AsyncTask<Void,Void,Integer> task = new AsyncTask<Void, Void, Integer>() { protected Integer doinbackground(void params) { int result = 0; { // for (int i = 0; i <= 100; i++) { result += i; return result; 28
30 1 protected void onpostexecute(integer integer) { super.onpostexecute(integer); medittext1.settext(string.valueof(integer)); ; task.execute(); else if (v.getid() == R.id.button2) { AsyncTask<Void,Void,Integer> task = new AsyncTask<Void, Void, Integer>() { protected Integer doinbackground(void params) { int result = 0; { // for (int i = 101; i <= 200; i++) { result += i; return result; protected void onpostexecute(integer integer) { super.onpostexecute(integer); medittext2.settext(string.valueof(integer)); ; task.execute(); 1.22 AsyncTask AsyncTask#doInBackground 1. AsyncTask#doInBackground 2. AsyncTask#onPostExecute EditText AsyncTask#doInBackground 1.23 SumAsyncTask
31 1 AsyncTask#onPostExecute 1.23: ManyAsyncTaskRefine1Activity.java public class ManyAsyncTaskRefine1Activity extends Activity implements View.OnClickListener { private EditText medittext1; private EditText medittext2; static class SumAsyncTask extends AsyncTask<Integer, Void, Integer> { protected Integer doinbackground(integer params) { int result = 0; { // for (int i = params[0]; i <= params[1]; i++) { result += i; return result; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { SumAsyncTask task = new SumAsyncTask() { protected void onpostexecute(integer integer) { super.onpostexecute(integer); medittext1.settext(string.valueof(integer)); ; task.execute(0, 100); else if (v.getid() == R.id.button2) { SumAsyncTask task = new SumAsyncTask() { protected void onpostexecute(integer integer) { super.onpostexecute(integer); medittext2.settext(string.valueof(integer)); ; 30
32 1 task.execute(101, 200); AsyncTask SumAsyncTask 1.24 SumAsyncTask ISumAsyncTaskListener muserdata muserdata Generics 1.24: SumAsyncTask.java public class SumAsyncTask<T> extends AsyncTask<Integer, Void, Integer> { public interface ISumAsyncTaskListener<T> { public void onpreexecutesumasynctask(t userdata); public void oncancelsumasynctask(t userdata); public void onpostexecutesumasynctask(int result, T userdata); private ISumAsyncTaskListener<T> mlistener; private T muserdata; public SumAsyncTask(ISumAsyncTaskListener listener, T userdata) { this.mlistener = listener; this.muserdata = userdata; protected void onpreexecute() { super.onpreexecute(); mlistener.onpreexecutesumasynctask(muserdata); protected Integer doinbackground(integer params) { int result = 0; for (int i=params[0];i<=params[1];i++) { result += i; return result; protected void oncancelled() { 31
33 1 super.oncancelled(); mlistener.oncancelsumasynctask(muserdata); protected void onpostexecute(integer result) { mlistener.onpostexecutesumasynctask(result, muserdata); SumAsyncTask 1.25 SumAsyncTask Generics EditText 1.25: ManyAsyncTaskRefine2Activity.java public class ManyAsyncTaskRefine2Activity extends Activity implements View.OnClickListener, SumAsyncTask.ISumAsyncTaskListener<EditText> { private EditText medittext1; private EditText medittext2; SumAsyncTask<EditText> mtask1; SumAsyncTask<EditText> mtask2; private ProgressDialog mprogressdialog; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { mtask1 = new SumAsyncTask<EditText>(this, medittext1); mtask1.execute(0, 100); else if (v.getid() == R.id.button2) { mtask2 = new SumAsyncTask<EditText>(this, medittext2); mtask2.execute(101, 200); public void onpreexecutesumasynctask(edittext userdata) { mprogressdialog = new ProgressDialog(this); mprogressdialog.show(); 32
34 1 public void oncancelsumasynctask(edittext userdata) { mprogressdialog.dismiss(); mprogressdialog = null; public void onpostexecutesumasynctask(int result, EditText userdata) { userdata.settext(string.valueof(result)); mprogressdialog.dismiss(); mprogressdialog = null; AsyncTask AsyncTask#onPostExecute onpostexecutesumasynctask Generics EditText onpostexecutesumasynctask onpreexecute- SumAsyncTask oncancelsumasynctask SumAsyncTask UI AsyncTask Interface Interface 1.9 Preference edit SharedPreference SharedPreference String Key-Value 33
35 1 1. String 2. ClassCastException 1.26 SharedPreferences Activity#onCreate edittext1 1.26: SharedPreferencesDameActivity.java public class SharedPreferencesDameActivity extends Activity implements View.OnClickListener { private SharedPreferences mpref; private EditText edittext1; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); findviewbyid(r.id.button1).setonclicklistener(this); findviewbyid(r.id.button2).setonclicklistener(this); edittext1 = (EditText) findviewbyid(r.id.edittext1); mpref = PreferenceManager.getDefaultSharedPreferences(this); String lastbutton = mpref.getstring("lastbutton", ""); edittext1.settext(lastbutton); public void onclick(view v) { if (v.getid() == R.id.button1) { mpref.edit().putstring("lastbutton", "button1").apply(); else if (v.getid() == R.id.button2) { mpref.edit() 34
36 1.putString("lastButton", "button2").apply(); SharedPreferences "lastbutton" : SharedPreferencesRefine1Activity.java public class SharedPreferencesRefine1Activity extends Activity implements View.OnClickListener { private SharedPreferences mpref; private EditText edittext1; private String KEY_LAST_BUTTON = "lastbutton"; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); findviewbyid(r.id.button1).setonclicklistener(this); findviewbyid(r.id.button2).setonclicklistener(this); edittext1 = (EditText) findviewbyid(r.id.edittext1); mpref = PreferenceManager.getDefaultSharedPreferences(this); String lastbutton = mpref.getstring(key_last_button, ""); edittext1.settext(lastbutton); public void onclick(view v) { if (v.getid() == R.id.button1) { mpref.edit().putstring(key_last_button, "button1").apply(); else if (v.getid() == R.id.button2) { mpref.edit().putstring(key_last_button, "button2").apply(); 35
37 1 "lastbutton" 1.28 SharedPreferences KEY_LAST_BUTTON private getlastbutton putlastbutton 1.28: MySharedPreferences.java public class MySharedPreferences { private static final String KEY_LAST_BUTTON = "lastbutton"; private SharedPreferences mpref; private SharedPreferences.Editor meditor; public MySharedPreferences(SharedPreferences mpref) { this.mpref = mpref; public MySharedPreferences edit() { meditor = mpref.edit(); return this; public void apply() { meditor.apply(); meditor = null; public String getlastbutton() { return mpref.getstring(key_last_button, ""); public MySharedPreferences putlastbutton(string value) { meditor.putstring(key_last_button, value); return this; 36
38 MySharedPreferences 1.29: SharedPreferencesRefine2Activity.java public class SharedPreferencesRefine2Activity extends Activity implements View.OnClickListener { private MySharedPreferences mpref; private EditText edittext1; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_many_handlers); findviewbyid(r.id.button1).setonclicklistener(this); findviewbyid(r.id.button2).setonclicklistener(this); edittext1 = (EditText) findviewbyid(r.id.edittext1); mpref = new MySharedPreferences( PreferenceManager.getDefaultSharedPreferences(this)); String lastbutton = mpref.getlastbutton(); edittext1.settext(lastbutton); public void onclick(view v) { if (v.getid() == R.id.button1) { mpref.edit().putlastbutton("button1").apply(); else if (v.getid() == R.id.button2) { mpref.edit().putlastbutton("button2").apply(); 37
39 Application Service Android Service Service Activity Application Service 1.30 oncreate Application ondestroy Service hoge 1.30: ResidentDameService.java public class ResidentDameService extends Service { private IResidentDameService.Stub mbinder = new IResidentDameService.Stub() { ; public IBinder onbind(intent intent) { return mbinder; public void oncreate() { super.oncreate(); DameApplication app = (DameApplication) getapplication(); app.setdameservice(this); 38
40 1 public void ondestroy() { super.ondestroy(); DameApplication app = (DameApplication) getapplication(); app.setdameservice(null); public String hoge() { return "hogehoge"; Service hoge Activity : ResidentDameActivity.java public class ResidentDameActivity extends Activity implements View.OnClickListener { private EditText edittext1; protected void oncreate(bundle savedinstancestate) { /* */ public void onclick(view v) { if (v.getid() == R.id.button1) { DameApplication app = (DameApplication) getapplication(); ResidentDameService service = app.getdameservice(); if (service!= null) { edittext1.settext(app.getdameservice().hoge()); Activity ResidentDameService#onCreate Service DameApplication.getDameService() null Activity 39
41 1 Application ServiceConnection oncreate Application ondestroy 1.32: ResidentRefineService.java public class ResidentRefineService extends Service { public class LocalBinder extends IResidentRefineService.Stub { public ResidentRefineService getservice() { return ResidentRefineService.this; private LocalBinder mbinder = new LocalBinder(); public IBinder onbind(intent intent) { return mbinder; public String hoge() { return "hogehoge"; Activity 1.33 ServiceConnection Service bind 1.33: ResidentRefineActivity.java public class ResidentRefineActivity extends Activity implements View.OnClickListener { private EditText edittext1; private ResidentRefineService mservice; ServiceConnection mserviceconnection = new ServiceConnection() { public void onserviceconnected (ComponentName name, IBinder service) { mservice = ((LocalBinder) service).getservice(); 40
42 1 public void onservicedisconnected(componentname name) { mservice = null; ; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); findviewbyid(r.id.button1).setonclicklistener(this); edittext1 = (EditText) findviewbyid(r.id.edittext1); protected void onstart() { super.onstart(); Intent intent = new Intent(this, ResidentRefineService.class); bindservice(intent, mserviceconnection, Context.BIND_AUTO_CREATE); protected void onpause() { super.onpause(); unbindservice(mserviceconnection); public void onclick(view v) { if (v.getid() == R.id.button1) { if (mservice!= null) { edittext1.settext(mservice.hoge()); Activity Service Bind Service Unbind ServiceCon- 41
43 1 nection Service bind/unbind on- Start()/onStop() oncreate()/ondestroy() onpause()/onresume() Activity 1.11 OutOfMemoryError OutOfMemoryError OOM null Android Memory Analyzer( MAT) MAT Eclipse 1.1 Memory Analyzer 42
44 1 Eclipse DDMS Dump HPROF file 1.2 Dump HPROF file byte Activity 16MB byte 1.34: LargeBytesActivity.java public class LargeBytesActivity extends ActionBarActivity { private byte[] mlargebytes = new byte[16 * 1024 * 1024]; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); 16MB byte MAT Dump HPROF file
45 1 1.3 Memory Analyzer
46 1 1.4 Create a histogram 1.5 byte 45
47 1 1.5 Histogram byte 1.6 List objects 46
48 1 1.6 List objects Retained Heap MB byte 47
49 MB byte byte GC Path to GC Roots 48
50 1 1.8 Path to GC Roots MB byte mlargebytes LargeBytesActivity 49
51 1 1.9 OutOfMemoryError MAT GC null null MAT 1.12 Application Application Application 50
52 Application AssetManager PackageManager NullPointerException 1.35: DameBehaviorApplication.java public class DameBehaviorApplication extends Application { public AssetManager getassets() { return null; public PackageManager getpackagemanager() { return null; Google Play Service NullPointerException xml View Android XML 51
53 1 View 1.14 synchronized synchronized Java synchronized Activty Service synchronized synchronized Android Android Activity Service Handler synchronized synchronized Handler 1.15 new Java new 52
54 1 Android( 2.1) 1.16 Android 53
55 2 Android Nexus Android Android NO Q&A Android Android 54
56 2 Android Y.Y 30 Q. Q. M2, M3, Q. ios Android Q Y.Y 10 No. 1 Xperia A SO-04E HD, 4.2.2, 2 Galaxy S4 SC-04E FHD, isai FL LGL WQHD, 4.4, 4 Nexus FHD, 5.0, ART 5 Nexus HD, 5.0, 6 Xperia Z1 SO-01F FHD, Xperia SX SO-05D qhd, Optimus Vu L-06D x768, ARROWS Tab F-02F x1600, Disney Mobile P-05D qhd,
57 2 Android Q. 2.x 2 UI Android minsdkversion 14 Q. 10 Android Q. Optimus Vu T.Y 30 Q. Q Q. 56
58 2 Android T.Y 10 No. 1 LG Nexus Phone 2 ASUS Nexus7(2013) SONY SO-04E Xperia A SONY 4 SHARP SHL21 AQUOS PHONE SERIE SHARP 5 Samsung SC-04E GALAXY S Samsung 6 LG LGL24 isai FL xxxhdpi NEC N-03E 7 Disney Mobile OOM 8 NEC N-05E MEDIAS W SONY NW-F885 Walkman Xiaomi MI-3 GooglePlay Q. 10 Q. GoogleAnalytics Q. 10 Android ICS 10 Q. 10 Nexus10 XperiaTablet 57
59 2 Android M.M 20 Q. Q. F2 M2 Q. WebView ios Android OS Q. 10 Q. Google Samsung SONY OS 2.3.x 2 GalaxyS WebView WebView UserAgent Android 58
60 2 Android M.M 10 No. 1 LG Nexus FHD, 5.0, OS 2 ASUS Nexus HD, 4.3, 3 SONY Xperia A SO-04E HD, 4.2.2, No.1 4 SAMSUNG Galaxy S4 SC-04E FHD, 4.4.2, 5 SHARP AQUOS PHONE ZETA SH-04F FHD, 4.4, 6 URBANO L01 KYY HD, 4.2.2, SD 7 ARROWS X LTE F-05D HD, NEC Disney Mobile N-03E HD, 4.1.2, 9 SAMSUNG Galaxy S SC-02B WVGA, , 2.3 Q OS 1 Q. 59
61 3 Google Google Android 60
62 3 Google portrait Google Supporting Different Screens *1 UI landscape UI 3.1: <activity android:name=".mainactivity" android:configchanges="orientation keyboardhidden" android:label="@string/app_name" android:screenorientation="portrait" > landscape youtube Activity landscape 3.2 minsdkversion Google Supporting Different Platform Versions *2 * 3 Android Android 1.6 minsdkversion="4" HT-03A Nexus 9 minsdkversion * 1 Supporting Different Screens html * 2 Supporting Different Platform Versions platforms.html * 3 Android G 61
63 3 Google 7 % Android % Android Devlopers Dashboards * Froyo 0.5%, Gingerbread 9.1% minsdkversion="15" ICS Android % 2 Wikipedia: Android *5 1st rd Android * 4 Android Developers DashBoards * 5 Wikipedia: Android B8%80%E8%A6%A7 62
64 3 Google minsdkversion Android Play External Display/Miracast Native RTL Android Wear BLE Centeral Immersive NFC HCE BLE Peripheral Android Wear BLE Bluetooth Low Energy Native RTL Immersive Gingerbread Android Project Butter UI 4.2 1st Play Google Play Google Play Google Google Play Google Play Google / Google Play Google Play 63
65 3 Google 7 Play *6 Android Android Play Google Android 3.3 DialogFragment Google BACK Dialog Dialogs *7 Android 3.x Fragment Fragment DialogFragment Android Dialog DialogFragment Fragment 1 DialogFragment Fragment Fragment DialogFramgent DialogFragment Activity static inner class Master of Fragment *8 Dialog 2 DialogFragment BACK HOME * 6 Play * 7 Dialogs * 8 Master of Fragment 64
66 3 Google 7 DialogFragment AlertDialog.Builder Dialog Dialog#show DialogInterface.OnClickListener#onClick Activity DialogFragment 3 DialogFragment UI View ActionBarActivity#setSupportProgressBarIndeterminateVisibility GMail Chrome UNDO 3.4 PreferenceActivity Google Android 3.0 Activity PreferenceFragment Settings - UsingPreference Fragments *9 PreferenceActivity Android API Level 1 xml PreferenceActivity Android 3.x Fragment 2 PreferenceFragment deprecated * 9 Settings - Using Preference Fragments Fragment 65
67 3 Google 7 PreferenceFragment Android 2.x Fragment Support Library PreferenceFragment 2.x PreferenceActivity 3.x PreferenceActivity PreferenceFragment PreferenceActivity deprecated Android 2.x minsdkversion 15 PreferenceActivity PreferenceFragment 2 Google
68 3 Google Android Nexus Android 5.0 Nexus 9 2 PreferenceFragment 67
69 3 Google ContentProvider ContentProvider Content Providers *10 ContentProvider ContentProvider SNS SQLiteOpenHelper Cursor ContentProvider URI SQLite ContentProvider ios Core Data O/R Android ActiveAndroid *11 GreenDAO *12 OSS ContentProvider Content Provider * 10 Content Providers * 11 ActiveAndroid * 12 GreenDAO 68
70 3 Google Supporting Tablets and Handsets * freetel Priori *14 6 QHD 2560x1440 Android 7 UI Android 7 Android layout xml UX XML layout_home.xml XML layout_home_tablet.xml Android Support Mulitple Screens * 13 Supporting Tablets and Handsets html * 14 Android HVGA(480x320)
71 3 Google 7 UI 3.7 Google Android Pure Android *15 Don t use ios Google 1 Android * 15 Pure Android 70
72 3 Google Android ios facebook 71
73 3 Google Android ios Twitter WebView ios Android HTML SplitActionBar Google Button n 72
74 3 Google 7 SplitActionBar View 3.8 Google Google XML UI XML AbsoluteLayout TabActivity BACK UI BACK BACK launchmode standard singletop singletask singleinstance *16 Android * 16 73
75 4 UCD PlayStore UX UI UX UI UX UI UX UCD UI/UX UX UserExperience UI UserInterface UX UI UI UX PlayStore AppStore UI/UX Google Apple UI Apple OS 74
76 4 UCD PlayStore 1 UI Google Apple UI UI UX UI UX UI UX UI UX UCD 4.2 UCD UCD HumanCentralDesign HCD UCD UserCenteredDesign HCD UCD UCD UCD UI UX UCD 75
77 4 UCD PlayStore 1 UCD 1999 ISO13407 *1 *2 NPO UCD 1986 D.A. "The Design of Everyday Things" *3 UCD 4.3 UCD 4 UCD UCD UCD * 1 ISO ISO Com/FlowControl.jsp?lang=jp&bunsyoId=ISO %3A2010&dantaiCd=ISO&status=1 * 2 *
78 4 UCD PlayStore KA 77
79 4 UCD PlayStore 1 UX -> -> UCD UCD Photoshop Powerpoint UI Flash NEM 3 78
80 4 UCD PlayStore UCD 4.4 UCD KA 1 79
81 4 UCD PlayStore 1 Google keynote 2014 Google I/O Google Japan DevFest Material Design Google Material Design Keynote keynote Apple Keynote keynotopia *4 Android MaterialDesign PDF PDF Play Store UCD Play Store UI UI UI *
82 4 UCD PlayStore 1 Play Store UCD UCD 81
83 4 UCD PlayStore 1 UCD UCD UCD *5 UCD 6 UI UX UX UCD UX UCD UCD UCD UX UX UCD Play Store Google Analytics UCD UCD Play Store UCD *
84 4 UCD PlayStore 1 83
85 5 Android Gradle Gradle Eclipse Ant / Gradle Gradle Gradle Android 5.1 Android Studio Android Gradle Plugin Android Studio Android Studio build.gradle : build.gradle // Top-level build file where you can add configuration options common buildscript { repositories { 84
86 5 Android Gradle jcenter() dependencies { classpath 'com.android.tools.build:gradle:1.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files allprojects { repositories { jcenter() 5.2: app/build.gradle apply plugin: 'com.android.application' android { compilesdkversion 21 buildtoolsversion "21.1.1" defaultconfig { applicationid "com.example.myapplication" minsdkversion 15 targetsdkversion 21 versioncode 1 versionname "1.0" buildtypes { release { minifyenabled false proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' dependencies { compile filetree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.2' 85
87 5 Android Gradle applicationvariants libraryvariants 5.2 applicationid app/build.gradle android.defaultconfig applicationid apk applicationid 5.3: app/build.gradle applicationid apply plugin: 'com.android.application' android { defaultconfig { applicationid "com.example.myapplication" // Product Flavor applicationid Product Flavor Build Type applicationidsuffix applicationidsuffix applicationid applicationid AndroidManifest.xml package applicationid applicationid Play Store 86
88 5 Android Gradle : Id Android R Eclipse Gradle R R R Java Id applicationid R R 5.3 minsdkversion build.gradle app/build.gradle android.defaultconfig minsdkversion apk minsdkversion AndroidManifest.xml app/build.gradle minsdkversion AndroidManifest.xml uses-sdk android:minsdkversion 5.4: app/build.gradle minsdkversion apply plugin: 'com.android.application' android { 87
89 5 Android Gradle defaultconfig { applicationid "com.example.myapplication" minsdkversion 15 // 5.4 targetsdkversion build.gradle 5.3 minsdkversion build.gradle minsdkversion targetsdkversion 5.5: app/build.gradle targetsdkversion apply plugin: 'com.android.application' android { defaultconfig { applicationid "com.example.myapplication" minsdkversion 15 targetsdkversion 21 // 5.5 versioncode build.gradle Groovy versionname versioncode "1.2.3" versionname versioncode versionname multiple apk version- 88
90 5 Android Gradle Code 5.6: app/build.gradle versioncode apply plugin: 'com.android.application' // def computeversioncode() { def versions = android.defaultconfig.versionname.split('\\.') def versioncode = String.format("%d%02d%02d00", versions[0].tointeger(), versions[1].tointeger(), versions[2].tointeger()).tointeger() return versioncode android { defaultconfig { versionname "1.2.3" versioncode computeversioncode() git commit short hash versionname 5.7 short hash githash 5.7: git short hash def githash = 'git rev-parse --short HEAD'.execute().text.trim() 5.6 apk Gradle Android Build Type Product Flavor 2 apk Build Type Product Flavor 89
91 5 Android Gradle Build Variant) apk *1 apk Build Type x Product Flavor *2 Build Type release debug Product Flavor Product Flavor 2 Build Type 1 Product Flavor 2 apk Eclipse Build Type Product Flavor apk applicationid Product Flavor / applicationid Product Flavor applicationid 5.7 Product Flavor Product Flavor Product Flavor applicationid Product Flavor applicationid 5.7 Product Flavor / Product Flavor Build Type debug Build Type Product Flavor Multiple APK Product Flavor * 1 Apk Splits apk * 2 Product Flavor dimension Product Flavor Build Type apk 90
92 5 Android Gradle API Level apk Multiple APK ABI apk 5.15 ABI apk density apk 5.16 density apk Build Type ProGuard jni apk Product Flavor Product Flavor 5.7 Product Flavor Build Type 5.8 Build Type 5.7 Product Flavor Product Flavor Build Type 5.6 apk Product Flavor app/build.gradle android productflavors Product Flavor : app/build.gradle Product Flavor android { defaultconfig { applicationid "com.example.myapplication" minsdkversion 15 targetsdkversion 21 versioncode 1 versionname "1.0" // Product Flavor productflavors { flavor1 { packagename "com.example.myapplication.flavor1" versioncode 20 91
93 5 Android Gradle flavor2 { packagename "com.example.myapplication.flavor2" minsdkversion productflavors flavor1 flavor2 Product Flavor defaultconfig defaultconfig Product Flavor Product Flavor Product Flavor defaultconfig Gradle defaultconfig productflavors.* DSL Product Flavor src main Product Flavor Product Flavor main 5.8 Build Type Build Type Product Flavor 5.6 apk Build Type app/build.gradle android buildtypes Build Type 5.9 buildtypes release debug Build Type 5.9: app/build.gradle Build Type android { // Build Type 92
94 5 Android Gradle buildtypes { release { minifyenabled false proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' jnidebug.initwith(buildtypes.debug) jnidebug { packagenamesuffix ".jnidebug" jnidebuggable true 5.9 buildtypes release jnidebug debug Build Type release initwith Build Type 5.9 jnidebug debug 5.1 debug release multidexenabled 5.10 manifestplaceholders 5.22 Build Type AndroidManifest 5.9 Build Type applicationid Build Type applicationid applicationid release debug debug Build Type applicationid defaultconfig Product Flavor ".debug" 93
95 5 Android Gradle 5.1 Build Type debug release debuggable true false jnidebuggable false false JNI / renderscriptdebuggable false false RS / renderscriptoptimlevel 3 3 RS applicationidsuffix null null Id versionnamesuffix null null signingconfig debug null zipalignenabled false true zipalign minifyenabled false false ProGuard / shrinkresources false false / proguardfile ProGuard proguardfiles ProGuard multidexenabled false false multi-dex / manifestplaceholders null null AndroidManifest app/build.gradle android.buildtypes.* applicationidsuffix null 5.10 applicationid.debug 5.10: Build Type applicationid apply plugin: 'com.android.application' android { buildtypes { debug { // applicationid.debug applicationidsuffix '.debug' 94
96 5 Android Gradle 5.10 Android dex 65k dex *3 dex 5.11 app/build.gradle 5.11: multidex android { defaultconfig { multidexenabled true dependencies { compile 'com.android.support:multidex:1.0.0' 5.11 defaultconfig Product Flavor Build Type AndroidManifest.xml android.support.multidex.multidexapplication Application attachbasecontext(context) android.support.multidex.multidex.install(this); *
97 5 Android Gradle 5.12 android.support.multidex.multidexapplication 5.12: AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.myapplication" > <application android:name="android.support.multidex.multidexapplication"> </application> </manifest> minsdkversion 21 multidex dex ANR ProGuard dex API Level 14 Dalvik linearalloc *4 ProGuard Dalvik linearalloc limit *5 API Level 14 API Level 21 dex * 4 *
98 5 Android Gradle : multidex minsdkversion multidex minsdkversion 21 ART ART dex oat dex minsdkversion 21 Dalvik dex dex dex dex minsdkversion 21 multidex minsdkversion 21 Product Flavor Product Flavor 5.11 ProGuard ProGuard android.buildtypes.* Build Type release 5.13 release ProGuard 5.13: app/build.gradle ProGuard android { buildtypes { release { // ProGuard minifyenabled true proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' 97
99 5 Android Gradle getdefaultproguardfile() Android SDK ProGuard <SDK ROOT>/tools/proguard/ proguard-android.txt proguard-androidoptimize.txt debug Build Type ProGuard release proguardfiles Build Type release debug ProGuard 5.12 apk 1 Google Play Services 5.14 apk 5.14: android { defaultconfig { resconfigs "en", "ja" 98
100 5 Android Gradle 5.13 apk 2 Google Play Services 5.11 ProGuard shrinkresources 5.15 Build Type shrinkresources 5.15: android { buildtypes { release { // ProGuard shrinkresources minifyenabled true shrinkresources true proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' shrinkresources minifyenabled 99
101 5 Android Gradle shrinkresources Gradle --info Strict Safe Safe Safe Resources#getIdentifier() format string 5.16 res/raw/keep.xml Strict apk 5.16: res/raw/keep.xml Strict <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools=" tools:shrinkmode="strict" /> Strict 100
102 5 Android Gradle tools:keep tools:discard : res/raw/keep.xml <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools=" tools:shrinkmode="safe" /> tools:keep apk tools:discard * 5.14 RenderScript Support Library RenderScript Support Library API Level 8 Android 2.2, Froyo RenderScript RenderScript Support Library RenderScript Support Library app/build.gradle android.defaultconfig android.productflavors.* 5.18 defaultconfig 5.18: app/build.gradle RenderScript Support Library android { defaultconfig { // support renderscript 101
103 5 Android Gradle renderscriptsupportmodeenabled true renderscripttargetapi 21 renderscriptoptimlevel 3 renderscriptndkmodeenabled false RenderScript Support Library ProGuard 5.19 app/proguard-rules.pro 5.19: app/proguard-rules.pro # RenderScript Support Library -keep class android.support.v8.renderscript.** { *; ProGuard 5.11 ProGuard 5.15 ABI apk apk splits ABI apk : ABI apk android { splits { abi { enable true reset() include 'x86', 'armeabi-v7a', 'mips' universalapk true 102
104 5 Android Gradle ext.versioncodes = ['armeabi-v7a':1, 'mips':2, 'x86':3] import com.android.build.outputfile android.applicationvariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> def filter = output.getfilter(outputfile.abi) if (filter == null) { // universal apk return output.versioncodeoverride = project.ext.versioncodes.get(filter) * android.defaultconfig.versioncode android.splits.abi apk enable 5.34 IDE IDE reset() include include ABI include ABI ABI include include reset() exclude include universalapk 103
105 5 Android Gradle ABI apk false versioncode Play Store versioncode Google * density apk apk splits density apk : apk android { splits { density { enable true exclude "ldpi", "tvdpi", "xxxhdpi" compatiblescreens 'small', 'normal', 'large', 'xlarge' ext.versioncodes = ['ldpi':1,'mdpi':2, 'tvdpi': 3,'hdpi':4, 'xhdpi':5, 'xxhdpi':6, 'xxxhdpi':7] import com.android.build.outputfile android.applicationvariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> def filter = output.getfilter(outputfile.density) if (filter == null) { // universal apk *
106 5 Android Gradle return output.versioncodeoverride = project.ext.versioncodes.get(filter) * android.defaultconfig.versioncode android.splits.abi apk enable 5.34 IDE IDE reset() include include DENSITY include include include reset() exclude include compatiblescreens screen size apk AndroidManifest.xml <compatible-screens><screen > ABI universal apk universal apk versioncode Play Store versioncode Google *7 *
107 5 Android Gradle ABI Product Flavor versioncode versioncode Build Type versioncode 5.17 / Build Type Product Flavor *Compile Build Type 5.22 debug grid layout 5.22: debug dependencies { //Build Type *Compile debugcompile 'com.android.support:gridlayout-v7:21.0.2' Product Flavor 5.18 Build Type Product Flavor Build Type Product Flavor configurations configuration 5.23 flavor1+debug EventBus 5.23: 106
108 5 Android Gradle android { productflavors { flavor1 { flavor2 { // // configuration configurations { // flavor1, debug ( ) flavor1debugcompile dependencies { // flavor1debug flavor1debugcompile 'de.greenrobot:eventbus:2.4.0' 5.19 Gradle 5.24 google-api-client-android google-api-client-android 5.24: dependencies { 107
109 5 Android Gradle compile('com.google.api-client:google-api-client-android: rc') { exclude module: 'xpp3' exclude module: 'httpclient' exclude module: 'junit' exclude module: 'android' apk 5.20 A B A B git submodule maven AAR *8 Gradle../mylibrary/ library settings.gradle : settings.gradle * 8 108
110 5 Android Gradle include ':app' 5.26: settings.gradle include ':app', ':library' project(':library').projectdir = new File(settingsDir, '../mylibrary/library') :library 1../mylibrary/library new File(settingsDir, " ") settingsdir Gradle settings.gradle Android Studio UI Sync Project with Gradle Files Android Studio build.gradle dependencies compile project( :library ) settings.gradle :library 5.21 dependencies compile project( :library ) debug 109
111 5 Android Gradle build.gradle : app/proguard-rules.pro android { // release/debug defaultpublishconfig "librelease" publishnondefault true productflavors { lib release lib Product Flavor Product Flavor Product Flavor dependencies 5.28 mylibrary 5.28: dependencies { // 110
112 5 Android Gradle debugcompile project(path: ':mylibrary', configuration: 'libdebug') releasecompile project(path: ':mylibrary', configuration: 'librelease') 5.22 Build Type AndroidManifest Google Play Services Maps v2 AndroidManifest.xml Build Type Build Type AndroidManifest.xml Manifest merger AndroidManifest.xml build.gradle buildtypes AndroidManifest.xml build.gradle 5.29 AndroidManifest.xml 5.29: app/build.gradle android { buildtypes { release { manifestplaceholders = [maps2_key: ' API '] debug { manifestplaceholders = [maps2_key: ' API '] 111
113 5 Android Gradle :, groovy map tostring() AndroidManifest.xml build.gradle AndroidManifest.xml ${ 5.30: AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.myapplication" > <application android:allowbackup="true" android:name=".myapplication" > <!-- build.gradle ${ --> <meta-data android:name="com.google.android.maps.v2.api_key" android:value="${maps2_key"/> manifestplaceholders applicationid manifestplaceholders Build Type Product Flavor 112
114 5 Android Gradle 5.23 BuildConfig R BuildConfig : BuildConfig /** * Automatically generated file. DO NOT MODIFY */ package com.example.myapplication; public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean("true"); public static final String APPLICATION_ID = "com.example.myapplication"; public static final String BUILD_TYPE = "debug"; public static final String FLAVOR = ""; public static final int VERSION_CODE = 100; public static final String VERSION_NAME = "1.2.3"; Product Flavor build.gradle git commit short hash : app/build.gradle android { defaultconfig { def githash = 'git rev-parse --short HEAD'.execute().text.trim() buildconfigfield "String", "GIT_HASH", "\"" + githash + "\"" 113
115 5 Android Gradle buildconfigfield 3 FQCN public static final arg1 arg2 = arg3; BuildConfig " 5.32 BuildConfig.java : GIT_HASH BuildConfig /** * Automatically generated file. DO NOT MODIFY */ package com.example.myapplication; public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean("true"); public static final String APPLICATION_ID = "com.example.myapplication"; public static final String BUILD_TYPE = "debug"; public static final String FLAVOR = ""; public static final int VERSION_CODE = 100; public static final String VERSION_NAME = "1.2.3"; // Fields from default config. public static final String GIT_HASH = "8475e49"; buildconfigfield Product Flavor Build Type : buildconfigfield applicationvariants.all { variant -> // variant variant variant.buildconfigfield "int", "VALUE", "1" 114
116 5 Android Gradle 5.24 PC 5.35 gradle.properties local.properties release 5.35: app/build.gradle android { // signingconfig signingconfigs { release buildtypes { release { // release signingconfig // gradle.properties local.properties if (project.hasproperty('storefile')) { signingconfig signingconfigs.release dependencies { 115
117 5 Android Gradle // android.signingconfigs.release if (project.hasproperty('storefile')) { android.signingconfigs.release.storefile = file(storefile) if (project.hasproperty('storepassword')) { android.signingconfigs.release.storepassword = storepassword if (project.hasproperty('keyalias')) { android.signingconfigs.release.keyalias = keyalias if (project.hasproperty('keypassword')) { android.signingconfigs.release.keypassword = keypassword gradle.properties local.properties : storefile=/users/zaki/.android/release.keystore storepassword=hug8urv0ab5yant0 keyalias=app_release keypassword=hug8urv0ab5yant0 storefile storepassword keyalias alias keypassword keyalias app/build/outputs/apk/ apk 116
118 5 Android Gradle 5.25 Maps API API : android { // debug signingconfigs { debug { // ( ) debug.keystore storefile file("../debug.keystore") debug.keystore.android/debug.keystore 5.26 Android Wear Android Studio File New Module 5.1 Android Wear Module Next 117
119 5 Android Gradle 5.1 wear wear settings.gradle include :wear wear apk app/build.gradle dependencies : app/build.gradle dependencies wearapp project(':wear') wearapp Android Wear project() : Gradle 118
120 5 Android Gradle : android.applicationvariants.all { variant -> // println variant.properties android.applicationvariants.each{ each all all 5.28 lint android.lintoptions lint 5.40: lint android { lintoptions { // true quiet true // true lint abortonerror false // true warning ignorewarnings true // true ( true) absolutepaths true // true checkallwarnings true // true 119
121 5 Android Gradle warningsaserrors true // id disable 'TypographyFractions','TypographyQuotes' // id enable 'RtlHardcoded','RtlCompat', 'RtlEnabled' // id check 'NewApi', 'InlinedApi' // true nolines true // true showall true // lint lintconfig file("default-lint.xml") // true textreport true // ('stdou' ) textoutput 'stdout' // true XML xmlreport false // XML ( 'lint-results.xml') xmloutput file("lint-report.xml") // true HTML htmlreport true // HTML ( 'lint-results.html') htmloutput file("lint-report.html") // fatal checkreleasebuilds true // id fatal fatal 'NewApi', 'InlineApi' // id error 'Wakelock', 'TextViewEdits' // id warning 'ResourceAsColor' // id ignore 'TypographyQuotes' 120
122 5 Android Gradle 5.29 assets asset app/build.gradle android aaptoptions apk 5.41: asset android { aaptoptions { // apk ignoreassetspattern "!.svn:!.git:<dir>_*:.*:!cvs:!thumbs.db" ignore pattern 5.42 ignore pattern aapt --ignore-assets 5.42: ignorepattern!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!cvs:!thumbs.db:!picasa.ini:!*~ : :! <dir> <file> 121
123 5 Android Gradle! <dir> <file> * / * 5.30 jni.so.so src/main/jnilibs/ apk jnilibs ABI ABI armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips NDK *.c *.cpp Gradle NDK *.c *.cpp src/main/ jni NDK NDK local.properties ndk.dir
124 5 Android Gradle 5.43: NDK local.properties sdk.dir=/applications/android-sdk ndk.dir=/applications/android-ndk-r10d src/main/jni *.c *.cpp app/build.gradle android defaultconfig ndk Android.mk Application.mk 5.44: ndk android { defaultconfig { // NDK ndk { modulename "native_library" stl "gnustl_shared" // "gnustl_static" abifilters 'all' cflags "-DANDROID_NDK" // ABI //abifilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', // 'x86', 'x86_64', 'mips', 'mips64' ldlibs "log" apk 123
125 5 Android Gradle 5.32 / apache commons *9 apk android packagingoptions 5.45: android { packagingoptions { exclude 'META-INF/NOTICE.txt' pickfirst 'META-INF/LICENSE.txt' 5.45 exclude pickfirst exclude apk apk exclude pickfirst apk apk jar * 9 commons jar META-INF/LICENSE.txt META-INF/NOTICE.txt 124
126 5 Android Gradle 5.33 apk apk *10 Android Studio Android Studio app app-debug.apk apk app-debug.apk apk app/build.gradle 5.46 my_application-v1.2.3-debug.apk release 5.46: apk def toapkfile(originalfile) { def nameprefix = "my_application" def name = originalfile.name.replace(project.name, nameprefix + "-v" + android.defaultconfig.versionname) return new File(originalFile.parentFile, name) android.applicationvariants.all { variant -> // apk splits variant.outputs variant.outputs.each { output -> // output.outputfile = toapkfile(output.outputfile) if (output.packageapplication.outputfile!= output.outputfile) { // zipalign output.packageapplication.outputfile = toapkfile(output.packageapplication.outputfile) * 10 apk app/build/outputs/apk/ 125
127 5 Android Gradle my_application nameprefix 1 apk Android Studio apk 5.34 IDE IDE 5.34 IDE 5.33 apk IDE 5.47 IDE 5.47: IDE // Android Studio -Pandroid.injected.invoked.from.ide=true def isidebuild = project.properties['android.injected.invoked.from.ide'] if (isidebuild == null isidebuild.equalsignorecase("true")) { // IDE else { // IDE 5.35 predex predex predex predex skip 126
128 5 Android Gradle 5.48 build.gradle 5.48: predex skip project.ext { // -PdisablePreDex predexlibs =!project.hasproperty('disablepredex') subprojects { // project.plugins.whenpluginadded { plugin -> if ("com.android.build.gradle.appplugin".equals(plugin.class.name)) { project.android.dexoptions.predexlibraries = rootproject.ext.predexlibs else if ("com.android.build.gradle.libraryplugin".equals(plugin.class.name)) { project.android.dexoptions.predexlibraries = rootproject.ext.predexlibs gradle -PdisablePreDex predex 5.36 Gradle Gradle Gradle Gradle SCM *11 Gradle Gradle Android Studio Android Studio Gradle *12 * 11 Source Code Management * 12 Version Compatibility 127
129 5 Android Gradle Gradle Gradle Android Studio build.properties Gradle Gradle Gradle gradleversion Gradle 5.49: Gradle task wrapper(type: Wrapper) { gradleversion = '2.2.1' Windows $. gradlew.bat wrapper Windows 128
130 5 Android Gradle $./gradlew wrapper gradle Gradle gradle/wrapper/gradle-wrapper.properties Gradle gradle-wrapper.properties : gradle-wrapper.properties #Thu Nov 20 19:00:38 JST 2014 distributionbase=gradle_user_home distributionpath=wrapper/dists zipstorebase=gradle_user_home zipstorepath=wrapper/dists distributionurl=https\://services.gradle.org/distributions/gradle all.zip distributionurl Gradle all bin Gradle bin all distributionurl Gradle Gradle 5.37 ProGuard ProGuard ProGuard mapping.txt mapping.txt 5.51 mapping.txt 129
131 5 Android Gradle 5.51: mapping.txt android.applicationvariants.all { variant -> def mappingfile = variant.mappingfile if (mappingfile!= null) { // PrGuard // ProGuard mappingfile null Gradle Android Google Groups Android Studio android gradle plugin 1.0 Gradle groovy Java Gradle Android Gradle 130
132 6 Docker Docker 6.1 Docker Virtualization Virtual Virtual Virtual Machine VM 1 Machine X Y X VM 1 131
133 6 Docker Docker Docker Docker Docker Docker Docker Docker docker Docker Hub Docker Docker Docker 6.2 VM Docker VM Virtual Machine VM 1 OS OS OS Container based chroot
134 6 Docker VM OS OS *1 Unix OS OS OS VM OS OS Docker init *2 OS Linux Kernel CPU *3 VM *4 root * 1 Docker Linux Kernel com/2014/05/docker-linux-kernel.html * 2 Unix * 3 * 4 Docker docker-linux-containers-lxc-and-security 133
135 6 Docker 6.3 Docker VM OS VM Docker VM IBM *5 Docker VM *6 VM VM 6.4 Docker Docker Docker Wikipedia *7 Docker 14 Docker 3 docker Docker Hub * 5 Wes Felter, Alexandre Ferreira, Ram Rajamony, Juan Rubio "An Updated Performance Comparison of Virtual Machines and Linux Containers" DD819C85257D E7B/$File/rc25482.pdf * 6 Docker *
136 6 Docker Docker OS Vagrant *8 Docker Docker Docker Amazon Google Docker 6.5 Docker Docker Griflet Docker GitHub PDF EPUB *9 Re:VIEW *10 Griflet Re:VIEW OS PDF EPUB OS Re:VIEW * 8 * 9 Griflet PyCon Japan reports/slides/ "Continuous Publication" with Python: Another Approach * 10 Markdown Re:VIEW 135
137 6 Docker Griflet MB GB Docker Griflet Docker OS VM VM 6.6 VM Docker Docker VM VM Docker OS OS Docker Docker Docker Hub 136
138 6 Docker Ubuntu LTS + Redis Ubuntu LTS + Redis + Shibboleth IdP + owncloud + X Server + Zabbix VPS Docker OS VM VM Docker Docker Docker VM OS Docker VM Docker 6.7 Docker Docker 1 *11 * 11 Monolithic Monolith
139 6 Docker 1 VM VM IaaS Infrastructure as a Service IaaS VM root Docker root *12 1 Docker Unix OS Docker OS 1 *
140 6 Docker A/B *13 IP Docker Docker Hub Docker Hub Docker Hub GitHub GitHub git Docker *14 Docker Hub OS 1 * 13 * 14 Macro Micro IT 139
141 6 Docker Ruby RVM Python pyvenv Docker 6.8 HTTP JSON REST RPC Remote Proceduce Call 2 REST API HTTP JavaScript Docker Docker Docker 140
142 6 Docker Docker Docker 6.9 Docker Docker Docker PDF EPUB Docker 30 IP IP 141
143 6 Docker Docker 6.10 GKE Google Cloud Engine ECS Amazon EC2 Container Services GKE Kubernetes GKE ECS VM Docker Docker Kubernetes *15 *16 Kubernetes Master Minion *17 2 Master Minion Docker etcd *18 REST * 15 Google Developer Advocate Google I/O * 16 Kubernetes blob/master/design.md Google Compute Engine * 17 Minion * 18 CoreOS Linux Key-Value Store DB etcd CoreOS 142
144 6 Docker Master Minion Minion Docker Docker Kubernetes Pod Kubelet Minion Agent Label Pod Minion Kubernetes Proxy Minion Proxy TCP Kubernetes Docker Minion Pod Master Master Minion 1 Kubernetes ECS Programmatic Control Task Definitions Scheduler Kubernetes *19 GKE ECS Docker Docker OS Docker Docker OS *
145 6 Docker Docker 6.11 Docker Docker Docker Docker Hub VM Docker Hub Docker Docker Linux Docker Linux Docker Docker VPS EC2 VM Docker MySQL Docker MySQL 144
146 6 Docker MySQL : Amazon Aurora 4 MySQL DB AWS Amazon Web Services Amazon Aurora MySQL Docker Hub Docker 145
147 6 Docker MySQL Kubernetes Docker Hub 6.12 Docker Docker Docker Docker x86_64 Linux ARM 146
148 6 Docker 32bits * Docker Docker Linux Docker Docker *21 Windows Server Docker Hub Windows Server "docker pull" SQL DB OS CentOS Windows Server Kubernetes Docker Hub Docker Docker 1.3 Docker Hub Docker Docker Docker * 20 *
149 6 Docker Docker OS VM Linux Docker Docker Docker Docker Docker 148
150 6 Docker *22 Docker Docker Kernel GPU 6.13 Docker Docker Docker OS * 22 Google Amazon http: //anond.hatelabo.jp/
151 6 Docker for SQL OR KVS Upgrade to Premioum Container! A B C Google *23 *
152 6 Docker 6.14 Docker Docker *24 Android : Docker Docker GKE ECS Kubernetes Docker Machine, Swarm Docker Docker Hub Enterprise, IBM VMWare Rocket Docker * 24 Docker Docker Hub 151
153 MYO IntelliJ IDEA 14 Re:VIEW Re:VIEW 32 / shati / siosio 152
154 Android v1.0.0 TechBooster mhidaka TechBooster (C) 2014 TechBooster 153
Vuzix M100 SDKインストールガイド
Vuzix M100 SDK Vuzix Corporation. 2015-12-24 1 SDK Vuzix M100 SDK Android Studio 1.1 Add-on Vuzix M100 1.1.1 Android Studio Configure SDK Manager SDK Update Sites Name Vuzix M100 SDK URL URL *1 * http://vuzix.com/k79g75yxos/addon.xml
1: Android 2 Android 2.1 Android 4 Activity Android Service ContentProvider BroadcastReceiver Activity ( ): Android 1 Android Service ( ): ContentProv
II Java/Android 1 Android 1.1 Google 2003 Android 2005 Google Android 2007 11 Google T- (T-Mobile International) Open Handset Alliance OHA Android 1.2 OS Android 7.0 API (Application Program Interface)
1: Preference Display 1 package sample. pref ; 2 3 import android. app. Activity ; 4 import android. content. Intent ; 5 import android. content. Shar
Android 2 1 (Activity) (layout strings.xml) XML Activity (Intent manifest) Android Eclipse XML Preference, DataBase, File 3 2 Preference Preference Preference URL:[http://www.aichi-pu.ac.jp/ist/lab/yamamoto/android/android-tutorial/tutorial02/tutorial02.pdf]
「Android Studioではじめる 簡単Androidアプリ開発」正誤表
Android Studio Android 2016/04/19 Android Studio Android *1 Android Studio Android Studio Android Studio Android Studio Android PDF : Android Studio Android Android Studio Android *2 c R TM *1 Android
Android Studio完全移行ガイド
Android Studio 2016/01/04 1 Android Studio Android Studio ADT 1 Android Studio ADT Android Studio Google I/O 2013 Android IDE JetBrains IntelliJ IDEA *1 ADT Android Developer Tools 2007 Android Eclipse
新・明解Java入門
537,... 224,... 224,... 32, 35,... 188, 216, 312 -... 38 -... 38 --... 102 --... 103 -=... 111 -classpath... 379 '... 106, 474!... 57, 97!=... 56 "... 14, 476 %... 38 %=... 111 &... 240, 247 &&... 66,
Microsoft Word - Android_SQLite講座_画面800×1280
Page 5 5 アクティビティ ( 一覧 ) を作成する ファイル名 : src/jp/edu/mie/view010.java ( 新規作成 ) /* * View010 */ import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view;
Java演習(4) -- 変数と型 --
50 20 20 5 (20, 20) O 50 100 150 200 250 300 350 x (reserved 50 100 y 50 20 20 5 (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics; (reserved public class Blocks1 extends
About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android)
Discover Support Library Masahiko Adachi @adamrokcer / +Masahiko.Adachi 28 th Sep, 2013 About me! 足立昌彦 ( @adamrocker / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert
やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF
pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) pref : 2004/6/5 (11:8) 3 5 14 18 21 23 23 24 28 29 29 31 32 34 35 35 36 38 40 44 44 45 46 49 49 50 pref : 2004/6/5 (11:8) 50 51 52 54 55 56 57 58 59 60 61
32 au SCL21 Galaxy SIII Samsung スマートフォン Android 4.0 *17 33 au FJL21 ARROWS ef FUJITSU スマートフォン Android 4.0 34 au SOL21 XPERIA VL SonyEricsson スマートフォン A
NEC Mobile Security Pro 対 応 機 種 一 覧 Android 端 末 2015/2/4 現 在 No キャリア 機 種 名 ブランド 名 メーカー 種 別 OSバージョン 対 応 状 況 1 au IS11CA G'zOne CASIO スマートフォン Android 2.3 2 au IS12F ARROWS ES FUJITSU スマートフォン Android 2.3
Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1
Java (9) 1 Lesson 7 2008-05-20 Java System.out.println() 1 Java API 1 Java Java 1 GUI 2 Java 3 1.1 5 3 1.0 10.0, 1.0, 0.5 5.0, 3.0, 0.3 4.0, 1.0, 0.6 1 2 4 3, ( 2 3 2 1.2 Java (stream) 4 1 a 5 (End of
Microsoft Word - _Intent.doc
public class Intent extends Object implements Parcelable Cloneable 英和 : 意図, 目的 intent が 意図 目的 を意味するように Android ではアプリ ( アクティビティ ) が何をしたいかという 意図 目的 のリクエスト メッセージをシステムに送ると, システムがそれを解釈 判断し, 適切なアクティビティへ渡す仕組みが備わっている
コーディング基準.PDF
Java Java Java Java.java.class 1 private public package import / //////////////////////////////////////////////////////////////////////////////// // // // // ////////////////////////////////////////////////////////////////////////////////
補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.t
補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.toast; public class KeyEventSampleActivity extends Activity
10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV
[email protected] [email protected] http://www.misojiro.t.u-tokyo.ac.jp/ tutimura/sem3/ 2002 12 11 p.1/33 10/16 1. 10/23 2. 10/30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20
授業内容 センサーとは何かおさらい MEMS フレームワークとは何か? を理理解する 演習 センサーのフレームワークを理理解する Androidで使 用できるセンサーの種類 センサーを使ってみる
Android でセンサーを使う 授業内容 センサーとは何かおさらい MEMS フレームワークとは何か? を理理解する 演習 センサーのフレームワークを理理解する Androidで使 用できるセンサーの種類 センサーを使ってみる センサーとは? MEMS MEMS の採 用例例 Android で使 用可能なセンサー p.27 表 - 2 フレームワークとは? 手続き! 決まった 方法! Android
docomo GALAXY S III α SC-03E 4.3 3.17.0 V5.5 R1 U001 8 docomo GALAXY S4 SC-04E 4.4.2 3.17.0 V5.5 R2 docomo GALAXY Note 3 SC-01F 4.4.2 3.17.0 V5.5 R2 d
更 新 日 :2016 年 6 月 6 日 端 末 動 作 環 境 CACHATTO SecureBrowser for Android / CACHATTO Office Viewer / CACAHTTO PDF Reader Android 4.0 以 上 であること Googleアカウントが 登 録 されていること Android 動 作 環 境 root 化 していないこと キャリア/メーカーの
@makoto_anjo (Computer Science) Google Desktop(Hall of Fame)
Google I/O 2011 @makoto_anjo (Computer Science) Google Desktop(Hall of Fame) Google API Expert (Android) Tokyo GTUG Gadget1 IGDA Japan Android NPO Android Android Google I/O Google Google Google I/O
<4D F736F F D20566F F6E658C6791D FE382C582CC4A D834F E F8F4390B394C52E646F63>
[email protected] (Tel: 087-864-2244(FAX )) Vodafone( J-Phone) (J-SA51 090-2829-9999) JavaTM ( Vappli ) SUN ( SUN ) Java2SE(J2SDK1.3.1 Java Standard Edition) Java2MEforCLDC(WTK1.04 Wireless Tool
解きながら学ぶJava入門編
44 // class Negative { System.out.print(""); int n = stdin.nextint(); if (n < 0) System.out.println(""); -10 Ÿ 35 Ÿ 0 n if statement if ( ) if i f ( ) if n < 0 < true false true false boolean literalboolean
untitled
-1- 1. JFace Data Binding JFace Data Binding JFace SWT JFace Data Binding JavaBean JFace Data Binding JavaBean JFace Data Binding 1JFace Data Binding JavaBean JavaBean JavaBean name num JavaBean 2JFace
Microsoft Word - jpluginmanual.doc
TogoDocClient TogoDocClient... i 1.... 1 2. TogoDocClient... 1 2.1.... 1 2.1.1. JDK 5.0... 1 2.1.2. Eclipse... 1 2.1.3.... 1 2.1.4.... 2 2.2.... 3 2.2.1.... 3 2.2.2.... 4 2.3. Eclipse Commands... 5 2.3.1....
. IDE JIVE[1][] Eclipse Java ( 1) Java Platform Debugger Architecture [5] 3. Eclipse GUI JIVE 3.1 Eclipse ( ) 1 JIVE Java [3] IDE c 016 Information Pr
Eclipse 1,a) 1,b) 1,c) ( IDE) IDE Graphical User Interface( GUI) GUI GUI IDE View Eclipse Development of Eclipse Plug-in to present an Object Diagram to Debug Environment Kubota Yoshihiko 1,a) Yamazaki
K227 Java 2
1 K227 Java 2 3 4 5 6 Java 7 class Sample1 { public static void main (String args[]) { System.out.println( Java! ); } } 8 > javac Sample1.java 9 10 > java Sample1 Java 11 12 13 http://java.sun.com/j2se/1.5.0/ja/download.html
Prog2_6th
2017 年 11 月 2 日 ( 木 ) 実施 インテントインテントとは Android アプリは複数のアクティビティを持つことが出来, また, アクティビティ以外の要素も持つので, 複数のアクティビティ間, アクティビティとアクティビティ以外の要素との間といったオブジェクト間を結び付ける仕組みが必要となる その役割を担うのがインテントで, 複数のアプリ間やアプリとシステムとの間もインテントで結び付けることが出来る
intra-mart Accel Platform — イベントナビゲータ 開発ガイド 初版
Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する
moconavi 対応端末表 NTT ドコモ [ スマートフォン (LTE) 版 ] 対応条件 サーバ条件固定 ( 当社接続環境 ) で UI の各機能が利用可能なこと Android4.3 以降対応端末であること コンセプトモデル端末は対応外とします 端末種別 製品名 メーカー OS ver. 対
NTT ドコモ [ スマートフォン (LTE) 版 ] 対応条件 サーバ条件固定 ( 当社接続環境 ) で UI の各機能が利用可能なこと Android4.3 以降対応端末であること コンセプトモデル端末は対応外とします 製品名 メーカー OS ver. 対応状況備考 TAB ARROWS Tab LTE F-01D FUJITSU Android 3.2 非対応 TAB ARROWS Tab LTE
JavaプログラミングⅠ
Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または
端 情 報 docomo らくらくスマー トフォン プレミアム(F- Android 4.2 09E) ARROWS NX F-01F Android 4.2 docomo F-03F Android 4.2 MEDIAS X N-04E Android 4.1 MEDIAS W N-05E And
端 情 報 スマートフォン/タブレット iphone iphone6s NEW ios 9.3 iphone6splus NEW ios 9.3 iphonese NEW ios 9.3 iphone6 ios 8.2 iphone6plus ios 8.2 iphone5s ios 7.0 iphone5c ios 7.0 ipad ipad Air ios 7.1 ipad mini ios 7.1
日 力力 生 行行 入 入 力力 生 用 方
日 力力 生 行行 入 入 力力 生 用 方 力力 生 行行 自 行行 生 力力 生 一 二 力力 生 力力 力力 方 ファイル書き込み Androidプロジェクトの 生成 新規Androidプロジェクトを下記の設定値で作成 項 目名 設定値 プロジェクト名 Sample9 ビルドターゲット Android 2.2にチェックを付 ける アプリケーション名 Sample9 パッケージ名 jp.ac.uot
Web 1 p.2 1 Servlet Servlet Web Web Web Apache Web Servlet JSP Web Apache Tomcat Jetty Apache Tomcat, Jetty Java JDK, Eclipse
Web 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C Java Applet JavaScript Web CGI HTML 1.2 Servlet Java Servlet Servlet CGI Web CGI 1 Java Java
34 LG Disney Mobile DM-01G docomo LG G Flex LGL23 au LG G Pad 8.0 LG-V LG G Pad 8.0 L Edition LGT LG G2 L-01F docomo
モバイルサポート for 動作確認 2016/07/01 No. 1 acer Liquid Z330-5.1 2 acer Liquid Z530-5.1 3 ASUS MeMO Pad 7 ME176C - 5.0 4 ASUS MeMO Pad 7 ME572CL - 5.0 5 ASUS ZenFone 2 ZE551ML - 5.0 6 ASUS ZenFone 2 Laser (A500KL)
2 1 Web Java Android Java 1.2 6) Java Java 7) 6) Java Java (Swing, JavaFX) (JDBC) 7) OS 1.3 Java Java
1 Java Java 1.1 Java 1) 2) 3) Java OS Java 1.3 4) Java Web Start Web / 5) Java C C++ Java JSP(Java Server Pages) 1) OS 2) 3) 4) Java Write Once, Run Anywhere 5) Java Web Java 2 1 Web Java Android Java
II 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C JavaScript Web CGI HTML 1.2 Servlet Java
II 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C JavaScript Web CGI HTML 1.2 Servlet Java Servlet Servlet CGI Web CGI Java Java JVM Java CGI
intra-mart Accel Platform — イベントナビゲータ 開発ガイド 初版 None
クイック検索検索 目次 Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 None 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する
Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac
Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN
Android :
Android : 2018 6 1 Android SB Informatics & IDEA chapter 1 1-1 Android Android 1-2 column 1-3 Windows Mac Android Studio column Android Studio 1-4 Android Studio Android Studio column Instant Run column
class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =
Part2-1-3 Java (*) (*).class Java public static final 1 class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value
Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for
Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for embedded systems that use microcontrollers (MCUs)
非推奨メソッド等の掲載について
非推奨メソッド等の掲載について スマートにプログラミング Android 入門編第 2 版 SDK 4/2.3 対応 (2012 年 6 月 11 日発行第 2 版第 1 刷 ) において 一部現在では非推奨となったレイアウト及びメソッドの利用が掲載されておりました お詫びと共に補足 訂正させて頂きます 下記にその対応について示します 株式会社リックテレコム書籍出版部 ( 情報更新日 :2012.8.14)
ARROWS A 101F ARROWS A 201F ARROWS A 202F ARROWS A 301F ARROWS ef FJL21 ARROWS ES IS12F ARROWS Kiss F-03D ARROWS Kiss F-03E ARROWS Me F-11D ARROWS NX
は上下 1.5mm 手帳よりサイズが大きい Sサイズケース Mサイズケース Lサイズケース 007SH KT 102P ALCATEL ONETOUCH IDOL 2 S ALCATEL ONETOUCH IDOL ULTRA ALCATEL ONETOUCH POP C9 Amazon Fire Phone AQUOS CRYSTAL AQUOS CRYSTAL X AQUOS PAD SH-08E
HARK Designer Documentation 0.5.0 HARK support team 2013 08 13 Contents 1 3 2 5 2.1.......................................... 5 2.2.............................................. 5 2.3 1: HARK Designer.................................
オブジェクト脳のつくり方
2003 12 16 ( ) ML Java,.NET, UML J2EE, Web Java, J2EE.NET SI ex. ) OO OO OO OO OO (Controller) (Promoter) (Analyzer) (Supporter) http://nba.nikkeibp.co.jp/coachsp.html It takes time. OO OK OO 1.
text_10.dvi
C 10 13 6 18 10 Java(5) {, 1 10.1 10 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1 10.2 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
226
226 227 Main ClientThread Request Channel WorkerThread Channel startworkers takerequest requestqueue threadpool WorkerThread channel run Request tostring execute name number ClientThread channel random
Exam : 1z0-809 日本語 (JPN) Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO 1 / 8 Get Latest & Valid 1z0-809-JPN Exam's Question and Answe
Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z0-809 日本語 (JPN) Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO 1 / 8 Get Latest &
ユニット・テストの概要
2004 12 ... 3... 3... 4... 5... 6... 6 JUnit... 6... 7 Apache Cactus... 7 HttpUnit/ServletUnit... 8 utplsql... 8 Clover... 8 Anthill Pro... 9... 10... 10... 10 SQL... 10 Java... 11... 11... 12... 12 setter
JavaプログラミングⅠ
Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または
BlueJ 2.0.1 BlueJ 2.0.x Michael Kölling Mærsk Institute University of Southern Denmark Toin University of Yokohama Alberto Palacios Pawlovsky 17 4 4 3 1 5 1.1 BlueJ.....................................
Bluetooth 対応携帯電話一覧スマートナビゲーション [DJK1 V6 600 / DJK2 V6 600] 2017 年 9 月更新情報 通信事業者名 メーカー 機種 調査時 OS ハンズフリー通話 AVプロファイル対応 NTT Docomo サムスン GALAXY Note 3 SC-01
Bluetooth 対応携帯電話一覧スマートナビゲーション [DJK1 V6 600 / DJK2 V6 600] 2017 年 9 月更新情報 NTT Docomo サムスン GALAXY Note 3 SC-01F 4.3 1 2 4 GALAXY J SC-02F 4.3 1 4 GALAXY S III α SC-03E 4.3 2 4 GALAXY S4 SC-04E 4.3 1 3 4
NTT Docomo AQUOS ケータイ SH-06G AQUOS ZETA SH-01H AQUOS Compact SH-02H Disney Mobile on docomo DM-01H AQUOS Z
Bluetooth 対応携帯電話一覧ケンウッド製ナビゲーション [C9K4 V6 650 / C9K3 V6 650 / A9K3 V6 650 C9K4 V6 650A / C9K3 V6 650A / A9K3 V6 650A C9K4 V6 650B / C9K3 V6 650B / A9K3 V6 650B] 2017 年 9 月更新情報 通信事業者名 メーカー 機種 調査時 OS ハンズフリー通話
HTML Java Tips dp8t-asm/java/tips/ Apache Tomcat Java if else f
1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway InterfaceWeb HTML Web Web CGI CGI CGI Perl C Java Applet JavaScript Web CGI HTML 1.2 Servlet Java Servlet Servlet CGI Web CGI 1 Java / Java Java CGI Servlet
アプレットの作成
- 1 - import java.applet.applet; import java.awt.graphics; public class HelloWorld extends Applet { public void init() { resize(150,60) ; public void paint ( Graphics g ) { g.drawstring("hello, world!",
Oracle Forms Services R6i
Creation Date: Jul 04, 2001 Last Update: Jul 31, 2001 Version: 1.0 0 0... 1 1...3 1.1... 3 1.2... 3 1.3... 3 2...4 2.1 C/S... 4 2.2 WEB... 5 2.3 WEB... 5 2.4 JAVABEAN... 6 3 JAVABEAN...7 3.1... 7 3.2 JDEVELOPER...
{:from => Java, :to => Ruby } Java Ruby KAKUTANI Shintaro; Eiwa System Management, Inc.; a strong Ruby proponent http://kakutani.com http://www.amazon.co.jp/o/asin/4873113202/kakutani-22 http://www.amazon.co.jp/o/asin/477413256x/kakutani-22
ISM CloudOne Ver.6.2i スマートデバイス検証済み機種一覧 更新 :2017 年 12 26 対応状況凡例 : すべての機能が利 可能 : 部機能に制限があります 詳細はISM CloudOneサービス提供事業者までお問い合わせください : 更新箇所 ios 端末検証済み機種一覧 機種名 iosバージョン 確認日 対応状況 iphone3gs 5.0.1 2014/11/20 iphone4
Introduction Purpose This training course describes the configuration and session features of the High-performance Embedded Workshop (HEW), a key tool
Introduction Purpose This training course describes the configuration and session features of the High-performance Embedded Workshop (HEW), a key tool for developing software for embedded systems that
mazec テクニカルガイド第5版(Android版)
法人向け mazec テクニカルガイド 外部アプリケーション連携 ( Android 版 ) 第 6 版 Android は Google Inc. の登録商標です その他記載された会社名 製品名等は 各社の登録商標もしくは商標 または弊社の商標です 本書は株式会社 MetaMoJi が作成したものであり マニュアルの著作権は 株式会社 MetaMoJi に帰属します 本書の内容は予告なく変更することがあります
ESET Mobile Security for Android
ESET MOBILE SECURITY FOR ANDROID ( 3.0 ) 1....3 1.1 1.2...3...3 2....4 2.1 2.2 2.3 2.4 2.5 ESET...4 Web Google...4 Play Am azon...4...4...5 3....6 ESET MOBILE SECURITY ESET, spol. s r.o. ESET Mobile SecurityESET,
