<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>上架审核归档 - 日志</title>
	<atom:link href="https://www.log.show/tag/%E4%B8%8A%E6%9E%B6%E5%AE%A1%E6%A0%B8/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.log.show/tag/上架审核/</link>
	<description>LOG.SHOW</description>
	<lastBuildDate>Fri, 19 Dec 2025 05:59:59 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.log.show/wp-content/uploads/2025/11/cropped-logo-32x32.png</url>
	<title>上架审核归档 - 日志</title>
	<link>https://www.log.show/tag/上架审核/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Android开发中屏蔽第三方库的权限</title>
		<link>https://www.log.show/log/android-prerelease-permission-check/</link>
					<comments>https://www.log.show/log/android-prerelease-permission-check/#respond</comments>
		
		<dc:creator><![CDATA[LOGGER]]></dc:creator>
		<pubDate>Fri, 19 Dec 2025 05:55:33 +0000</pubDate>
				<category><![CDATA[LOG]]></category>
		<category><![CDATA[AndroidManifest]]></category>
		<category><![CDATA[Android开发]]></category>
		<category><![CDATA[APK反编译]]></category>
		<category><![CDATA[BOOT_COMPLETED]]></category>
		<category><![CDATA[tools:node="remove"]]></category>
		<category><![CDATA[TrueTime]]></category>
		<category><![CDATA[上架审核]]></category>
		<category><![CDATA[权限屏蔽]]></category>
		<category><![CDATA[第三方库权限]]></category>
		<category><![CDATA[自启动权限]]></category>
		<guid isPermaLink="false">https://log.show/?p=474</guid>

					<description><![CDATA[<p>下面是实际应用中的例子。 因为需要准确时间，所以导入了TrueTime的第三方库，而这个库会声明一个自启动权限 [&#8230;]</p>
<p><a href="https://www.log.show/log/android-prerelease-permission-check/">Android开发中屏蔽第三方库的权限</a>最先出现在<a href="https://www.log.show">日志</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">下面是实际应用中的例子。</p>



<p class="wp-block-paragraph">因为需要准确时间，所以导入了TrueTime的第三方库，而这个库会声明一个自启动权限<code>BOOT_COMPLETED</code>，来自于<code>AndroidManifest.xml: com.instacart.library.truetime.BootCompletedBroadcastReceiver</code></p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="i3xWcqJdHW"><a href="https://log.show/log/use-ntp-server-time-on-mobile-device/">在移动设备上使用准确的时间</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="《 在移动设备上使用准确的时间 》—日志" src="https://log.show/log/use-ntp-server-time-on-mobile-device/embed/#?secret=lNXmZW7TWu#?secret=i3xWcqJdHW" data-secret="i3xWcqJdHW" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph">第一次看到我没在意，我删除了自己APP中的这个权限。</p>



<p class="wp-block-paragraph">再次被上架驳回后我发现这是第三方库的权限。在解决这个问题之前，或者说我们上架之前是需要先自查的，下面是自查方案：</p>



<ol class="wp-block-list">
<li>使用apktool反编译后查看打包之后的<code>AndroidManifest.xml</code>文件内是否存在敏感权限</li>
</ol>



<pre class="wp-block-code"><code># 反编译APK到指定目录
apktool d your_app.apk -o apk_decompile

# 查看合并后的AndroidManifest.xml
cat apk_decompile/AndroidManifest.xml | grep -i "BOOT_COMPLETED"</code></pre>



<ol start="2" class="wp-block-list">
<li>在源码中排除第三方库的该声明</li>
</ol>



<pre class="wp-block-code"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  &lt;!-- 必须添加这个命名空间 --&gt;
    package="com.your.package.name"&gt;

    &lt;!-- 1. 移除开机自启权限（如果有的话） --&gt;
    &lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" 
                     tools:node="remove"/&gt;

    &lt;application&gt;

    &lt;/application&gt;

&lt;/manifest&gt;</code></pre>



<ol start="3" class="wp-block-list">
<li>Gradle 构建时排查依赖</li>
</ol>



<pre class="wp-block-code"><code># 查看所有依赖（Android项目）
./gradlew app:dependencies --configuration releaseRuntimeClasspath

# 结合grep筛选（Mac/Linux）
./gradlew app:dependencies | grep -i "boot"</code></pre>



<ol start="4" class="wp-block-list">
<li>我使用的方案，也是最简单的方案：使用jadx反编译后查看配置文件中的权限</li>
</ol>



<h2 class="wp-block-heading">下面是解决这个问题的方案：</h2>



<h3 class="wp-block-heading">1. 删除第三方库</h3>



<p class="wp-block-paragraph">简单见效快</p>



<h3 class="wp-block-heading">2. 移出权限</h3>



<pre class="wp-block-code"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  &lt;!-- 必须添加这个命名空间 --&gt;
    package="com.miaoyuyin.miao"&gt;

    &lt;!-- 保留你原有所有配置，仅添加以下移除声明 --&gt;

    &lt;!-- 1. 移除开机自启权限（如果第三方库声明了） --&gt;
    &lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" 
                     tools:node="remove"/&gt;

    &lt;application
        &lt;!-- 保留你原有所有application属性和子组件 --&gt;
        &gt;

        &lt;!-- 2. 精准移除TrueTime库的开机广播接收器 --&gt;
        &lt;receiver
            android:name="com.instacart.library.truetime.BootCompletedBroadcastReceiver"
            tools:node="remove" /&gt;

        &lt;!-- 你原有所有Activity/Service/Provider等组件 --&gt;

    &lt;/application&gt;
&lt;/manifest&gt;</code></pre>



<p class="wp-block-paragraph">在修改之后，再次提交之前，你可以使用上面的自查方案再次验证是否已经修改完善！</p>
<p><a href="https://www.log.show/log/android-prerelease-permission-check/">Android开发中屏蔽第三方库的权限</a>最先出现在<a href="https://www.log.show">日志</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.log.show/log/android-prerelease-permission-check/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
