can软件android,appcan-android
appcan-android
appcan-android引擎
QQ交流群:173758265
生成引擎包步驟:
新建Android Studio工程Engine_AppCan
clone 引擎代碼到工程Engine_AppCan
git clone https://github.com/AppCanOpenSource/appcan-android.git
編輯工程根目錄下的settings.gradle,在下面添加一行:
include ':appcan-android:Engine'
按需修改引擎代碼
編輯appcan-android/en_baseEngineProject/androidEngine.xml里面的description信息,其他的不要改動
在Android Studio自帶的Terminal輸入
gradle buildEngine
編譯完成后,生成的引擎包在appcan-android/Engine/build/outputs/engine目錄下
目錄結構
├── Engine
│?? ├── Engine.iml
│?? ├── build
│?? ├── build.gradle
│?? ├── libs 公用lib
│?? ├── proguard.pro 混淆文件
│?? ├── project.properties
│?? └── src
├── LICENSE
├── README.md
├── appcan-android.iml
├── en_baseEngineProject
│?? ├── WebkitCorePalm
│?? └── androidEngine.xml
└── gradle-plugin
└── appcan-build-engine.jar
Engine:引擎工程,該工程的最終作用就是生成引擎的jar
當有除了java代碼之外的改動,如添加圖片資源,添加或修改布局文件,都需要同步改動到WebkitCorePalm(重要)
en_baseEngineProject/WebkitCorePalm:最終打包使用的工程,除了上面說的需要從Engine工程同步的內容,其他信息不要改動,
Engine/build:目錄結構如下
├── appcan
│?? ├── crosswalk
│ ├── x5
│?? └── system
├── generated
├── intermediates
├── outputs
│?? ├── engine
│?? ├── jar
│?? ├── aar
│?? ├── logs
│?? └── mapping
└── tmp
appcan:生成引擎時產生的臨時文件
outputs/engine:引擎輸出目錄
outputs/jar:Enginemoudle編譯出來的jar,以-un-proguard.jar結尾的為未混淆的jar,其他為混淆過的jar
outputs/aar:Enginemodule生成的aar
關于混淆
混淆文件為:appcan-android/Engine/proguard.pro
混淆只用于混淆Engine中的java文件 排除混淆
排除混淆
提供給JS調用的接口,請在方法添加@AppCanAPI注解,混淆時會排除
提供給插件調用或不希望被混淆的,請添加@Keep注解,混淆時會排除
AppCan Gradle插件
一般情況下生成引擎只需要調用gradle buildEngine 就可以生成所有的引擎包,如果有其他需要可以調用其他的task。目前提供的task有:
build{Flavor}Engine:生成對應flavor的引擎
如輸出crosswalk引擎
gradle buildCrosswalkEngine
輸出所有flavor的引擎
gradle buildEngine
build{Flavor}JarTemp:生成對應flavor的jar,不進行混淆
如輸出crosswalk引擎的jar
gradle buildCrosswalkJarTemp
如果要輸出所有flavor的jar
gradle buildJarTemp
build{Flavor}Jar:生成對應flavor的jar,并且進行混淆
如輸出混淆過的crosswalk引擎jar
gradle buildCrosswalkJar
如果要輸出所有flavor的jar
gradle buildJar
build{Flavor}Aar:生成對應flavor的aar
如輸出混淆過的System引擎aar
gradle buildSystemAar
如果要輸出所有flavor的aar
gradle buildAar
說明:生成aar需要將Engine目錄下的build.gradle文件中的
apply plugin: 'com.android.applicaiton'
替換成
apply plugin: 'com.android.library'
并注釋掉
applicationId 'org.zywx.wbpalmstar.widgetone.uex'
已經適配到AndroidStudio3.5.0開發環境
?
后續更高的gradle版本,升級原理相同,本文檔更新不及時的話,開發者可以自行更新工程配置。但是gradle版本更新過高可能會導致引擎出包腳本使用的gradle插件不兼容,需要等待后續進行適配。目前經過完整測試的是可以適配到3.5.0。
在3.5.0遇到Gradle插件和腳本運行出錯,是因為工程中的AppCanGradle插件未做高版本的適配。有兩種方式解決:
1. 降級gradle
目前,本工程的默認配置為適配AS3.5.0,Gradle版本為5.4.1,AndroidGradle構建插件版本為3.5.0。如果開發者沒有升級AndroidStudio,按照以下操作降級:
修改Engine/gradle/wrapper/gradle-wrapper.properties,其中版本改為4.1;
修改build.gradle中的classpath 'org.appcan.gradle.plugins:appcan-gradle-plugin:2.3.1',其中2.3.1修改為2.2.4。
經過以上操作后,理論上可以編譯通過。不過還是建議升級AS。
2. 依賴新版AppCanGradle插件
修改Engine/gradle/wrapper/gradle-wrapper.properties,其中版本改為5.4.1;
修改Engine/build.gradle文件中。其中,repositories增加一個github的maven庫,dependencies中將原來的依賴本地的gradle插件改為依賴線上的,版本目前是2.3.1,可以在此倉庫關注更新 https://github.com/android-plugin/mvn-repo。修改部分參考下面:
buildscript {
repositories {
google()
jcenter()
maven {
url 'https://raw.githubusercontent.com/android-plugin/mvn-repo/master/'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
// classpath fileTree(dir: '../gradle-plugin', include: '*.jar')
classpath 'org.appcan.gradle.plugins:appcan-gradle-plugin:2.3.1'
}
}
dependencies中com.android.tools.build:gradle設置為3.0.1或更高版本之后,需要在所有的repositories中增加google(),否則會找不到Android新版的官方gradle相關插件庫而報錯;
若buildToolsVersion改為26或更高后,還會要求修改flavor的定義,如下修改即可:
//聲明flavorDimension
flavorDimensions "kernel"
productFlavors {
crosswalk {
dimension "kernel"
}
system {
dimension "kernel"
}
x5 {
dimension "kernel"
}
}
插件開發gradle依賴引擎配置
repositories中增加下面的maven地址:
repositories {
maven {
url 'https://raw.githubusercontent.com/android-plugin/mvn-repo/master/'
}
}
dependencies中增加依賴包。其中,版本號+號是指隨便獲取一個版本(不一定是最新版本)。如果要指定版本號,可以將+號改為4.0.0,或4.3.21等等。未來還會有更多版本。
dependencies {
implementation 'org.appcan:engine:+:systemRelease@aar'//依賴遠程引擎
}
總結
以上是生活随笔為你收集整理的can软件android,appcan-android的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个半成小作品-短信伪造
- 下一篇: emoji unicode java_4