ionic+cordova+angularJs
ionic+cordova+angularJs
这里详细介绍下如何用ionic+cordova+angularjs搭建自己的移动端app,包括环境搭建,框架使用等,具体项目已放置在github上,可下载下来自行启动。
下载地址:https://github.com/foreverjiangting/myApp/tree/master/myApp
一:环境搭建
1.配置java的运行环境,包括path变量的路径,这里不再详细讲解,请自行百度。
2.下载Android Studio,并配置path变量,以及sdk路径。这个下载比较麻烦,请自行去官网下载
1
2
|
C:\Program Files (x86)\Android\android-sdk\tools; C:\Program Files (x86)\Android\android-sdk\platform-tools; |
3. 安装node.JS的安装。下载地址:https://nodejs.org/download/
4. 安装ionic 和cordova。请参考官网:http://ionicframework.com/getting-started/
5. 打开cmd,进入命令行,注意是在cmd进入的哦,不是git bash里面进入。
1
|
npm install -g ionic |
安装成功后查看一下版本,继续安装cordova。
1
|
npm install -g cordova |
6. 开始创建ionic项目,输入一下命令。
1
|
ionic start myApp tabs |
进入myApp该项目目录,输入 ionic serve,即可以成功的在浏览器中进行浏览。这个是我自己设计的APP首页页面,启动成功后看到的效果。
7.如何编译并发布应用? 当你已经顺利完成你的应用代码部分的时候,你现在所需要的就是将你的应用打包并且发布了。
第一步:创建一个独一无二的图标。创建好你的图标之后,请以png/psd/AI格式保存在resource/android/icon.png和resource/android/icon.png。
然后使用如下命令,就可以生成不同尺寸的图标。
1
|
$ ionic resources -icon |
第二步:创建启动页面图片。启动画面的源文件至少需要2208px×2208px,创建完成后,保存为
resource/android/splash.png和resource/android/splash.png。
然后使用如下命令就可以生成不同尺寸的启动画面图片:
1
|
$ ionic resources --splash |
看下我创建的启动图片:

