¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

Titanium Mobile ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×(No.37)



Android¿½ÀÁ»þ¥á¥â

  • Titanium Studio¾å¤«¤é¤â[Distribute - Android App Store] - [Keystore Location¤Çnew]¤Ë¤è¤Ã¤Æ¥­¡¼¥¹¥È¥¢¥Õ¥¡¥¤¥ë¤¬ºî¤ì¤ë¤¬¡¢¤³¤ì¤ÇPublish¤¹¤ë¤È¥Ó¥ë¥ÉÅÓÃæ¤ÇÆüÉÕ¥¨¥é¡¼¤È¤Ê¤ë(java.io.IOException: Parse Generalized time, invalid format)¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤ÇÀ¸À®¤¹¤ë¤ÈOK¤Ç¤·¤¿¡£ È÷¹Í¡§¥­¡¼¥¹¥È¥¢¥Õ¥¡¥¤¥ë̾¤Ï¥×¥í¥¸¥§¥¯¥È̾.keystore¡¢Key Alias¤Ï¥×¥í¥¸¥§¥¯¥È̾¤È¤¹¤ì¤ÐOK È÷¹Í¡§Publisher̾¤Ïpapuu.jp¡¢Éô½ð̾¤Ïapps¤È¤·¤¿¡£
  • ¸Å¤¤UI¤ÎGoogle Play Developer Console¾å¤«¤éapk¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤È¤­³«»Ï»þ¤Ë¼ºÇÔ¤·¤Þ¤¹(¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¡Öapk¤ò¥µ¡¼¥Ð¡¼¤Ç½èÍý¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡×)¡£Google Play Developer Console¥µ¥¤¥È±¦¾å¤Î¡Ö¿·¤·¤¤¥Ç¥¶¥¤¥ó¤ò»î¤¹¡×¥Ü¥¿¥ó¤«¤é¿·¤·¤¤¥Ç¥¶¥¤¥ó¤ËÀÚ¤êÂؤ¨¤ë¤ÈOK

Android¥¢¥×¥ê¤Ïapk¥Õ¥¡¥¤¥ë¤òa¥¿¥°¤Îsrc¤Ç»ØÄꤹ¤ì¤Ð¸ø³«¤Ç¤­¤Þ¤¹¡£¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤È¤­¤Ï¼¡¤ÎMIME type¤òÀßÄꤷ¤Þ¤¹¡£
.htaccess

AddType application/vnd.android.package-archive apk

