chaquopy集成django并打包到apk中问题

时间:2024-12-07 18:56:23

我通过以下配置将python对应配置到Android studio中,并通过打包,但是无法启动django,麻烦有经验的大佬帮忙看看,谢谢。

以下是myapplication.java:

package com.example.rs232;

import android.app.Application;
import android.util.Log;

import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;

import io.dcloud.application.DCloudApplication;


public class MyApplication extends DCloudApplication {

    private static Application myApplication;

    @Override
    public void onCreate() {
        super.onCreate();
        myApplication = this;
        Log.d("APPTag","myapplication is starting");
        // 初始化 Python 环境
        if (!Python.isStarted()) {
            Log.d("pythonTAG","python is starting");
            // 启动 Django 服务

            Python.start(new AndroidPlatform(this)); // 初始化 Chaquopy
            startDjangoServer();
        }


    }

    public static Application getInstance() {
        return myApplication;
    }

    // 启动 Django 服务
    private void startDjangoServer() {
        try {
            Log.d("djangoTAG","django is starting");
            Python py = Python.getInstance();


            PyObject djangoScript = py.getModule("rs232con.start_django"); // 对应 run_django.py 文件
            djangoScript.callAttr("run_django");
        } catch (Exception e) {
            Log.d("djangoErrorTAG","django is error");
            Log.d("djangoErrormsg",e.toString());
            e.printStackTrace(); // 打印错误日志
        }
    }
}

以下是Android studio :

apply plugin: 'com.android.application'
apply plugin: 'com.chaquo.python'

android {
    compileSdkVersion 30
    buildToolsVersion '30.0.3'
    defaultConfig {
        applicationId "com.example.rs232"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }
        python {
            // 指定python路径 注意更换为自己的Python路径!!
            buildPython "D:\\Program Files\\Python38\\python.exe"
            //安装第三方库
            pip{
                install "django==4.2.15"
                install "pyserial"
            }

        }
        sourceSets{
            main{
//                python.resources 'src/main/python'

//                    setRoot "src/main"
                assets.srcDirs = ["src/main/assets/rs232con"]
//                python.include "src/main/python"
            }
        }
//        source{
//            main{
//                // 设置源代码根目录为 python 文件夹
                setRoot 'src/main' // 如果 python 文件夹在 src/main 下
                srcDirs = ['']
//                python.srcDirs  'src/main/python' // 指定 python 文件夹路径
//            }
//        }

    }

    // 自定义打包名称
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "rs232con.apk"
        }
    }

    signingConfigs {
        config {
            keyAlias 'key0'
            keyPassword '123456'
            storeFile file('test.jks')
            storePassword '123456'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    aaptOptions {
        additionalParameters '--auto-add-overlay'
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
    implementation 'androidx.core:core:1.1.0'
    implementation "androidx.fragment:fragment:1.1.0"
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'com.facebook.fresco:fresco:2.5.0'
    implementation "com.facebook.fresco:animated-gif:2.5.0"
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.alibaba:fastjson:1.2.83'
    implementation 'androidx.webkit:webkit:1.3.0'


}
但是打包后的apk我解压后还是无法找到对应的打包django项目文件,不知道是不是哪里配置不对?