骁骑
骁骑
  • 发布:2016-09-27 15:01
  • 更新:2019-12-18 21:59
  • 阅读:39481

Android创建最精简离线打包工程(老版本SDK,已过期)

分类:5+ SDK

使用新版本SDK请参考文档使用新版本5+SDK创建最简Android原生工程

当前文档已过期,新版集成方式请采用上述链接,当前链接下的留言将不会回复,请注意

本文以Android Studio为例讲解如何一步步创建一个最精简的5+SDK工程,如果还需要在工程中添加更多的扩展插件,可以参考SDK内附带的Feature-Android.xls文件,文件中有扩展插件和需要添加的配置

1 创建Android原生工程

首先创建一个空的Android Studio工程
打开AndroidStudio点击File->New->New Project

然后一路点击“next”到下面这个页面点击“finish”即可

2 添加5+SDK需要使用的jar包到工程

原生工程中使用5+SDK必须要在工程中添加如下几个jar 需要加入到工程里的Jar 包
mysonic.jar
pdr.jar
my-imageloader.jar
my-nineoldandroids-2.4.0.jar
ui.jar

1. 从SDK/libs目录下找到这几个文件并拷贝到工程的libs目录下

2. 添加成功后选中libs目录里的库文件,鼠标右键打开菜单,选择“Add As Library...”将填加到工程内的jar文件链接到工程里

3. 成功后静态库文件前会出现一个三角形的图标,我们还可以通过修改build.gradle文件修改引用的库文件。

3 添加资源到工程

1. 在res目录上右键打开菜单,点击“Show in Explorer”打开res文件所在的目录

2. 删除目录下已有的目录,拷贝SDK/res目录下的全部目录到工程的res目录下

3. 选择project,在app->src->main目录下添加assets目录

4. 拷贝SDK/assets/目录下的data目录和res目录到工程的目录下

注意 fonts文件夹及其中的字体文件是供app中页面窗口标题栏控件左侧返回按钮使用的。

4 修改原生工程的Androidmanifest.xml文件

打开工程的AndroidManifest.xml文件

在AndroidManifest.XML文件中添加配置

1 修改application节点下

1 修改android:icon属性值为@drawable/icon
2 删除android:theme属性
3 删除allowBackup属性
4 添加android:largeHeap="true"
5 添加 android:name="io.dcloud.application.DCloudApplication"
6 添加android:allowClearUserData="true"

    <application  
        android:allowClearUserData="true"  
        android:icon="@drawable/icon"  
        android:label="@string/app_name"  
        android:largeHeap="true"  
        android:name="io.dcloud.application.DCloudApplication" >

2 添加文件支持的屏幕旋转方向

3 添加最低支持系统版本,5+sdk支持的最低系统版本为8,(注意:不要填写targetSDKVersion参数)

4 添加5+SDK必需引用的系统权限

<supports-screens  
    android:anyDensity="true"  
    android:largeScreens="true"  
    android:normalScreens="true"  
    android:resizeable="true"  
    android:smallScreens="true"  
    />  
    <uses-sdk android:maxSdkVersion="8"/>  
    <uses-permission android:name="android.permission.INTERNET"/>  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
    <uses-permission android:name="android.permission.GET_TASKS"/>  
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

5 删除文件中原来配置的Activity

6 添加5 内核需要的Activity和service到AndroidManifest.xml文件

        <activity  
            android:name="io.dcloud.PandoraEntry"  
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"  
            android:label="@string/app_name"  
            android:launchMode="singleTask"  
            android:hardwareAccelerated="true"  
            android:theme="@style/TranslucentTheme"  
            android:screenOrientation="user"  
            android:windowSoftInputMode="adjustResize" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <activity  
            android:name="io.dcloud.PandoraEntryActivity"  
            android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation|mcc|mnc|fontScale"  
            android:hardwareAccelerated="true"  
            android:label="5+Debug"  
            android:launchMode="singleTask"  
            android:screenOrientation="user"  
            android:theme="@style/DCloudTheme"  
            android:windowSoftInputMode="adjustResize" >  
        </activity>  

        <service  
            android:name="io.dcloud.common.adapter.io.MiniServerService"  
            android:exported="true" />

5 修改工程使用的源码

1. 删除创建工程时自动生成的源码。工程中使用5+SDK默认的Activity作为应用的入口Activity,所以如果没有原生开发的需求,则可以删除自动生成的源码文件。

2. 在java目录下添加io.dcloud包



3. 拷贝SDK\src\io\dcloud\Rinfomation.java文件到工程的io.dcloud包下

4. 根据工程的包名修改Rinfomation.java的import资源的包名,

如果需要引入NativeUI.模块需要import io.dcloud.feature.ui.nativeui.NativeUIR;, 并且RInformation类需要implements NativeUIR类

如果需要引入gallery模块(图片选择)需要import io.dcloud.js.gallery.GalleryR;, 并且RInformation类需要implements GalleryR类