第三步:编译Android应用(这里以安卓应用为例)。
1:配置应用的签名。使用如下命令来配置你的签名(keystore)
1
|
$ keytool -genkey -v -keystore my_jt.keystore -alias my_jt -keyalg RSA -keysize 2048 -validity 10000 |
注意:请使用你应用的名字来替代
my_jt这个命令可以生成一个新文件,在本示例中为
my_jt.keystore。 在应用的整个生命周期中将重复使用同一个keystore,请保存好它。
2:使用Cordova编译应用。使用build命令编译一个应用的发布版本:
1
|
$ cordova build --release android |
这个命令会生成一个新的apk文件。此时还未签名。
3:签名应用文件。现在我们要用之前创建的keystore文件来签名生成的未签名版本的应用。使用如下命令来签名:
1
|
$ jarsigner -verbose -sigalg SHALwithRSA -digestalg SHAL -keystore my_jt.keystore unsigned_name.apk my_jt |
注意:这里请使用keystore生成文件名来替换my_jt示例名称,同时用真实的应用文件名替换掉unsigned_name.apk。
这个过程需要一点时间,期间会提示输入keystore的密码。命令会修改apk文件并对其进行签名。
OK,需要的环境都已经配置好了,也可以启动成功,但是以上五个步骤中,不一定都是很顺利的,这里总结一下自己的问题,并给出自己的解决方案。
二:安装遇到的问题
1.进行android 平台配置时候报错。即执行下面命令,这里的命令是指,将本地的APP打包成Hybrid App时的基于安卓平台,进行的编译。
1
|
ionic platform add android |
这里会刚开始安装出问题,显示,android版本过低,解决办法,重新下载一个sdk版本。
2.确保你安装后,ionic的文件一个不少,如上所示,碰到问题,当时安装时候,没有ionic.config.json文件。解决办法,自己新建一个ionic.config.json文件
1
2
3
4
|
{ "name" : "myApp" , "app_id" : "" } |
将以上内容添加进去即可。不过name要换成你自己的项目目录名称。
3. 进行安卓打包时,编译成apk文件,即执行下面命令时碰到问题。
1
|
ionic build android |
由于很多东西是从google下载来了,打包会很慢很慢,(等的花儿都谢了)
三:项目规范问题
这里总结一下导师昨天验收demo时候,指出的几个问题。
1:angularjs书写controller时候,注意要将参数写进数组里面。
看下我的写法是下面这样的:
1
2
3
4
5
6
7
8
9
10
|
.controller( 'PlaylistsCtrl' , function ($scope) { $scope.playlists = [ { title: 'Reggae' , id: 1 }, { title: 'Chill' , id: 2 }, { title: 'Dubstep' , id: 3 }, { title: 'Indie' , id: 4 }, { title: 'Rap' , id: 5 }, { title: 'Cowbell' , id: 6 } ]; }) |
这种写法是有问题的,在进行打包时候,会出问题。正确写法应该是下面这种。将参数和函数写在数组里面。
1
2
3
4
5
6
7
8
9
10
|
.controller( 'PlaylistsCtrl' ,[ '$scope' , function ($scope) { $scope.playlists = [ { title: 'Reggae' , id: 1 }, { title: 'Chill' , id: 2 }, { title: 'Dubstep' , id: 3 }, { title: 'Indie' , id: 4 }, { title: 'Rap' , id: 5 }, { title: 'Cowbell' , id: 6 } ]; }]) |
2. 我在进行书写时候,没有将服务和控制器进行分开,而是混合写的,而且是单页面进行路由转换,导师指出这样是会存在很多问题的,通常当页面很多时候,几百个
甚至几千个时候,单页面加载的速度是相当缓慢的,后期需要进行改进。像我下面这种将控制器和服务混合写是不规范的。
1
2
3
4
5
6
7
8
9
10
|
.controller( 'browseCtrl' , [ '$scope' , '$stateParams' , '$http' , '$ionicScrollDelegate' , '$location' , '$filter' , function ($scope, $stateParams,$http,$ionicScrollDelegate,$location,$filter) { $scope.requestDate = function () { $http.get( "../data/browse.json" ).success( function (data) { console.log( "请求全部的数据" ); console.log(data); $scope.data = data; }); } }]) |
四:总结
从开始零搭建到现在这个APP有一定的模型,从功能,到页面设计,差不多花了四天左右的时间,与后端的联调也能够跑通。么么哒,接下来的两周时间,在保证基本功能前提下,设计
各方面需要继续完善,优化。哈哈,很喜欢这种调调,自己边设计,边做。。。还有好些页面,功能没写,继续。最终完整版APP请看我github里面的更新(暂未完成版)。
这里贴下自己主页和列表页的代码部分:
主页部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
< ion-side-menus enable-menu-with-back-views="false"> < ion-side-menu-content > < ion-nav-bar class="bar-stable"> < ion-nav-back-button > </ ion-nav-back-button > < ion-nav-buttons side="left"> < button class="button button-icon button-clear ion-navicon" menu-toggle="left"> </ button > </ ion-nav-buttons > </ ion-nav-bar > < ion-nav-view name="menuContent"></ ion-nav-view > </ ion-side-menu-content > < ion-side-menu side="left" class="set-side-menu"> < ion-content class="set-background"> < div clas="set-menu-login" style="text-align: center;margin-top: 55px;cursor:pointer;" ng-click="login()"> < div class="set-img-login" style="margin-left: 32%;"> </ div > < p style="margin-top:19px;font-size: 17px;">请登录账号</ p > </ div > < ion-list > < div class="list set-list-menu" style="line-height: 60px;margin-top: 40px;"> < ion-item menu-close href="#/app/personInfo" > < i class="icon ion-person" ></ i > < span class="set-menu-icon"> 个人中心</ span > </ ion-item > < ion-item menu-close href="#/app/playlists"> < i class="icon ion-calendar"></ i >< span class="set-menu-icon">投票首页</ span > </ ion-item > < ion-item menu-close href="#/app/browse"> < i class="icon ion-pinpoint"></ i >< span class="set-menu-icon"> 试题资料</ span > </ ion-item > < ion-item menu-close href="#/app/personCenter"> < i class="icon ion-star"></ i >< span class="set-menu-icon"> 个人收藏</ span > </ ion-item > < ion-item menu-close href="#/app/set"> < i class="icon ion-locked"></ i >< span class="set-menu-icon"> 个人设置</ span > </ ion-item > </ div > </ ion-list > </ ion-content > </ ion-side-menu > </ ion-side-menus > |
列表页部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
< ion-view view-title="问卷列表"> < ion-content on-scroll="scrollFixed(e)" > < div class="set-btn-all" id="set-btn-all"> < button type="button" class="set-all-list l1 " ng-click="requestDate()" id="btn1">全部 </ button > < button type="button" class="set-all-list l2" ng-click=requestComplete() id="btn2">已完成 </ button > < button type="button" class="set-all-list l3" ng-click=requestInComplete() id="btn3">未完成 </ button > < button type="button" class="set-all-list l4" ng-click=requestDoing() id="btn4">进行中 </ button > </ div > < ion-list > < ion-item ng-repeat="value in data" href="#/app/timuList/{{value.id}}"> < div class="item item-avatar"> < img ng-src="{{value.url}}"> < h3 style="color: #999;"> < span > {{value.text}} </ span > </ h3 > < h3 class="set-wenjuan-list" style="color: #ccc;margin-top: 15px;"> 有效期:{{value.timeDate}} < span class="set-tagComplete">{{value.status}}</ span > < span class="set-tagComplete btn-detail">查看详情</ span > </ h3 > </ div > </ ion-item > </ ion-list > < div class="set-tips-message"> < p >已经到底了</ p > </ div > < div class="fs_top_btn" ng-click="scrollTop()"> </ div > </ ion-content > < ion-footer-bar align-title="left" class=""> < div class="tabs tabs-icon-left"> < a class="tab-item" href="#/app/playlists "> < i class="icon ion-home"></ i > 首页 </ a > < a class="tab-item" href="#/app/personCenter"> < i class="icon ion-star"></ i > 收藏 </ a > < a class="tab-item" href="#/app/set"> < i class="icon ion-gear-a"></ i > 我 </ a > </ div > </ ion-footer-bar > </ ion-view > |
主页和列表页已完成,比较头疼的还是设计,感觉总是达不到自己想要的效果,有比较好的想法亲,麻烦给我留言哈!谢谢哒!!!!!!!!!!
作者:婷风
出处:http://www.cnblogs.com/jtjds/p/6056719.html
ionic+cordova+angularJs的更多相关文章
- 基于ionic+cordova+angularJs从零开始搭建自己的移动端H5 APP
这里详细介绍下如何用ionic+cordova+angularjs搭建自己的移动端app,包括环境搭建,框架使用等,具体项目已放置在github上,可下载下来自行启动. 下载地址:https://gi ...
- ionic + cordova+angularJs 搭建的H5 App完整版总结
为期半个月的项目实践开发,已完整告一段落,团队小组获得第一名,辛苦总算没有白费,想起有一天晚上,整个小组的人,联调到12点才从公司回去,真是心酸.这里总结一下,项目过程中遇到的问题 和感悟.哈哈, ...
- ionic+cordova+angularJs监听刷新
普通的js返回并刷新这里就不多说了,百度就有很多方法. 下面说的是使用了angularjs.ionic开发的一个手机app中我使用的返回上一页并刷新的方法. 场景:回复的页面是单独的,点击保存回复后会 ...
- 搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo
目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成Hybrid ...
- Cordova+Angularjs+Ionic 混合开发入门讲解
作为一名学习Android开发的学生,对于移动开发的发展趋势颇为关注,大家都知道,现在原生的移动开发在企业上基本很少使用了,大部分企业为了降低成本,选择了webapp,hybrid(混合开发)这两种模 ...
- ionic cordova plugin 安装和使用
注意事项 ionic1需要ng-cordova plugin的使用都需要放到deviceready事件的回调中, 设备准备好了才能设备交互 plugin只有在真机上才有效果, 模拟器(部分)和brow ...
- androidAndroid开发学习--Ionic+Cordova 环境搭建
我们看 Ionic 能给我们提供什么? 一个样式库,你可以使用它 来 装饰你的 HTML 网页 ,看起来 想 移动程序的 界面,什么 header .content.footer.grid.list ...
- Ionic + Cordova 跨平台移动开发环境配置
1.下载安装JDK(根据各自系统选择32位或64位下载),安装完成之后需要做以下环境变量配置 在“系统变量”中,设置3象属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),如果已经 ...
- npm 安装 ionic cordova
针对npm安装 ionic 和 cordova 过程很慢,且有些安装文件被墙的问题,使用如下方式解决: 1)安装cnpm npm install -g cnpm 2)然后再使用cnpm 安装 ioni ...
随机推荐
- Volume serial number could associate file existence on certain volume
When it comes to lnk file analysis, we should put more emphasis on the volume serial number. It coul ...
- oracle 强杀进程
在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源 ...
- ubuntu12.04 下安装matlab2012
1.下载matlab2012a(例如:****.iso) 2.创建挂载目录 sudo mkdir /media/matlab 3.将当前目录切换到镜像文件的目录,然后将镜像文件挂载到刚刚创建的目录下 ...
- aspx页面与服务器控件间运行原理
一.进入服务器控件以及aspx页面前,必须的准备: a)在WebForm 中只要带有runat="server" 那么那就是一个控件. b)如果form有runat="s ...
- Cassandra 备份 - 1 - 节点镜像恢复
之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...
- spark-submit工具参数说明
执行时需要传入的参数说明 Usage: spark-submit [options] <app jar | python file> [app options] 参数名称 含义 --mas ...
- Java实现抽奖游戏
代码如下: import java.io.*; public class PresentDemo { /** * @param args */ public static void main(Stri ...
- “Unable to resolve target 'android-9'”的问题
SDK版本问题! 如果导入时,eclipse的console中提示信息:“Unable to resolve target 'android-9'” 可能的问题就是你安装的SDK版本高于项目的版本!( ...
- MSSQL 所有表中模糊查询
--搜索指定数据在那个对象中存在.txt(所有表中模糊查询) CREATE PROC sp_ValueSearch @value sql_variant, --要搜索的数据 @precision bi ...
- 批量kill进程
ps -e | grep java |awk '{print $1}'|xargs kill -9