AndroidÈdz«È¯»þ¤ÎÃí°ÕÅÀ(iPhone¥¢¥×¥ê³«È¯¤ò´ð½à¤È¤·¤¿°ã¤¤¡£¼ç¤ËTitanium SDK¤Î¥Ð¡¼¥¸¥ç¥ó 2.1.2GA°Ê¹ß¤Ç»î¤·¤¿¾ðÊó¤Ç¤¹)

  1. ²èÁü¤òÆɤ߹þ¤à¤È¤­'/image/foo.png'¤Î¤è¤¦¤Ë¥¹¥é¥Ã¥·¥å¤«¤é»Ï¤á¤Ê¤¤¤ÈAndroid¤Ç¤Ï¥¨¥é¡¼¤È¤Ê¤ë¡£
  2. touchstart¥¤¥Ù¥ó¥È¤Ê¤É¤Ç¥¹¥¯¥ê¡¼¥óºÂɸ·Ï¤ÎglobalPoint¤ò»ÈÍѤ¹¤ë¤È¥¨¥é¡¼¤È¤Ê¤ë¡£ ... ¸µ¡¹DEPRECATED¤È¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢iPhone¤Ç¤âx/y¤Ç¼èÆÀ¤·¡¢source¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë±þ¤¸¤ÆglobalPoint¤òµá¤á¤¿Êý¤¬Îɤµ¤½¤¦¤Ç¤¹¡£
  3. ImageView¤ÇÇطʲèÁü¤Î¥ê¥Ô¡¼¥È¤ò»ØÄꤷ¤Æ¤â¡¢¥¤¥á¡¼¥¸ÏÈ°ìÇդ˳ÈÂçɽ¼¨¤µ¤ì¤ë¡£ ... WebView¤Ç¤ÏAndroid¤Ç¤â¥ê¥Ô¡¼¥È¤·¤Æ¤¤¤Þ¤·¤¿¡£¤·¤ç¤¦¤¬¤Ê¤¤¤Î¤ÇImageView¤ÇÇطʤòÉߤ­µÍ¤á¤ë¤È¤­¤ÏAndroid¤À¤±Â礭¤á¤ËÉߤ­µÍ¤á¤¿Ê̲èÁü¤òÍÑ°Õ¤·¤Þ¤¹¡£
  4. ImageView¤ÎÃæ¤ËImageView¤Ê¤É¤òÆþ¤ì»Ò¤Ë¤¹¤ë¤È¡¢Æþ¤ì»Ò¤Ë¤·¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É½¼¨¤µ¤ì¤Ê¤¤¡£Android¤Ç¤âÆ°¤¯¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤ÏView¤Ëadd¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤¡£
  5. ¤¢¤ë¥¦¥£¥ó¥É¥¦¤Çadd¤·¤Æ¤¤¤ëview¤ò¡¢¤½¤³¤«¤é³«¤¤¤¿Ê̤Υ¦¥£¥ó¥É¥¦¤Ë¤âadd¤·¤¿¤È¤­¤ÎÆ°ºî¤¬iOS¤ÈAndroid¤Ç°ã¤¦¡£iOS¤Ç¤ÏξÊý¤Î¥¦¥£¥ó¥É¥¦¤Çɽ¼¨¤µ¤ì¤ë¡£Android¤Ç¤Ï³«¤¤¤¿¥¦¥£¥ó¥É¥¦¤Çɽ¼¨¤µ¤ì¤º¡¢Ìá¤Ã¤¿¤È¤­¤Ë¸µ¤Î¥¦¥£¥ó¥É¥¦¤Ç¤â¾Ã¤¨¤Æ¤¤¤ë¡£ºÇ½é¤«¤éview¤Ï£±¤Ä¤Î¥¦¥£¥ó¥É¥¦¤Ë½ê°¤¹¤ë¤Î¤òÁ°Äó¤È¤¹¤ë¤Î¤¬Àß·×¾å¤âÎɤµ¤½¤¦¡£remove¤·¤Æ¤«¤éadd¤¹¤ë¤«¡¢view¤ò¥³¥Ô¡¼¤·¤Æadd¤¹¤ë¤«¤ÇÂбþ¤¹¤ë¡£
  6. iPhone: Label¤Ê¤É¤Çwidth, height¤ò»ØÄꤷ¤Ê¤¤¤È0¤È¤Ê¤ë¡£
    Android: Label¤Ê¤É¤Çwidth, height¤Ïʸ»úÎó¤Ë¹ç¤ï¤»¤ÆÀßÄꤷ¤Æ¤¯¤ì¤ë¡£
  7. iPhone: Label¤Ê¤É¤Ç¾å²¼°ÌÃÖ¤ò»ØÄꤷ¤Ê¤¤¤È¤­¾å´ó¤»¤È¤Ê¤ë¡£
    Android: Label¤Ê¤É¤Ç¾å²¼°ÌÃÖ¤ò»ØÄꤷ¤Ê¤¤¤È¤­¾å²¼Êý¸þ¤ÎÃæ±û´ó¤»¤È¤Ê¤ë¡£
  8. iPhone: TextArea¤Îheight¤òauto¤È¤·¤¿¤È¤­¡¢¹Ô¿ô¤¬ÊѤï¤Ã¤Æ¤â¹â¤µ¤ÏÊѤï¤é¤Ê¤¤¡£
    Android: TextArea¤Îheight¤òauto¤È¤·¤¿¤È¤­¡¢ÆþÎϤ·¤¿¹Ô¿ô¤Ë¤è¤Ã¤Æ¹â¤µ¤¬ÊѤï¤ë¡£
  9. ¥ª¥Ö¥¸¥§¥¯¥È¥×¥í¥Ñ¥Æ¥£¤¬Ì¤ÄêµÁ¤Î¾ì¹ç¤Ë¡¢iPhone¤Ïundefined¡¢Android¤Ïnull¤Ë¤Ê¤ë ... Âкö¡§¡Ö=== undefined¡×¤Ç¤Ê¤¯¡Ö== undefined¡×¤ÇÈæ³Ó¤¹¤ë
  10. ¡ÖcreateWindow({orientationMode:[Ti.UI.PORTRAIT]});¡×¤È¤·¤¿¤È¤­¤ËAndroid¤À¤±½Ä¸ÇÄê¤È¤Ê¤é¤Ê¤¤¡£ ... Âкö¡§¡Övar win = createWindow(); win.orientationMode = [Ti.UI.PORTRAIT];¡×¤È¤¹¤ë
  11. Android: Ti.Network.HTTPClient¤ÈTi.UI.WebView¤Çcookie¤Ï¶¦Í­¤µ¤ì¤Ê¤¤¡£Ti.Network.HTTPClientƱ»Î¤Ç¤â¡¢cookie¤Ï¶¦Í­¤µ¤ì¤Ê¤¤¡£
  12. Android: ScrollView¤Çcreate»þ¤Ë¡ÖshowHorizontalScrollIndicator: true¡×¤È¤·¤Ê¤¤¤È¥¹¥¯¥í¡¼¥ë¤·¤Ê¤¤
  13. Android: evalJS¤ÇÊ£¿ô¹Ô¤Î¼Â¹Ô¤¬¤Ç¤­¤Ê¤¤¡ÊevalJS('a = xx; b = yy';);¡Ë ... Âкö¡§£±¹Ô¤º¤Äɾ²Á¤¹¤ë¡ÊRhino¤Îº¢¤ÎÏäʤΤǡ¢Ä¾¤Ã¤Æ¤¤¤ë¤«¤â¡Ë
  14. Android: WebViewÆâ¤Ç»ÈÍѤ·¤Æ¤¤¤ëjs¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¤òÊѤ¨¤Ê¤¤¤È¡¢Distribute¤¹¤ë¤È¤­¤À¤±apk¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤Ê¤¤¡£
  15. ¡ÖJSON.parse(file.read().text);¡×¤È¤¤¤¦¤è¤¦¤Ë¡Ö.text¡×¤òÆþ¤ì¤Ê¤¤¤È¥Ñ¡¼¥¹¥¨¥é¡¼¤È¤Ê¤ë¡£
  16. 2Îó¥Ô¥Ã¥«¡¼¤Î¥³¡¼¥É¤¬°ã¤¦
    Titanium Android:2ÎóPicker | ¤â¤®¤Ã¤Á¤ã¤¦¤¾¤â¤®»äŪ¥á¥â
  17. Ï¢ÍíÄ¢¡ÊÅÅÏÃÄ¢¡ËÏ¢·È¤Î¥³¡¼¥É¤¬°ã¤¦
    ¥¢¥×¥êÏ¢·È¤ÇIntent¤ò»È¤¦¡£Ä¶Àä´Êñ | ¤â¤®¤Ã¤Á¤ã¤¦¤¾¤â¤®»äŪ¥á¥â
  18. TabÆâWindow¤Îfocus¥¤¥Ù¥ó¥È¤ò¼è¤ì¤Ê¤¤¡¢¥Æ¡¼¥Ö¥ë¤ÇSection¤¬Ìµ¤¤
    Titanium¼ÂÁõ¥Î¥¦¥Ï¥¦¤Î£² | Excite Smartphone Engineer's Blog ... Android¤Ç¼è¤ëÊýË¡¡¢Section¤Ã¤Ý¤¤TableViewRow¤òɽ¼¨¤¹¤ëÊýË¡

    ´ØÏ¢url

