���f�B�A

�l�C�e�B�u�R�[�h�Ƃ̘A�g�ɂ��Android�̋@�\�g���FAndroid�������炷�g�ݍ��݊J���̐V���ȉ”\���i2�j�i1/3 �y�[�W�j

�g�ݍ��݋@��ɁuAndroid�v��K�p����ꍇ�A�l�C�e�B�u�R�[�h�Ƃ̘A�g�͌������Ȃ��B�uAndroid NDK�v�ɂ‚��ĉ������

» 2009�N08��31�� 00��00�� ���J
[���c �K���@������Еx�m�ʃ\�t�g�E�F�A�e�N�m���W�[�Y�C��IT MONOist]

�@�O�񂨓͂������uAndroid���g�ݍ��݂Œ��ڂ����3�‚̗��R�v�ł́A�g�ѓd�b�����̃\�t�g�E�F�A�E�v���b�g�t�H�[���Ƃ��Ē񋟂���Ă���uAndroid�v���A�g�ѓd�b�ȊO�̑g�ݍ��݃f�o�C�X�E�v���b�g�t�H�[���Ƃ��Ē��ڂ���Ă��闝�R�ɂ‚��ĐG�ꂽ�B

�@�������A���Ƃ��ƌg�ѓd�b�����ɍ��ꂽAndroid���A���̂܂܌g�ѓd�b�ȊO�̑g�ݍ��݃f�o�C�X�ɓK�p���邱�Ƃ͓���B���܂��܂ȗp�r����Ӌ@�킪�l������g�ݍ��݃f�o�C�X��Android��K�p����ɂ́A�gAndroid���g���h����K�v������B

�@����ɁuAndroid�̊g���v�Ƃ����Ă��A�uDalvikVM�v��œ��삷��Android�A�v���P�[�V���������Ŏ����ł�����̂ł͂Ȃ��ALinux��̐�p�h���C�o�⃉�C�u�����A�f�[������Android�A�v���P�[�V�������f�[�^�����Ƃ肵�A������Linux��Android�A�v���P�[�V�����Ƃŕ��S�������K�v������B

�@�����ō���́A�l�C�e�B�u�R�[�h�Ƃ̘A�g���T�|�[�g���Ă���uAndroid NDK�iAndroid Native Development Kit�j�v�Ɋ܂܂��T���v���A�v���P�[�V�������g���āAAndroid�Ƀl�C�e�B�u�R�[�h���������A�uJNI�iJava Native Interface�j�i��1�j�v�ɂ��Android�̊g�����@�ɂ‚��ďЉ��B

����1�F
JNI�Ƃ́AJava�̃v���O��������C�^C++����ȂǂŊJ�����ꂽ�l�C�e�B�u�R�[�h�̃v���O�����𗘗p���邽�߂�API�iApplication Program Interface�j�B


Android��g�ݍ��݃f�o�C�X�ɓK�p����ۂɋ��߂������

�@�͂��߂ɁAAndroid���g�ѓd�b�ȊO�̑g�ݍ��݃f�o�C�X�ɓK�p����ۂɋ��߂���v���𐮗����Ă݂悤�B

1�D�@��ŗL�@�\�̎���

�@�O�q�̂Ƃ���A�g�ѓd�b�ȊO�̑g�ݍ��݃f�o�C�X��Android��K�p����ꍇ�A���܂��܂Ȏ��Ӌ@��Ƃ̘A�g�A�‚܂�A�g�ݍ��݃f�o�C�X���Ƃ̌ŗL�@�\����������K�v������B�������������ɂ́ALinux���ɌŗL�̃h���C�o���K�v�ƂȂ�A����Android�A�v���P�[�V�����Ƃ̃f�[�^�̂��Ƃ�⏈���̕��S�Ȃǂ��s���K�v������B�Ȃ��A�����ł���Linux�̃h���C�o�͓��R�AJava�ɂ��L�q�ł͂Ȃ��AC�^C++�ŋL�q���ꂽ���̂��w���B

2�D�J�����Ԃ̒Z�k�Ǝ��Y�̗L�����p

�@Linux�ō\������Ă���g�ݍ��݃f�o�C�X�ɁAAndroid��V���Ɏ������悤�Ƃ����ꍇ�A������Linux���Y�iC�^C++�Ŏ������ꂽ���̂������j��L�����p���A�J�����Ԃ�Z�k�������Ƃ����v�����o�Ă���B�������A�c���Linux���Y�����ׂ�Java�ֈڐA����ƂȂ�ƁA���ԁE�R�X�g�Ȃǔ��ɑ����̃��X�N������邱�ƂɂȂ�B���������v���𖞂����A���ƒ��X�N���������ɂ́A������Linux���Y��Android��Linux���œ��삳���āAAndroid�A�v���P�[�V�����Ƃ��܂��A�g������K�v������B

�������ALinux�‹����ő������p����Ă���C���C�u�����iGNU libc�j�ƁAAndroid�ŗ��p������p���C�u�����uBionic libc�v�Ƃ͌݊������Ȃ����߁A�l�C�e�B�u�R�[�h�ɂ���Ă͈ꕔ�ڐA��Ƃ��K�v�ƂȂ�ꍇ������B�ڂ����͈ȉ���Tips���Q�Ƃ̂��ƁB


��Tips�FBionic libc�Ƃ́H
Bionic libc�Ƃ́AAndroid�̊�{���ƂȂ�Linux���ɔz�u����Ă���C���C�u�����̂��ƁBAndroid�p�ɃJ�X�^�}�C�Y���ꂽ���C�u�����ł���AC���C�u�����ȊO�ɂ�Android��p�̃t�@���N�V�����Ƃ��āAAndroid�̃V�X�e���v���p�e�B���擾����@�\��f�o�b�O���̃��O�o�͋@�\�Ȃǂ��񋟂���Ă���B
�܂��ABionic Libc�̓p�t�H�[�}���X��t�b�g�v�����g�ȂǁA�g�ݍ��݌����ɔz�����ꂽ�`�Œ񋟂���Ă��邽�߁AGNU Libc�Ƃ̌݊����͂Ȃ��B�‚܂�AAndroid�‹��Ŏ��s�����l�C�e�B�u�R�[�h�́A���ׂĂ���Bionic Libc�ŃR���p�C������K�v������B


3�D������

�@Android��œ��삷��A�v���P�[�V�����́A�ʏ�Java�ŋL�q���Ȃ���΂Ȃ�Ȃ����A�摜���Z�����̂悤�ȑ��x�����߂��郍�W�b�N�ɂ‚��ẮAC�^C++�Ŏ������������]�܂����ꍇ������B���̂悤�ȃp�t�H�[�}���X��K�v�Ƃ��鏈���Ȃǂ́AC�^C++�Ŏ������ꂽ������Linux���Y�Ƃ��đ������݂���B

Java�ƃl�C�e�B�u�R�[�h�Ƃ̘A�g�ɗp������JNI�ɂ́A�I�[�o�[�w�b�h�����݂��邽�߁A�Ȃ�ׂ��l�C�e�B�u�R�[�h��Android�A�v���P�[�V�����Ƃ̂��Ƃ�͂Ȃ�ׂ��}���������悢�B


�@�ȏ�A�u�@��ŗL�@�\�̎����v�u�J�����Ԃ̒Z�k�Ǝ��Y�̗L�����p�v�u�������v�̊ϓ_����AAndroid���g�ѓd�b�ȊO�̑g�ݍ��݃f�o�C�X�ɓK�p����ɂ́A�l�C�e�B�u�R�[�h�Ƃ̘A�g���K�{�ł��邱�Ƃ�������B

Android�̊g���|�l�C�e�B�u�R�[�h�Ƃ̘A�g�Ƃ́|

�@Android��Ńl�C�e�B�u�R�[�h�𗘗p����ɂ́AJNI��p����K�v������BJNI���g��Android�ŗL�̎d�g�݂ł͂Ȃ��A��ʓI��Java�̐��E�ōL�����p����Ă���B����JNI�𗘗p���邱�ƂŁAAndroid�A�v���P�[�V�����ł��l�C�e�B�u�R�[�h�Ƃ̘A�g�������ł���i�}1�j�B

JNI̎dg �}1�@JNI�̎d�g��

�@�uAndroid 1.5 NDK�v�T���v���A�v���P�[�V�������ɁAJava�\�[�X�R�[�h��C-Native�\�[�X�R�[�h�Ƃ̊֌W���ȉ��ɋL���i�}2�j�B

JavaC-NativeƂ̊֌W �}2�@Java��C-Native�Ƃ̊֌W

Android NDK�Ƃ́H

�@Android NDK�Ƃ́AJNI���������邽�߂ɕK�v�ȃc�[���̏W���̂ł���BAndroid NDK�ɂ́AC�^C++�ŋL�q���ꂽ�\�[�X�R�[�h����Android�p�̃l�C�e�B�u�R�[�h���C�u�������쐬���邽�߂̊‹��A�l�C�e�B�u�R�[�h���܂ރA�v���P�[�V������z�z������@�A�l�C�e�B�u�̃V�X�e���w�b�_�E���C�u�����ƃh�L�������g�A�T���v���R�[�h���܂܂�Ă���B

�@�O�����Љ�����AAndroid NDK���񋟂��郉�C�u�����͈ȉ��̂Ƃ��肾�B

  • �W��C���C�u�����ilibc�j
  • �W�����l���Z���C�u�����ilibm�j
  • JNI�C���^�[�t�F�C�X
  • zLib���k���C�u�����ilibz�j
  • Kernel�ւ�logcat���b�Z�[�W���M���C�u�����iliblog�j

�@Android NDK���񋟂��郉�C�u�����́AARMv5TE�iARMv5 Thumb Enhance�j�Ɍ��肳��Ă���B���̂��߁A�ق���CPU��JNI�̃C���^�[�t�F�C�X�𗘗p����ꍇ�́A�Ǝ��Ɏ�������K�v������B

�@�@�@�@�@�@ 1|2|3 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; } else { return false; } recoBox.innerHTML = html; return recoBox; }; // �֘A�L�����擾���č�����g������i�����L���j var setRecomend = function(type) { // �L�[���[�h�����Ƃ�html ���擾 var wp = setRecomendItem(); if(!wp){ cx_count(test_id + '_default_imp','impression'); console.log(test_id + '_default_imp','impression'); return false; } // ���X�g��n����html���쐬 var recoBox = wplistHtml(wp,type); // target ���擾 var target; if(d.getElementById('endlinkConnection')){ console.log('�֘A�L��'); target = d.getElementsByClassName('endlink')[0]; } else { console.log('indexlink'); target = d.getElementById('colBoxIndexlink'); } // target �Ƀ��R�����h������ target.parentNode.insertBefore(recoBox, target); cx_count(test_id + '_' + wp.group + '_imp','impression'); console.log(test_id + '_' + wp.group + '_imp','impression'); // a �^�O���擾���� var atags = recoBox.getElementsByTagName('a'); for (var j=0; j 0) { var box_list = d.getElementsByClassName('cmsBodyBox'); for (var i=0; i
' }, { 'src':'' }, {}] }; setForumCornerLink(cornerlink); })();