6 添加Web应用资源到工程

1. 在assets目录下创建apps/[appid]/www目录,将web应用拷贝到www目录下,【APPID】为Web应用mainfest.json文件id节点的内容。

注意:应用存放的目录是有层级的,目录千万不要命名成apps.[appid].www不要被as的表现迷惑

2. 修改src/main/assets/data/dcloud_control.xml文件,修改app节点的appid属性和appver属性的值。appid属性填写Web应用的mainfest.json文件的ID节点内容,appver属性填写manifest.json文件的version节点下的name节点的内容。


注意:dcloud_control.xml文件配置的appid和应用所在目录和web应用的manifest.json文件的id节点必须一致,否则会导致应用无法启动

7 修改APK桌面显示的图标和Splash图片

将应用的图标(文件名为icon.png)启动图片(文件名为splash.png)按照对应的尺寸拷贝到工程的app->src->main->res -> drawable-XXX目录下:

8 修改APK桌面显示的应用名

打开app->src->res->values->strings.xml文件,修改string节点对应的内容即可修改apk在手机桌面上显示的应用名称

运行时如果提示“打包时未添加XXX模块”,请参考SDK/Feature-Android.xls文件,查找对应插件名需要引入的5+库文件和系统库文件,添加到工程即可

iOS创建最精简离线打包工程
最简工程Androidmanifest.xml文件示例(注意包名需要修改)

12 关注 分享
BoredApe 赵梦欢 Trust lhyh gaohuazi 小虎虎 2***@qq.com 酷呆萌 小尹子 撸三发 MR不靠谱 飞鱼faner

要回复文章请先登录注册

p***@163.com

p***@163.com

回复 骁骑 :
然后我就按照你说的步骤一步一步进行,最后提示我未添加ui模块,实际上我已经添加了,已经导入了ui.jar并添加了依赖,而且在dcloud_properties.xml中给了权限,但是仍然提示未添加ui模块,界面不显示,然后我又用HBuilder中以视图的方式查看manifest.json,我没有看到ui模块,因此我添加了所有的模块,最后运行程序,仍然未添加ui模块,我他妈真是日了狗了!此外,并且我没有找到你说的nineoldandroids-2.4.0.jar这个包,我只看到了my-nineoldandroids-2.4.0.jar, 我不知道还说呢么原因,就不能及时更新一下文档吗?
2017-06-29 11:43
ninaz

ninaz

新的SDK里面没有nineoldandroids-2.4.0.jar, 是不需要了吗
2017-06-27 19:21
1***@qq.com

1***@qq.com

mark
2017-05-07 15:37
骁骑

骁骑 (作者)

回复 p***@163.com :
需要引入的jar列表文档已修改
基础jar包需要引入以下
nineoldandroids-2.4.0.jar
pdr.jar
my-imageloader.jar
ui.jar
2017-04-13 17:55
p***@163.com

p***@163.com

下载的SDK中没有文档里说的必须导入的那几个jar怎么解释。。
2017-04-13 10:08
骁骑

骁骑 (作者)

回复 蛋 :
http://www.dcloud.io/docs/sdk/android/
你可以参考下api的文档,SDK类的下面几个方法可以获取到当前已经打开的窗口的原生对象,
obatinFirstPage(IApp app)
obatinFirstPage(IApp app, IWebviewStateListener listener)
obtainAllIWebview()
obtainAllIWebview(java.lang.String appId)
获取到原生对象后可以通过iWebview类的evaljs方法触发页面里的静态方法,你可以在页面里通过静态方法接收原生层传递的参数,由页面根据传入的参数控制详情页面的显示
2017-03-24 11:34
蛋

楼主,请教个问题:
如何从原生调整到H5的主activity并自动跳转到H5的详情页面,H5的主activyty在studio里面是PandoraEntry,但详情的页面在studio里面没生成activity啊。。如果能有,用标准的原生跳转传入2个intent可以吗?
我现在是当H5的APP正好在详情页面时候,通过原生的跳转到主界面,主界面做处理来再跳转到这个详情页面,此时详情页面不渲染刷新数据呢。

针对原生跳转到H5的非主页面,有啥好办法。特别是H5页面正好处在详情页面,原生又正好要跳转到这里的情况。??
2017-03-23 21:12
fly_sky

fly_sky

打包运行遇到W/System.err: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.secure.service.IAdBlockService }
W/System.err: at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1801)
W/System.err: at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1900)
W/System.err: at android.app.ContextImpl.bindService(ContextImpl.java:1878)
W/System.err: at android.content.ContextWrapper.bindService(ContextWrapper.java:539)
W/System.err: at com.aurora.adblock.AdBlockMain$1.run(AdBlockMain.java:55)
2017-03-16 22:32
骁骑

骁骑 (作者)

回复 蛋 :
看第四章第六小节
2017-02-28 15:13
蛋

回复 骁骑 :
怎么配置5+的activity为启动的activity?
2017-02-28 11:21