Titanium Mobile¼«¿È¤ÎÃí°ÕÅÀ¼ç¤Ë(Titanium SDK¤Î¥Ð¡¼¥¸¥ç¥ó 2.1.2GA°Ê¹ß¤Ç»î¤·¤¿¾ðÊó¤Ç¤¹)

for (x in ÇÛÎó̾)¤Ç¤Î¥Ï¥Þ¥ê¤ËÃí°Õ

Î㤨¤Ðview¤¬Ê£¿ôÆþ¤Ã¤¿ÇÛÎó¤ËÂФ·¤Æ¸Ä¡¹¤Îview¤ò½èÍý¤¹¤ë¤È¤­¡¢¡Öfor (x in ÇÛÎó̾) ¥ë¡¼¥×¡×¤ò»È¤¦¤È¼¡¤Î·Ù¹ð¤¬½Ð¤ÆÀµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¤Ç¤·¤¿¡£

[WARN] Exception in event callback. {
    line = ???;
    message = "'undefined' is not a function (evaluating 'parts.getWidth()')";
    name = TypeError;
    sourceId = ???;
}

JavaScript¤Ç¤ÏÌäÂê¤Ê¤¤¤Î¤ÇTitanium Mobile¼«¿È¤ÎÉÔ¶ñ¹ç¤Î¤è¤¦¤Ç¤¹¡£¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð²óÈò¤Ç¤­¤Þ¤·¤¿¡£

