ionic開(kāi)發(fā)Android App學(xué)習(xí)筆記(一)

簡(jiǎn)介

ionic是一個(gè)強(qiáng)大的混合式/hybrid HTML5移動(dòng)開(kāi)發(fā)框架,特點(diǎn)是使用標(biāo)準(zhǔn)的HTML咙崎、CSS和JavaScript优幸,開(kāi)發(fā)跨平臺(tái)的應(yīng)用。

官網(wǎng):http://ionicframework.com/ 打開(kāi)稍慢褪猛,但是沒(méi)有被墻劈伴。

ionic特點(diǎn):漂亮的界面 追求性能  專(zhuān)注原生 免費(fèi)開(kāi)源

既然是開(kāi)源的,就不得不提一下它的源代碼地址:

ionic的github地址

已經(jīng)有2萬(wàn)個(gè)star握爷。

環(huán)境搭建

  1. 下載 Node.js

    上面的鏈接是Node的官網(wǎng)跛璧,當(dāng)然也可以去中文網(wǎng)站下載,選擇對(duì)應(yīng)的平臺(tái)和版本進(jìn)行下載新啼。

    ps:作者用的是mac電腦追城,也推薦用mac電腦進(jìn)行以后的開(kāi)發(fā)操作,各種命令用起來(lái)比較方便燥撞。

  2. 安裝Node.js

    mac版本的Node.js下載下來(lái)的直接就是一個(gè)dmg的安裝包座柱,一直點(diǎn)下一步就能順利安裝成功迷帜。

    安裝完成后,打開(kāi)終端輸入node -v ,出現(xiàn)版本號(hào)即為安裝成功色洞,如下圖戏锹。

    查看node版本號(hào)
  3. 安裝cordova和ionic

    node安裝成功后,打開(kāi)終端火诸,執(zhí)行 npm install -g cordova ionic 命令锦针,如果出現(xiàn)無(wú)法寫(xiě)入的權(quán)限,則執(zhí)行sudo npm install -g cordova ionic 輸入mac登錄密碼以管理員身份進(jìn)行下載安裝置蜀。該下載過(guò)程可能比較緩慢奈搜,花費(fèi)較長(zhǎng)的時(shí)間。安裝完成后盯荤,分別執(zhí)行ionic -v 和cordova -v出現(xiàn)相應(yīng)的版本號(hào)馋吗,即為安裝成功。

  4. 安裝Android SDK

    下載安裝Android SDK這里不再多說(shuō)

  5. 配置相關(guān)環(huán)境變量

    筆者開(kāi)始是在.bash_profile文件中配置ANDROID_HOME 秋秤,但是在做相關(guān)操作的時(shí)候卻好像沒(méi)有按照這個(gè)配置的路徑去找sdk宏粤,報(bào)找不到相應(yīng)sdk的錯(cuò)誤,所以參考了facebook上React Native的配置灼卢,又在.bashrc中進(jìn)行了相同的配置商架。 如果找不到這2個(gè)文件,可以通過(guò)vi命令創(chuàng)建文件芥玉,然后將相應(yīng)的配置寫(xiě)入保存蛇摸,然后執(zhí)行

    source .bash_profile和source .bashrc 即可。

創(chuàng)建ionic項(xiàng)目

相關(guān)的配置完成后灿巧,打開(kāi)終端赶袄,在相應(yīng)的目錄下執(zhí)行

ionic start myApp tabs

即可創(chuàng)建一個(gè)帶tab頁(yè)的項(xiàng)目,當(dāng)然也可以創(chuàng)建其他風(fēng)格的抠藕,如下

 ionic start myApp blank    創(chuàng)建一個(gè)空白的項(xiàng)目
ionic start myApp sidemenu  創(chuàng)建一個(gè)帶側(cè)滑欄的項(xiàng)目

如下圖即為完整的項(xiàng)目目錄:

目錄結(jié)構(gòu)

編譯項(xiàng)目

進(jìn)入項(xiàng)目目錄饿肺,終端下執(zhí)行

ionic platform add android

然后執(zhí)行

ionic build android

即可進(jìn)行編譯,android采用的是gradle進(jìn)行編譯盾似,第一次可能要去下載gradle敬辣,過(guò)程比較慢,花費(fèi)較長(zhǎng)時(shí)間零院。

等待溉跃,等待,出現(xiàn) BUILD SUCCESSFUL 即為編譯成功告抄。

調(diào)試運(yùn)行

還在當(dāng)前項(xiàng)目目錄下撰茎,執(zhí)行如下命令

ionic emulate android

即可在模擬器上運(yùn)行,如果沒(méi)有模擬器可能會(huì)報(bào)錯(cuò)打洼。

這里重點(diǎn)說(shuō)明以下如何安裝到真機(jī)上龄糊。

需要執(zhí)行如下命令

ionic run --target=56112d22 android

說(shuō)明:等號(hào)后面的是手機(jī)的標(biāo)識(shí)碼逆粹,可以通過(guò)adb devices獲取到,當(dāng)然前提是手機(jī)通過(guò)usb數(shù)據(jù)線(xiàn)連接到電腦上炫惩。

運(yùn)行效果圖如下:

運(yùn)行效果圖

默認(rèn)的情況下僻弹,tab是在上面的,上圖是筆者改過(guò)之后的效果他嚷,如何將tab欄從頂部移到底部呢蹋绽?

參考鏈接:http://bbs.phonegap100.com/thread-1495-1-1.html

上面的鏈接中可能說(shuō)的不是很清楚,筆者是進(jìn)行如下操作的爸舒,找到

myApp/www/js/app.js 文件(ps:myApp是項(xiàng)目名稱(chēng))

