Android Studio Android应用程序从远程mysql数据库下载空数据

8zzbczxx  于 2023-03-03  发布在  Android
关注(0)|答案(1)|浏览(142)

我是安卓世界的新手,最近遇到了一个很奇怪的问题,所以想和大家分享一下。如果你知道解决方法,请指导我。
我已经在远程Azure VM中安装并配置了wampserver(mysql、php、apache),并且我已经打开了所有端口进行访问。请参见入站和出站访问的图片。

现在的问题是:当我通过android studio和数据线在手机上安装应用程序(调试模式)时,它可以从远程mysql数据库插入和获取/下载数据(通过所有php API脚本)......这意味着我的应用程序、php代码、azure vm设置和访问都没有问题。
但是当我在playstore发布了相同的应用程序,从那里下载并安装在我的同一个移动的上,那么它就不能获取数据,但是它只能插入数据到相同的mysql数据库中,而获取所有的php-api都只返回空值,因为我所有的回收视图都显示在手机上,但没有数据。
在许可证或清单文件中,我应该注意什么?如果你知道答案,请让我知道。非常感谢你提前所有。
仅供参考,清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:preserveLegacyExternalStorage="true"
    android:requestLegacyExternalStorage="true"
    android:roundIcon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:usesCleartextTraffic="true"
    tools:targetApi="31">

构建.gradle文件:

plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}

android {
    namespace 'com.project.localshop'
    compileSdk 33

    defaultConfig {
        applicationId "com.project.localshop"
        minSdk 21
        targetSdk 33
        versionCode 5
        versionName "3.2.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildFeatures {
        viewBinding true
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.annotation:annotation:1.5.0'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
    implementation 'com.google.firebase:firebase-auth:21.1.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    implementation 'androidx.cardview:cardview:1.0.0'

    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.github.bumptech.glide:glide:4.14.2'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'com.github.smarteist:autoimageslider:1.4.0'
    implementation 'com.etebarian:meow-bottom-navigation-java:1.2.0'

    implementation "androidx.viewpager2:viewpager2:1.0.0"
    implementation "com.google.code.gson:gson:2.8.6"
    implementation 'com.google.android.material:material:1.9.0-alpha01'

    implementation 'com.karumi:dexter:6.2.3'
    implementation 'com.google.android.gms:play-services-maps:18.1.0'
    implementation 'com.google.android.gms:play-services-location:21.0.1'

    implementation 'com.makeramen:roundedimageview:2.3.0'

    implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    //noinspection GradleCompatible
    implementation 'com.android.support:design:27.1.0'

    implementation "com.airbnb.android:lottie:5.2.0"
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation 'com.sothree.slidinguppanel:library:3.4.0'
    implementation 'com.android.volley:volley:1.2.1'
    implementation 'androidx.browser:browser:1.5.0'
    //implementation 'com.cashfree.pg:android-sdk:1.7.28'

    implementation platform('com.google.firebase:firebase-bom:31.2.2')
    implementation 'com.google.firebase:firebase-analytics'
}
zte4gxcn

zte4gxcn1#

经过长时间的搜索,我得到了答案。问题出在build.gradle文件中的minifyEnabled = true选项。将其设置为false,这样Android就不会混淆代码,列名称,然后将其发送到数据库。但再次使其为false不利于应用程序,因为其他人可以解码并从谷歌playstore看到您的代码。这就是为什么使minifyEnabled = true,并使用适当的R8技术,添加@在代码函数中保留关键字。
有关详细信息,请观看此视频:
https://www.youtube.com/watch?v=bgpyuuzMlo0

相关问题