quick cocos2dx-lua: 項(xiàng)目android打包

之前成功過(guò). 現(xiàn)在自己新項(xiàng)目要打包, 又忘記了. 為了下次再打包方便一些, 特此記錄.
目錄:

(項(xiàng)目根目錄: [projectDir])
---|
   |--myPack.bat
   |--encryptSrc.py
   |--copyApkDirHere.py

(proj.android根目錄: [projectDir]/frameworks/runtime-src/proj.android/)
---|
   |--build.gradle
  1. 打包腳本([projectDir]/myPack.bat)
@echo off
python encryptSrc.py
cd frameworks\runtime-src\proj.android
python build_native.py
python build_native.py -a arm64-v8a
call .\gradlew.bat assembleRelease --warning-mode=all

cd ../../../
python copyApkDirHere.py
pause
  1. lua代碼加密文件([projectDir]/encryptSrc.py)
import os
import shutil
import platform

print "====> Clear source path\n"
sourcePath = "." + os.sep + "frameworks" + os.sep + "runtime-src" + os.sep +"proj.android" + os.sep+ "app" + os.sep + "build" + os.sep + "outputs" + os.sep + "apk" + os.sep + "release"
if os.path.exists(sourcePath):
   shutil.rmtree(sourcePath)
  1. 復(fù)制apk文件到根目錄腳本([projectDir]/copyApkDirHere.py)
import os
import shutil
print("start copy apks....")
desPath = "." + os.sep + "apk"
sourcePath = "." + os.sep + "frameworks" + os.sep + "runtime-src" + os.sep +"proj.android" + os.sep+ "app" + os.sep + "build" + os.sep + "outputs" + os.sep + "apk" + os.sep + "release"
if os.path.exists(desPath):
   shutil.rmtree(desPath)

#os.makedirs(desPath)
if os.path.exists(sourcePath):
    print("copytree")
    print(sourcePath)
    print(desPath)
    shutil.copytree(sourcePath, desPath + os.sep)

print("copy apks success!")
  1. 生成jks文件
Build -> Generate Signed Bundle / Apk
勾選Apk -> Next -> 填寫(xiě)jks -> Next
[重要]勾選V1(Jar Signature) -> Finish
  1. android項(xiàng)目 app的build.gradle
apply plugin: 'com.android.application'
android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    signingConfigs {
        config {
            keyAlias 'key0'
            keyPassword '123456'
            storeFile file('D:/source/myproject/jube/keystore/jube.jks')
            storePassword '123456'
        }
    }

    defaultConfig {
        applicationId "com.vector.jube"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        ndk {
            abiFilters "arm64-v8a"
            abiFilters "armeabi-v7a"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            signingConfig signingConfigs.config
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            // variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "")
            outputFileName = "${defaultConfig.applicationId}_${defaultConfig.versionName}_${releaseTime()}.apk"
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}


static def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(':libcocos2dx')
}

build cocos2dx
在proj.android根目錄: [projectDir]/frameworks/runtime-src/proj.android/

--32位
python build_native.py
--64位
python build_native.py -a arm64-v8a

(完)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容