打開(kāi)app.js蟋字,找到第24行稿蹲,添加如下代碼

.config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider) {
    $ionicConfigProvider.platform.ios.tabs.style('standard');
    $ionicConfigProvider.platform.ios.tabs.position('bottom');
    $ionicConfigProvider.platform.android.tabs.style('standard');
    $ionicConfigProvider.platform.android.tabs.position('bottom');

    $ionicConfigProvider.platform.ios.navBar.alignTitle('center');
    $ionicConfigProvider.platform.android.navBar.alignTitle('left');

    $ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left');
    $ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back');

    $ionicConfigProvider.platform.ios.views.transition('ios');
    $ionicConfigProvider.platform.android.views.transition('android');
})

貼上改完之后完整的app.js代碼

// Ionic Starter App

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
// 'starter.services' is found in services.js
// 'starter.controllers' is found in controllers.js
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])

    .run(function ($ionicPlatform) {
        $ionicPlatform.ready(function () {
            // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
            // for form inputs)
            if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
                cordova.plugins.Keyboard.disableScroll(true);

            }
            if (window.StatusBar) {
                // org.apache.cordova.statusbar required
                StatusBar.styleLightContent();
            }
        });
    })
    .config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider) {
        $ionicConfigProvider.platform.ios.tabs.style('standard');
        $ionicConfigProvider.platform.ios.tabs.position('bottom');
        $ionicConfigProvider.platform.android.tabs.style('standard');
        $ionicConfigProvider.platform.android.tabs.position('bottom');

        $ionicConfigProvider.platform.ios.navBar.alignTitle('center');
        $ionicConfigProvider.platform.android.navBar.alignTitle('left');

        $ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left');
        $ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back');

        $ionicConfigProvider.platform.ios.views.transition('ios');
        $ionicConfigProvider.platform.android.views.transition('android');
    })
    .config(function ($stateProvider, $urlRouterProvider) {

        // Ionic uses AngularUI Router which uses the concept of states
        // Learn more here: https://github.com/angular-ui/ui-router
        // Set up the various states which the app can be in.
        // Each state's controller can be found in controllers.js
        $stateProvider

            // setup an abstract state for the tabs directive
            .state('tab', {
                url: '/tab',
                abstract: true,
                templateUrl: 'templates/tabs.html'
            })

            // Each tab has its own nav history stack:

            .state('tab.dash', {
                url: '/dash',
                views: {
                    'tab-dash': {
                        templateUrl: 'templates/tab-dash.html',
                        controller: 'DashCtrl'
                    }
                }
            })

            .state('tab.chats', {
                url: '/chats',
                views: {
                    'tab-chats': {
                        templateUrl: 'templates/tab-chats.html',
                        controller: 'ChatsCtrl'
                    }
                }
            })
            .state('tab.chat-detail', {
                url: '/chats/:chatId',
                views: {
                    'tab-chats': {
                        templateUrl: 'templates/chat-detail.html',
                        controller: 'ChatDetailCtrl'
                    }
                }
            })

            .state('tab.account', {
                url: '/account',
                views: {
                    'tab-account': {
                        templateUrl: 'templates/tab-account.html',
                        controller: 'AccountCtrl'
                    }
                }
            });

        // if none of the above states are matched, use this as the fallback
        $urlRouterProvider.otherwise('/tab/dash');

    });

改完之后扭勉,再次運(yùn)行,tab欄就移到了底部苛聘。

至此涂炎,整個(gè)ionic項(xiàng)目從創(chuàng)建到運(yùn)行就都完成了。

WebStorm開(kāi)發(fā)

用webstorm打開(kāi)整個(gè)項(xiàng)目设哗,目錄結(jié)構(gòu)如下:

WebStorm項(xiàng)目目錄結(jié)構(gòu)

添加運(yùn)行的module唱捣,如下圖配置,即可直接在webstorm中運(yùn)行ionic項(xiàng)目网梢,部署到真機(jī)上

module運(yùn)行配置

就醬U痃浴!战虏!

參考鏈接:

http://www.ionic.wang/

http://bbs.phonegap100.com/thread-1495-1-1.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拣宰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子烦感,更是在濱河造成了極大的恐慌巡社,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件手趣,死亡現(xiàn)場(chǎng)離奇詭異晌该,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绿渣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)朝群,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人中符,你說(shuō)我怎么就攤上這事潜圃。” “怎么了舟茶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵谭期,是天一觀(guān)的道長(zhǎng)堵第。 經(jīng)常有香客問(wèn)我,道長(zhǎng)隧出,這世上最難降的妖魔是什么踏志? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮胀瞪,結(jié)果婚禮上针余,老公的妹妹穿的比我還像新娘。我一直安慰自己凄诞,他們只是感情好圆雁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著帆谍,像睡著了一般伪朽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汛蝙,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天烈涮,我揣著相機(jī)與錄音,去河邊找鬼窖剑。 笑死坚洽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的西土。 我是一名探鬼主播讶舰,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼需了!你這毒婦竟也來(lái)了跳昼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤援所,失蹤者是張志新(化名)和其女友劉穎庐舟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體住拭,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挪略,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滔岳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠娱。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谱煤,靈堂內(nèi)的尸體忽然破棺而出摊求,到底是詐尸還是另有隱情,我是刑警寧澤刘离,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布室叉,位于F島的核電站睹栖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茧痕。R本人自食惡果不足惜野来,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踪旷。 院中可真熱鬧曼氛,春花似錦、人聲如沸令野。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)气破。三九已至聊浅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堵幽,已是汗流浹背狗超。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弹澎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朴下,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓苦蒿,卻偏偏與公主長(zhǎng)得像殴胧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佩迟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容