// Titanium Mobile¤ÇÉÔ¶ñ¹ç¤Îµ¯¤­¤¿¥½¡¼¥¹¡£
// ÇÛÎó¤ËÆþ¤Ã¤Æ¤¤¤ë¸Ä¿ôʬ¥ë¡¼¥×¤¹¤ë¤Î¤Ç¤¹¤¬¡¢¼èÆÀ¤·¤¿view¤òUIView¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ»È¤¨¤Þ¤»¤ó¡£
for (var view in viewArray) {
	Ti.API.info('width: ' + view.getWidth());
}
// Titanium Mobile¤ÇÀµ¾ï¤ËÆ°¤¯¥½¡¼¥¹¡£
// ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ÈÍѤ·¤¿for¥ë¡¼¥×¤ËÊѤ¨¤ì¤Ð¼£¤ê¤Þ¤·¤¿¡£
var view;
for (var i = 0; i < viewArray.length; i++) {
	view = viewArray[i];
	Ti.API.info('width: ' + view.getWidth());
}

TIPS

¥¢¥×¥ê̾ÀßÄêÊýË¡

iOS

i18n/ja/app.xml, i18n/en/app.xml¤ÇÀßÄꤷ¤Þ¤¹¡£

<?xml version="1.0" encoding="UTF-8"?>
<resources>
	<string name="appname">iOS ¥¢¥×¥êFoo</string>
</resources>

Android

i18n/ja/strings.xml, i18n/en/strings.xml¤ÇÀßÄꤷ¤Þ¤¹¡£

<?xml version="1.0" encoding="UTF-8"?>
<resources>
	<string name="appname">Android ¥¢¥×¥êFoo</string>
</resources>
  1. Resources¤äbuild¥Õ¥©¥ë¥À¤È²£Ê¤ӤËplatform¥Õ¥©¥ë¥À¤òºîÀ®
  2. platform¥Õ¥©¥ë¥À¤ÎÃæ¤Ëandroid¥Õ¥©¥ë¥À¤òºîÀ®
  3. build/android/AndroidManifest.xml¤òplatform/android/AndroidManifest.xml¤Ë¥³¥Ô¡¼
  4. android:label="¥×¥í¥¸¥§¥¯¥È̾"¤È¤Ê¤Ã¤Æ¤¤¤ë£²²Õ½ê¤òandroid:label="@string/appname"¤ËÊѹ¹

¥·¥ß¥å¥ì¡¼¥¿¤«¤É¤¦¤«È½ÃÇ

 if (Titanium.Platform.model === 'google_sdk' || Titanium.Platform.model === 'Simulator') {
}

iOS¤Î¥Ð¡¼¥¸¥ç¥ó¤Çʬ´ô¤µ¤»¤ëÊýË¡

// ¡Ö4.3.2¡×¤Ê¤É¤È¤¤¤Ã¤¿¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤ò¥Ñ¡¼¥¹
var versionNumber = parseFloat(Ti.Platform.version);
if (versionNumber >= 5) {
	// ¥Ð¡¼¥¸¥ç¥ó£µ°Ê¾å
} else if (versionNumber < 5) {
	// ¥Ð¡¼¥¸¥ç¥ó£µÌ¤Ëþ
} else {
	// ¥¨¥é¡¼½èÍý
}

WebView¤ÇÇطʤòÆ©ÌÀ¤Ë¤¹¤ëÊýË¡

¥Í¥¤¥Æ¥£¥Ö¤ËÈæ¤Ù¤ÆÃÙ¤¤¤è¤¦¤Ç¤¹¡£

// Resources/file/foo.html¤ÎWebView¤òºîÀ®
var fooWebView = Ti.UI.createWebView({
	url: '/fle/foo.html',
	backgroundColor: 0
});

