找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 264|回复: 3

[教程] 一个Renpy安卓打包游戏通过安卓平台审核方案

  [复制链接]
发表于 2025-7-25 19:10:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 blurred 于 2025-8-1 11:55 编辑

前言:
1.本方案由我和清奕云時想出,实现,以及测试
2.本方案在Ren'py-8.3.7能够实现效果,如果使用,请注意引擎版本
3.涉及到修改引擎的代码,所以请在事前把引擎目录下的rapt相关文件备份
4.知道怎么写html
5.这个方法有部分缺陷,看文尾。
压缩包https://www.renpy.cn/forum.php?mod=attachment&aid=MTY1MHw3M2QzN2M3OHwxNzU0MDg1NTkzfDB8
按照压缩包里面的说明很详细,直接改就行了


目前在一个gal已经通过qɐꓕ审核
方法思路以及部分代码解释:

ren打包的安装包有一个特性,它不会要求额外权限(除了安装软件的储存权限),但是会在安装包启动的时候开始调用传感器,而部分安装包发布平台并不允许这样子,需要在权限申请或者隐私政策弹出一个窗口,窗口包含调用权限说明以及各种条例,用户同意后方可调用,这是大部分renpy引擎的apk被卡住审核的原因。
那么就是说renpy的传感器调用是在renpy引擎开始活动后,
所以我们可以在renpy的活动之前写一个活动,让允许在这个新的活动之前弹出我们要的所有东西,而在这个活动中,传感器并没有被调用。
renpy的安装包活动顺序有关文件在renpy引擎的rapt下的templates里面的app-AndroidManifest.xml中,这一部分就是写了renpy引擎的活动

在这里面的这一部分就是引擎活动
[RenPy] 纯文本查看 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="{{ config.package }}">

  <application
...省略

    <activity
        android:name="org.renpy.android.PythonSDLActivity"
        android:label="@string/iconName"
        android:alwaysRetainTaskState="true"
        android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
        android:launchMode="singleTop"
        android:screenOrientation="{{ config.orientation }}">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <receiver android:name="com.amazon.device.iap.ResponseReceiver"
      android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY">
      <intent-filter>
...省略

这个文件的改动是:
这里加入就禁用了rnepy调用权限,其实不加也行,没有问题
[RenPy] 纯文本查看 复制代码
    <!-- 权限设置 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 这里加入了各种传感器权限的取消申请 -->
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.light" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.proximity" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.compass" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.barometer" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="false"/>
    <uses-feature android:name="android.hardware.sensor.stepdetector" android:required="false"/>
    

加入新的活动
[RenPy] 纯文本查看 复制代码
 <application
            android:label="@string/app_name"
            android:icon="@drawable/android_icon"
            android:hasCode="true"
            android:allowBackup="false"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <!-- 启动页设为 MainActivity -->
        <activity
                android:name="org.renpy.android.MainActivity"
                android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 游戏核心逻辑 Activity -->
        <activity
                android:name="org.renpy.android.PythonSDLActivity"
                android:label="@string/iconName"
                android:alwaysRetainTaskState="true"
                android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
                android:launchMode="singleTop"
                android:screenOrientation="landscape"
                android:exported="true" />
    </application>

这个新活动其实就是把一个java的界面显示出来,java界面里面又有一个html的引用,这个html就是自己写的隐私政策和其他条款什么的
缺点:(高情商:给后面的人优化空间;低情商:我太菜了,不会改
1.这个方案由于重新写了一个活动,所以在项目里面自己规定的安卓打包图标是不生效的(被顶替了),需要修改图标则要到drawable里面改
2.由于改的是引擎的内容,所以对于有多项目的来说,可能不同游戏的隐私政策不同,所以要多次写不同的html文件,或者在引用中多次改文件名字,很麻烦
3.这个隐私政策的窗口弹出是竖屏,其实没有多大影响,但横屏似乎效果更好。

评分

参与人数 2活力 +600 干货 +6 收起 理由
blackpineapple + 300 + 3 感谢分享
被诅咒的章鱼 + 300 + 3 感谢分享!

查看全部评分

发表于 前天 11:20 | 显示全部楼层
感谢LZ提供这个解决方案,试验了一下。发现如果完全不改build.gradle,会获得一个报错。
这个报错是:package androidx.appcompat.app does not exist

修改的办法是,在renpyandroid里的build.gradle 增加下面的代码
dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1' // 使用最新版本
    implementation 'com.google.android.material:material:1.9.0' // 通常也需要
}

目前顺利打包,等审核。
回复 支持 1 抱歉 0

使用道具 举报

发表于 2025-7-25 19:21:59 | 显示全部楼层
前排留眼,厉害
回复 支持 1 抱歉 0

使用道具 举报

 楼主| 发表于 前天 22:20 来自手机 | 显示全部楼层
blackpineapple 发表于 2025-7-31 11:20
感谢LZ提供这个解决方案,试验了一下。发现如果完全不改build.gradle,会获得一个报错。
这个报错是:packa ...

软件包不存在的报错吗?这个报错我这边测试没遇到过,这个报错如果是按照压缩包里面的build改也会出现吗
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2025-8-2 05:59 , Processed in 0.069020 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表