Android Studio:此文件不是项目的一部分,但项目构建成功

时间:2019-04-24 09:04:57

标签: android-studio

我有一个奇怪的问题,突然出现在android studio中。我创建了一个新的cpp文件,并将其包含在Android.mk中。然后,我同步了项目。但是,android studio仍然抱怨该文件不是项目的一部分,我需要同步,但整个项目都可以成功构建。

同样,如果我从Android.mk中删除了它没有抱怨的其他较旧的文件之一,并且重新同步,然后尝试构建项目,正如预期的那样,构建失败,但是android studio并不抱怨该文件不再是该项目的一部分。

因此,突然之间,Android Studio编辑器无法正确识别哪些文件已同步并且是项目的一部分,但是在编译过程中,所有操作均按预期进行。

有人知道如何解决这个烦人的问题吗?我尝试过清理项目,使缓存/重启无效,以及更新Android Studio时没有出现运气(AS版本3.4)。

6 个答案:

答案 0 :(得分:1)

我有类似的问题。像你一样,我已经尝试了一切。

  • 无效并重新启动:不起作用
  • 手动删除文件夹:.gradle .idea .ndkbuild等不起作用
  • 清理,重建,链接C ++文件:不起作用

可以帮助我的一件事是:我更改了NDK版本。我进行了编译,然后出现了编译错误(没关系,因为它毕竟是NDK的错误版本),然后我恢复了原始的NDK。看来可以解决问题,但是又回来了。

我的解决方案是将Android Studio重置为出厂设置。如果您使用的是Linux,则可以先删除以下文件夹:

rm -rf ~/.android

rm -rf ~/.AndroidStudio3.4

然后,您下载并运行Android Studio,而不从任何地方导入任何内容。

我怀疑问题是由我安装的其中一个插件引起的。

最好不时备份这两个文件夹,并在必要时从那里重新加载它们。

编辑:在添加更多.cpp文件后,上述解决方案后,我的问题似乎仍然存在。看到之后,我搜索了弹出窗口的来源。因此,从ndk-build推送了“此文件不是项目的一部分...”弹出窗口。 (类名称:NewCppSourceNotificationProvider-StaleCppProjectNotificationPanel)。我尝试过的,到目前为止有效的;我将Android Studio 3.5 Canary13与NDK版本r19c(稳定版)一起使用。希望对您有帮助。

答案 1 :(得分:1)

问题环境

  • export class AssignmentsPage implements OnInit { // assignments: any[]; // assignments$: Observable<Assignments[]>; assignments: any[]; agentid: any; agent: Agents; size: number; constructor(private route: ActivatedRoute, private router: Router, private toastController: ToastController, private assignServises: DataService, private data: AssignmentsService, private afs: AngularFirestore) { if (localStorage.getItem('isLoggedIn') === null) { this.router.navigateByUrl('/login'); } else { this.agent = JSON.parse(localStorage.getItem('agent')); const id = localStorage.getItem('agent_id'); this.agentid = this.agent.id; console.log('id:' + id + ' of ' + this.agent.lastname ); // this.assignments = data.getAll(); /* this.assignments$ = data.getAssignmentsByAgentId(id). pipe( tap(assignmentz => { if (assignmentz) { console.log('success: ' + assignmentz.length); } else { console.log('noo success: ' + assignmentz.length); } })); */ assignServises.getByColumn('assignments', 'agent_id', id) .subscribe(assgns => { this.assignments = assgns; this.size = assgns.length; console.log('assignmt: ' + assgns.map(assigmnt => assigmnt.status)); }); } }
  • <ion-header> <ion-toolbar> <ion-title>{{agent.lastname}}'s My tasks</ion-title> </ion-toolbar> </ion-header> <ion-content> <ion-badge>{{size}} assignment(s)</ion-badge> <ion-list *ngFor="let assignment of assignments$"> <ion-item> <ion-card> <h3>Since: {{assignment.assigned_when}}</h3> <ion-label>Status: {{assignment.status}} </ion-label> </ion-card> </ion-item> </ion-list>
  • Android Studio 3.5 RC 2

解决方案

更新至:
-gradle-4.10-all
-com.android.tools.build:gradle:3.2.1

步骤

从项目根目录运行(请注意,此操作必须首先完成):

gradle-5.5.1-all

在根com.android.tools.build:gradle:3.4.2文件中:

./gradlew wrapper --gradle-version 5.5.1 --distribution-type all

答案 2 :(得分:1)

Android Studio 4.0.1和当前的最新gradle(6.1.1?)存在相同的问题。我退出Android Studio并删除项目主目录中的.gradle和.idea文件夹,再删除了.cxx和受影响的模块目录中的build目录后,问题消失了。我不确定哪个真正有用,但是很可能删除.grade和/或.idea

答案 3 :(得分:1)

我使用了 Build > Refresh Linked C++ Projects 菜单并且它起作用了。

Menu Preview in Android Studio

答案 4 :(得分:0)

我有类似的问题,可能是gradle版本和gradle插件版本的兼容性问题,因为我的解决方案正在替换旧配置

// build.gradle
classpath 'com.android.tools.build:gradle:3.2.1'
...
// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

通过将gradle版本从4.6更改为4.10.1,添加了以下新版本。

// build.gradle
classpath 'com.android.tools.build:gradle:3.2.1'
...
// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

之后,Android Studio可以在项目中索引和跟踪我的新cpp文件。

答案 5 :(得分:0)

通过更新我的'com.android.tools.build:gradle'

修复此问题