¥×¥í¥°¥é¥à¤òÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤Ëʬ³ä¤¹¤ëÊýË¡

Resources/window1.js

var win = Ti.UI.createWindow({title:'window1'});
var label = Ti.UI.ceateLabel({text:'Say there'});
win.add(label);
exports.window = win;

Resources/app.js

var win1 = require('window1').window;
var tab = Ti.UI.createTab(window:win1);
var tabGroup = Ti.UI.createTabGroup();
tabGroup.addTab(tab);
tabGroup.open();

exports¤ò»È¤Ã¤¿CommonJS¥¹¥¿¥¤¥ë¤Çµ­½Ò¤·¡¢require()¤ÇÆɤ߹þ¤ß¤Þ¤¹¡£exports¤Ç»ØÄꤵ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤À¤±¤¬¸ø³«¤µ¤ì¡¢¤·¤«¤â¤½¤ì¤¬¥µ¥ó¥×¥ë¤ÎÎã¤Çwin1¤ËÊĤ¸¹þ¤á¤é¤ì¤ë¤Î¤¬¥Ý¥¤¥ó¥È¡ª
»²¹Íurl: @IT QA

[1, 2, 3], [101, 2, 1, 10], [2, 1]¤È¤¤¤Ã¤¿3¤Ã¤Ä¤ÎÇÛÎó¤Ç¶¦Ä̤¹¤ëÍ×ÁǤÎÇÛÎó¤ò¼èÆÀ¤¹¤ëÊýË¡

Titanium Mobile¤Ë¸Â¤Ã¤¿ÏäǤϤ¢¤ê¤Þ¤»¤ó¤¬¡¢underscore.js¤È¤¤¤¦¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ¹¤ì¤Ð¡¢´Êñ¤Ëµ­½Ò¤Ç¤­¤Þ¤¹¡£underscore.js¥Õ¥¡¥¤¥ë¤òResouces/vendor/°Ê²¼¤ËÇÛÃÖ¤·¤Æ¡¢

_ = require('vendor/underscore')._
var arrayX = _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);

¶¦Ä̹à¤Î[1, 2]¤ò¼èÆÀ¤Ç¤­¤Þ¤¹¡£ ¾¤Ë¤âÇÛÎóÁàºî¤Ê¤É¤ÎÊØÍø¤Ê½èÍý¤¬Âô»³¤¢¤ê¤Þ¤¹¡£¥é¥¤¥Ö¥é¥ê¤äAPI¤Ïhttp://underscorejs.org/ »²¹Íurl: @IT QA

¥á¡¼¥ë¥À¥¤¥¢¥í¥°É½¼¨

#pre{{
var emailDialog = Titanium.UI.createEmailDialog();
emailDialog.setSubject('Hello from Titanium!');
emailDialog.setToRecipients(['foo@yahoo.com']);
emailDialog.setCcRecipients(['bar@yahoo.com']);
emailDialog.setBccRecipients(['blah@yahoo.com']);

if (Ti.Platform.name == 'iPhone OS') {
emailDialog.setMessageBody('<b>Appcelerator Titanium Rocks!</b>');
emailDialog.setHtml(true);
emailDialog.setBarColor('#336699');
} else {
emailDialog.setMessageBody('Appcelerator Titanium Rocks!');
}

// attach a blob
emailDialog.addAttachment(event.media);

// attach a file
var f = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory, 'cricket.wav');
emailDialog.addAttachment(f);

emailDialog.addEventListener('complete',function(e) {
if (e.result == emailDialog.SENT) {
if (Ti.Platform.osname != 'android') {
// android doesn't give us useful result codes.
// it anyway shows a toast.
alert('message was sent');
}
} else {
alert('message was not sent. result = ' + e.result);
}
});
emailDialog.open();
}}

°úÍѸµurl: http://stackoverflow.com/questions/4407888/sending-email-using-titanium-developer-application

¥µ¥ó¥×¥ë¥½¡¼¥¹

Titaniumµ­»ö

µ»½Ñ¼Ô¥Ö¥í¥°

iOS TIPS¥ê¥ó¥¯

Android TIPS¥ê¥ó¥¯

¥«¥á¥éTIPS¥ê¥ó¥¯

TIPS¥ê¥ó¥¯

¥ê¥ó¥¯