参考:http://ask.dcloud.net.cn/article/38
环境说明:
AndroidStudio2.2.3 win10 JDK8
下载dcloud的离线SDK:http://ask.dcloud.net.cn/article/103
方法1
下面主要是说明AndroidStudio打包。
下载dcloud离线包之后,打开HBuilder-Hello文件夹,添加build.gradle文件,使用记事本编辑文件,添加下面的内容。
/*类似工程的buildScript,现在只不过放在一个文件里面,可理解为把module当工程用*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.+'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
/*默认配置*/
defaultConfig {
applicationId "com.xxxx.xxxx"
minSdkVersion 11
targetSdkVersion 20
versionCode 1
versionName "1.0.0"
/*manifestPlaceholders = [
APPID : "com.xxx.xxx",//包名
WX_APPID : "wxaaaaaaaaaaaaaaaaa",//微信分享-登录 appid
WX_APPSECRET: "----------------",//微信分享-登录 appsecurity
WX_APPID_PAY: "-----------------",//微信支付 appid
app_icon : "@drawable/icon"
]
*/
}
lintOptions {
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
/*source文件目录设置*/
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
instrumentTest.setRoot('tests')
//debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
/*签名配置*/
signingConfigs {
myConfig {
//绝对路径和相对路径都可以
storeFile file("./keystore/xxxx.keystore")
storePassword "xxx"
keyAlias "xxx"
keyPassword "xxxx"
}
}
buildTypes {
debug {
}
release {
//1.添加签名
signingConfig signingConfigs.myConfig
//2.runProguard 执行混淆代码
// runProguard false
//混淆规则文件
// proguardFile 'proguard.cfg'
/*编译的文件配置--debug时由于时间函数会导致名称不同,出现安装失败*/
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//文件名
//def fileName = "app_${releaseTime()}_" + variant.productFlavors[0].name + ".apk"
def fileName = "app_" + variant.productFlavors[0].name + ".apk"
//output.outputFile = new File(outputFile.parent, fileName)
output.outputFile = new File(filePosition(), fileName)//文件输出目录
}
}
}
}
}
/*多渠道配置*/
productFlavors {
xxxx { manifestPlaceholders = [CHANNEL_TOKEN: "B36885933BF342F29A4BE21A1FFCB18B"] }
}
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
}
dependencies {/*使用的类库*/
compile fileTree(dir: 'libs', include: '*.jar')
}
static def releaseTime() {/*函数,用来获取当前时间*/
return new Date().format("yyyy-MM-dd_HH", TimeZone.getTimeZone("GMT+8"))
}
def filePosition() {/*文件存放路径*/
return "G:\\outAPK\\xxxx"
}
然后直接使用AndroidStudio打开这个工程。即“Open an existing Android Studio project”,然后选中hbuild-hello这个文件夹就OK了。编译过程中可能会提示gradle版本不同的问题,点击fix就好,最后会提示gradle版本过低,点击“don’t mind me …”那个按钮。
方法2
当然你也可以使用AndroidStudio直接打开demo:
选择:G:\A_kaifa\dcloud\lx_01_demo\Android-SDK\HBuilder-Hello(路径自己选择)
打开之后会看到一些错误信息,这是因为有些JAR包没有导入进来,看dependencies 这个节点里面。support-v4的jar包会被替换为compile 网络上的v4包,而不是当前的V4 jar包。所以把jar包拷贝到lib里面,再build.gradle删除compile “support-v4” 的字段,添加 compile fileTree(dir: ‘libs’, include: [‘*.jar’]) 这一句,删除compile file(……..jar)这样的内容。
第2种方法更简单。
方法3
先使用eclipse导出gradle项目,然后再用as打开,也就是与第一种做法一样。
总结:
这里只说明如何打开这个项目,至于用哪个工具,自己用着顺手就好,命令行也能编译,不用在意这些细节,哈哈哈。
可能会遇到的问题:
第一种方法可能会提示你gradle版本过低的问题,这个可以忽略掉,不用管。
如果编译提示demo里面的manifest文件有错误,(可能是小米推送配置那里),注释掉再编译,或者随便改为别的文字。
第二种方法splash界面可能会没有,只是转圈,(可能是配置问题,我也不清楚),这个不知道什么原因。
如果第二种不成功就用第一种。
因为gradle下载的原因,可能会导致编译失败,最好搞个VPN。
写的比较简单,仅供参考。
至于自己打包配置,看离线打包教程就可以了,上面讲解了详细要修改的位置。
因为涉及到多渠道打包的方式,如果要改包名,又改配置,又改assets里面的部分文件。
1.可以把dcloud 的离线sdk改成library工程,然后再新建工程打包。
2.新建一个library工程,把需要修改的文件剪切到library工程的相同目录下面。
建议使用1。